Can Tho, Vietnam

0939206009

thaian.it15@gmail.com

Website Testing Cơ bản Vietnamese

Website and API Testing Automation with Playwright Javascript Typescript (KHÔNG DẠY CODE JS TS) + Ứng dụng AI

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à A

Nguyên Hoàng Giảng viên: Nguyên Hoàng
creator Người tạo: Anh Tester

Tổng quan

🎯Cách học Online:

  • Chuẩn bị ZOOM app để call trực tiếp (có record sau mỗi buổi)
  • Chuẩn bị Mạng ổn định và nơi học không ồn lắm để tương tác trực tiếp
  • Một tuần học 3 buổi và học trong tầm 5-6 tháng (từ không biết gì đến làm được việc)
  • Tài liệu trao đổi nhanh trên Zalo group
  • Sau khi kết thúc khóa học thì An cấp chứng chỉ cho các bạn hoàn thành các yêu cầu của An gồm chuỗi bài học, bài tập và dự án auto test cuối khoá


🎯Thông tin về Anh Tester:

  • Võ Thái An
  • Công việc chính: Software Quality Engineer tại Phamiliar Tech in USA (remote).
  • Kinh nghiệm: hơn 7 năm làm automation test với Selenium, Appium, Katalon, Playwright và các tools khác.
  • SĐT: 0939206009 (phone/facebook/zalo)

Bạn sẽ học được gì

    •  Ứng dụng AI (ChatGPT, Gemini, Antigravity, Claude, Codex, MCP...) vào quá trình học và viết Automation Test hiệu quả
    • Cài đặt, cấu hình môi trường Playwright Test + TypeScript và viết test case đầu tiên, xuất báo cáo HTML tự động
    • Làm chủ Locator hiện đại của Playwright (hướng người dùng), CSS Selector và XPath; lấy Locator tự động bằng Codegen
    • Thành thạo Actions & cơ chế Auto-wait / Actionability: thao tác Form, chuột, bàn phím và chờ phần tử ổn định, triệt tiêu lỗi Flaky
    • Sử dụng Web-First Assertions (tự động retry) và tổ chức test case chuẩn mô hình AAA chuyên nghiệp
    • Xây dựng framework theo Page Object Model (POM) + BasePage: tách biệt nghiệp vụ và kỹ thuật, tái sử dụng code
    • Hiểu kiến trúc phân cấp Browser → Context → Page → Frame và nguyên lý thực thi tối ưu của Playwright so với Selenium
    • Làm chủ Playwright Test Fixtures: Setup/Teardown, chống lặp code (DRY), quản lý test data gọn gàng
    • Xử lý các tình huống thực tế: Multi-tabs, Iframes, Local Storage (token/session), Table động và Dropdown nâng cao
    • Debug chuyên nghiệp với Inspector & Trace Viewer; tăng tốc bằng Parallel Execution và xuất báo cáo Allure
    • Kiểm thử API bằng Playwright (APIRequestContext): GET/POST/PUT/PATCH/DELETE, kiểm tra status, headers, body; nắm vững HTTP Status Code, PUT vs PATCH, 401 vs 403
    • Kết hợp UI + API (setup data bằng API → test UI → cleanup) và tích hợp CI/CD với GitHub Actions

Yêu cầu

  • Cần biết code Javascript Typescript (vì không dạy từ đầu)
  • Chuẩn bị máy tính cá nhân và Mạng tốt để học Online
  • Cài các phần mềm liên quan để học: ZOOM, Zalo

Nội dung khoá học

