Xin chào các bạn, khóa học Playwright Javascript Typescript này nhằm hướng dẫn cho những bạn ĐÃ BIẾT CODE JAVASCRIPT TYPESCRIPT đi từng bước từ cơ bản đến nâng cao phần automation với Playwright. Khoá học này dùng để kiểm thử tự động cho Website và API, rất thích hợp dành cho người mới bắt đầu làm auto test. ...
✅Tất cả nội dung và chất lượng khoá học được kiểm duyệt bởi Anh Tester.
🛠️ Hướng dẫn cài đặt môi trường
🚀 Khởi tạo dự án Playwright
📊 Chạy test và xem báo cáo
🔬 Phân tích sâu về page object
🏗️ Phần 1: Nền tảng - Cấu trúc một File Test Chuyên nghiệp
🚀 Phần 2: Tăng tốc - Sử dụng Playwright Codegen
✅ Nền tảng & Triết lý:
✅ Làm chủ Locator Hướng tới Người dùng
✅ Nắm vững Chiến lược Dự phòng:
✅ Sử dụng Locator Kỹ thuật (CSS & XPath)
✅ Khai phá Sức mạnh Quan hệ của Playwright
🛡️ Tin tưởng Auto-Waiting trên Hành Động (Actions)
🎯 Dùng Web-First Assertions làm "Chốt Chặn An Toàn"
🚀 Làm chủ page.goto() với waitUntil
✅ Kỹ thuật Lấy Dữ liệu: Hiểu rõ và sử dụng hiệu quả .textContent(), .innerText(), .getAttribute(), .inputValue(), .allTextContents(), và xử lý Strict Mode.
✅ Khẳng định Giá trị Tức thời: Nắm vững các expect thông thường (toBe, toEqual, toContain, toHaveLength, objectContaining, arrayContaining) để kiểm tra dữ liệu.
Hiểu rõ 'Actionability' ⏳✅
Từ click() đến dragTo() 🖱️🖐️
Gửi phím tắt hiệu quả ⌨️⚡
☑️ Dùng setChecked() cho checkbox/radio (role=checkbox) và click() cho element "giả".
⬇️ Phân biệt selectOption() (cho ) và click() (cho custom dropdowns).
⚠️ Xử lý alert, confirm của trình duyệt bằng page.on('dialog') (lắng nghe trước).
🖥️ Tương tác với HTML Modals (React/AntD) bằng locator (ví dụ: getByRole('dialog')).
🔄 Dùng page.once để xử lý nhiều dialogs (OK/Cancel) trong cùng một test.
📤 Xử lý upload (kể cả input ẩn) bằng setInputFiles và download bằng waitForEvent.
🖼️ Tương tác với iframe (ví dụ: cổng thanh toán, quảng cáo) bằng page.frameLocator().
🗄️ Tự động "xuyên" Shadow DOM (Open) để tìm element như bình thường.
🔒 Hiểu rõ giới hạn của Shadow DOM (Closed) và khi nào bắt buộc dùng evaluate().
🏞️ Phát hiện ảnh hỏng (404/CORS) bằng evaluate (check naturalWidth) và network response.
🧠 Dùng evaluate() để tối ưu (1 round trip) hoặc đọc thuộc tính "ẩn" (như scrollTop, localStorage).
✅ Tránh evaluate(): Luôn ưu tiên hàm gốc (như textContent(), inputValue()) vì có auto-waiting.
📅 Xử lý Date Picker: Dùng date-fns (như differenceInMonths) để tính toán số lần click trước, thay vì lặp và đọc UI.
📊 Xử lý Table (Bảng): Dùng "Header Map" (Ánh xạ Cột) để chống lỗi (robust) khi thứ tự cột thay đổi.
⚡️ Tối ưu Table: Dùng locator:has-text (lọc hàng) + "Header Map" (lọc cột) để lấy 1 ô (cell) nhanh nhất.
🎯 Chiến lược Assertion Thông minh
✂️ Loại bỏ Phản mẫu "Page Chaining"
💠 Kiến trúc Component Chuyên sâu
⚖️ Làm chủ Nguyên tắc SRP
💎 Xây dựng Framework Bền vững
🛠️ Các "Viên gạch" Nền tảng (Utility Types)
🔑 Phép biến hình dữ liệu (Type Operations)
🏹 Giải mã Cú pháp Hàm (Function Types)
🧠 Tư duy Logic & Trừu tượng (Core Concepts)
🚀 THỰC CHIẾN - Combo "Hủy Diệt" (The Killer Pattern)
🎯 Tư duy "Anti-Fragil
🌍 Chiến thuật "Tắc kè hoa" (Multi-Env):
🏗️ Kiến trúc "Siêu thị" (Scalable Catalog):
🏭 Cỗ máy tùy biến (Factory Logic):
🔗 Kiểm soát luồng chạy Fixture Chaining (Chuỗi phụ thuộc) theo quy tắc ngăn xếp LIFO (Vào trước - Ra sau).
🧩 Chiến lược Module hóa dự án: Chia nhỏ file con và hợp nhất tại index.ts bằng toán tử Spread (...).
🧬 So sánh và ứng dụng hàm mergeTests() để hợp nhất các Test Object độc lập (Fusion vs Mixing).
🏛️ Triển khai Pattern "Gatekeeper" (3 Tầng) để tự động hóa Authentication và quản lý Page Object tập trung.
Thấu hiểu kiến trúc lõi: Phân biệt rõ 4 tầng Browser > Context > Page trong Playwright.
Kỹ thuật Manual Launch: Tự điều khiển trình duyệt (Headless/Headed, SlowMo) để Debug hiệu quả.
Cơ chế Isolation: Cách ly tuyệt đối Cookies & Session giữa các User (như chế độ Ẩn danh).
Thực chiến Đa tài khoản: Code kịch bản Admin chat với Guest song song trên cùng 1 bài test.
Bảo mật & Clean Code: Loại bỏ hoàn toàn Hardcode (URL, Password) bằng hệ thống dotenv-flow. Quản lý biến môi trường theo tầng: Default -> Staging -> Local Secret.
Chuẩn hóa Cross-Platform: Giải quyết triệt để xung đột lệnh giữa Windows (PowerShell) vs Mac/Linux bằng cross-env, đảm bảo script chạy mượt mà trên cả máy cá nhân và CI/CD.
Làm chủ Test Lifecycle: Hiểu sâu về "Tứ trụ" beforeAll, beforeEach, afterEach, afterAll. Biết chính xác khi nào code chạy và phạm vi ảnh hưởng của chúng.
Giải mã cơ chế Worker & Parallel: Phân tích rủi ro Race Condition (Xung đột) khi dùng Hooks trong chế độ chạy song song. Tại sao biến toàn cục (let page) là "kẻ thù" của Automation hiện đại?
📂 Tối ưu hóa "Sân chơi" với testDir & testMatch: Hiểu rõ cơ chế quét file 3 lớp để tăng tốc độ thực thi, cô lập môi trường test và làm chủ cú pháp Glob Pattern chuyên sâu.
🏗️ Chiến lược Phân tầng Project (Inheritance & Overriding): Kỹ thuật sử dụng cơ chế "Bố mẹ - Con cái" để ghi đè cấu hình, giúp tạo ra ma trận kiểm thử đa trình duyệt và thiết bị chỉ với một file config gọn nhẹ.
🛡️ Phá bỏ "Hộp đen" Global Setup: Tại sao nên chuyển từ globalSetup cổ điển sang Project Dependencies để sở hữu báo cáo full HD (Trace Viewer, Video, Screenshot) ngay cả khi khởi tạo lỗi.
⚙️ Làm chủ Running Sequence & State Management: Nắm vững quy luật "Setup chặn cửa - Test chạy đua - Teardown bám đuôi" để điều phối luồng dữ liệu và lưu trữ trạng thái đăng nhập (Storage State) chuẩn xác.
🎒 Phần 1: Tổng quan về TestOptions (use)
🎥 Phần 2: Các chế độ Debug (Modes)
🛡️ Phần 3: Xử lý bảo mật với ignoreHTTPSErrors
👻 Phần 4: Chế độ Headless vs Headed
🚀 Phần 5: Quyền lực khởi động (launchOptions)
🖥️ Phần 6: Giải bài toán Maximize (Window vs Viewport)
📸 Phần 7: Nghệ thuật chụp ảnh (screenshot)
📱 Phần 8: Sức mạnh giả lập thiết bị (devices)
🎒Phần 9: Vị trí lưu trữ (Output directory)
🧠 Phần 1: Giải mã testInfo - "Thư ký hiện trường"
🧬 Phần 2: Nguồn gốc & Vòng đời (Lifecycle)
🗺️ Phần 3: Tư duy Phạm vi (Scope Strategy)
⚔️ Phần 4: Quy tắc Ghi đè (Override Rules)
🏷️ Phần 5: Nghệ thuật sử dụng Tags (@)
🕵️ Phần 1: Giải mã Kiến trúc Đa Tiến Trình (Multi-Process)
🧪 Phần 2: Chiến lược Dữ Liệu & Parameterized Testing
🏭 Phần 3: Cấu hình "Nhà Máy" Test (Workers)
🚀 Phần 4: Chế độ Fully Parallel (Tối ưu tốc độ)
Automation Engineer
Copyright © 2021-2025 Anh Tester Automation Testing