1 chương · 28 bài học

  • [Playwright Typescript] TÀI NGUYÊN KHOÁ HỌC Tài nguyên cài đặt môi trường và trong khoá học
  • Bài 1 - [Playwright Typescript] Cài đặt Playwright TypeScript và Tìm hiểu các khái niệm cốt lõi
    • 🛠️ 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

  • Bài 2 - [Playwright Typescript] Chiến Lược Lựa Chọn Locator Chuyên Nghiệp - Khi nào dùng getByRole, CSS, hay XPath trong Playwright?

    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

    2 giờ
  • Bài 3 - [Playwright Typescript] Kỹ thuật Tìm Kiếm Phần Tử Text & Khẳng định Kết quả

    ✅ 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.

    2 giờ
  • [Playwright Typescript] Cấu Trúc Test, Codegen, Annotations và Quản Lý Bộ Test Hiệu Quả

    🏗️ 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

  • [Playwright Typescript] Nói Không Với Flaky Test - Hướng Dẫn Toàn Diện về Auto-Waiting, Web-First Assertions & waitUntil trong Playwright, expect() có await

    🛡️ 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

    2 giờ
  • Bài 4 - [Playwright Typescript] Tương tác Chuột và Bàn phím

    Hiểu rõ 'Actionability' ⏳✅

    Từ click() đến dragTo() 🖱️🖐️

    Gửi phím tắt hiệu quả ⌨️⚡

    2 giờ
  • Bài 5 - [Playwright Typescript] Xử lý Lựa chọn (Checkbox&Radio), Dropdowns, và Dialogs (Alerts&Modals)

    ☑️ 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.

    2 giờ
  • Bài 6 - [Playwright Typescript] Làm chủ Kỹ thuật - Files, Frames, Shadow DOM

    📤 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.

    2 giờ
  • Bài 7 - [Playwright Typescript] Dùng evaluate() và Xử lý Widgets (Lịch & Bảng)

    🧠 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.

  • Bài 8 - [Playwright Typescript] Page Object Model (POM) - Nguyên tắc và Cấu trúc Nền tảng trong Playwright
    • Làm chủ Page Object Model (POM)
    • Thiết kế kiến trúc BasePage
    • Kỹ thuật Kế thừa (Inheritance) trong TypeScript:
    • Triển khai POM "Truyền thống"
    • Viết Test Case "Sạch":
  • Bài 9 - [Playwright Typescript] Chiến lược POM Nâng cao - Quản lý Assertions, Tránh Phản mẫu (Anti-Patterns) và Tối ưu Kiến trúc

    🎯 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

    💠 Thuật toán "Smart Map" & Normalization

     

  • Bài 10 - [Playwright Typescript] Kỹ thuật quản lý Test Data

    🌍 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):

  • Bài 11 - [Playwright Typescript] Làm chủ kiến trúc Fixture & Dependency Injection từ gốc 🚀 Bẻ khóa Playwright: Hiểu sâu bản chất Fixture không phải phép thuật, mà là Dependency Injection (DI).
    🤖 Phương pháp trực quan: Học qua mô hình "Robot Đầu Bếp",
    🛠️ Thực chiến Deep Dive: Tự tay code lại Core Container để thấu hiểu từng luồng chạy ngầm bên dưới.
    📌 Kỹ thuật Fixture căn bản: Cách khởi tạo, Merge và Inject đa dạng kiểu dữ liệu (Primitive, Object) vào Test Case.
  • Bài 12 - [Playwright Typescript] Kiến trúc fixture nâng cao - Tổ chức và tối ưu hóa dự án Playwright

    🔗 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.

  • Bài 13 - [Playwright Typescript] Thấu Hiểu Kiến Trúc Browser & Kỹ Thuật Test Đa Tài Khoản (Isolation)

    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ài 14 - [Playwright Typescript] Quản Lý Đa Môi Trường (Env), Cross-Platform và Làm Chủ Vòng Đời Test (Hooks)
    • 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?

  • Bài 15 - [Playwright Typescript] Làm Chủ Cấu Hình Playwright - Deep Dive vào Project, Scoping và Quy Trình Setup/Teardown 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.

  • Bài 16 - [Playwright Typescript] TestOptions - Trang bị 'Balo Hành Trang' và Vũ khí cho Test Runner

    🎒 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)

  • Bài 17 - [Playwright Typescript] Tìm hiểu về TestInfo và Tags

    🧠 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 (@)

  • Bài 18 - [Playwright Typescript] PLAYWRIGHT DEEP DIVE - Kiến trúc process, Data-driven và tối ưu song song

    🕵️ 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 độ)

  • Bài 19 - [Playwright Typescript] Kỹ thuật Debug lỗi với Trace Viewer và Cấu hình Reporting Từ cơ bản (HTML) đến nâng cao (Allure, Custom)

    Phần 1: Debug lỗi hiệu quả với Trace Viewer 🐞

    Phần 2: Các loại Report mặc định của Playwright 📊

    Phần 3: Báo cáo nâng cao với Allure Report 💎

    Phần 4: Custom Reporter (Tùy chỉnh Báo cáo) 🛠️

  • Bài 20 - [Playwright Typescript] Khởi đầu thực chiến - Giải mã API với Playwright

    🕵️ Bản chất thực sự của API

    📬 Giải phẫu Request/Response:

    🔄 Phân biệt PUT vs PATCH

    🛠️ Vũ khí cURL & Postman

    🏍️ Playwright "Shipper"

    💻 Thực hành CRUD đầu tay

    🩺 Soft Assertion

  • Bài 21 - [Playwright Typescript] Nền tảng giao thức API

    🔑 Phần 1: "Tấm Hộ Chiếu" JWT & Hệ Thống Bảo Mật AuthN/AuthZ

    🛣️ Phần 2: Điều Hướng Dữ Liệu Với Path Params & Query Params

    📖 Phần 3: Chiến Thuật Xử Lý Phân Trang (Pagination)

    📦 Phần 4: Multipart/Form-Data - "Container" Chứa Dữ Liệu Phức Tạp

     

    5 hours
  • Bài 22 - [Playwright Typescript] Thiết Kế Clean API Automation Framework

    🌟 Phần 1: Tư Duy Kiến Trúc (Architectural Mindset)

    🏗️ Phần 2: Thiết Kế Chi Tiết (Deep Dive)

    🚀 Phần 3: Workflow Hoạt Động

    🛠️ Phần 4: Khả Năng Mở Rộng (Scalability)

     

  • Bài 23 - [Playwright Typescript] Network Interception và kết hợp API-UI trong Playwright

    🧠 Bản chất intercept network

    🛠️  Cách thực hiện

    🤝 Luồng hoạt động

    🧠 Kết hợp giữa API - UI và waitForResponse

    2 hours
  • Bài 24 - [Playwright Typescript] Xử lý Multiple Tabs và Popups trong Playwright

    🧠 Xử lý multi tab

    🛠️ xử lý popup window



    2 hours
  • Bài 25 - [Playwright Typescript] CI/CD với Github Actions cho Playwright

    🧠 Tổng quan tư duy

    🛠️ Thành phần cơ bản file YML



    2 hours
Khoá học bao gồm
  • 80 giờ bài học
  • Truy cập trọn đời
  • Bài tập thực hành
  • Dự án thực tế thực chiến
  • Chứng chỉ hoàn thành
Thông tin khoá học
  • Đã đăng ký: 8 học viên
  • Số chương: 1
  • Số bài học: 28
  • Trình độ: Cơ bản
  • Ngôn ngữ: Vietnamese
  • Chứng chỉ: Có