Can Tho, Vietnam

0939206009

thaian.it15@gmail.com

Website Testing Cơ bản Vietnamese

Website and API Testing Automation with Playwright Javascript Typescript (DẠY CODE JS TS TỪ ĐẦU) + Ứ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 CHƯA BIẾT CODE JAVASCRIPT TYPESCRIPT đi từng bước từ cơ bản đến nâng cao. 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

Anh Tester Giảng viên: Anh Tester
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)

Yêu cầu

  • Không cần biết code Javascript Typescript vẫn học được vì 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

2 chương · 41 bài học

  • Bài 1 - [Javascript Typescript] Giới thiệu và cài đặt môi trường Javascript ✅ Giới thiệu ngôn ngữ lập trình Javascript
    ✅ Ứng dụng của Javascript/TypeScript
    ✅ Demo sử dụng JS trong Playwright
    ✅ Cài đặt môi trường học tập Javascript
    2 giờ
  • Bài 2 - [Javascript Typescript] Biến - Dữ liệu cơ bản - Thao tác dữ liệu - Các phép toán ✅Biến là gì?
    ✅Công dụng của Biến trong ngôn ngữ lập trình Javascript
    ✅Cách khai báo biến, các quy tắc đặt tên biến
    ✅Kiểu dữ liệu trong Javascript
    ✅Các phương thức thường dùng cho String và Number
    ✅Các phép toán số học và ép kiểu
    ✅Tìm hiểu sâu về các loại toán tử
    2 giờ
  • Bài 3 - [Javascript Typescript] Logic và rẽ nhánh ✅Câu lệnh rẽ nhánh if, else
    ✅Toán tử 3 ngôi
    ✅Truthy và falsy
    ✅Lựa chọn với câu lệnh switch...case
    2 giờ
  • Bài 4 - [Javascript Typescript] Vòng lặp và Cấu trúc Dữ liệu Danh sách ✅LẶP LẠI HÀNH ĐỘNG VỚI VÒNG LẶP while
    ✅LẶP LẠI CÓ CẤU TRÚC VỚI VÒNG LẶP for
    ✅LÀM VIỆC VỚI DANH SÁCH DÙNG MẢNG (ARRAY)
    ✅LÀM VIỆC VỚI DỮ LIỆU CÓ CẤU TRÚC (OBJECT)
    2 giờ
  • Bài 5 - [Javascript Typescript] Tái sử dụng Code & vấn đề liên quan ✅ LÀM CHỦ FUNCTION TRONG JAVASCRIPT
    ✅ HIỂU SÂU VỀ THIS 
    ✅ HOISTING LÀ GÌ
    ✅ HÀM CALLBACK VÀ LƯU Ý SỐNG CÒN
    ✅ SCOPE VÀ CLOSURE
    2 giờ
  • Bài 6 - [Javascript Typescript] Sổ tay Git Cơ bản cho người mới ✅ Git là gì? (Git CSM)
    ✅ Ưu điểm của Git
    ✅ Dịch vụ Git (GitHub)
    ✅ Các bước cài đặt để sử dụng được Git trên Windows
    2 giờ
  • Bài 7 - [Javascript Typescript] Nền tảng Lập trình Hướng đối tượng (OOP) ✅ CLASS TRONG JAVASCRIPT
    ✅ CÁC TRỤ CỘT CỦA OOP (Kế thừa, Đóng gói, Đa hình...)
    2 giờ
  • Bài 8 - [Javascript Typescript] JS Nâng Cao - Async, Modules & Error Handling
    • 🚀 Bắt đầu: Hiểu rõ vấn đề của code đồng bộ và tại sao cần bất đồng bộ.

    • 🤝 Nền tảng: Làm chủ Promise và phương thức .then(), .catch().

    • Nâng cao: Tinh giản code với cú pháp async/await hiện đại.

    • 🔒 Bảo vệ: Viết code bền vững, chống sập với try...catch...finally.

    • 🗂️ Tổ chức: Sắp xếp dự án chuyên nghiệp bằng Modules.

    2 giờ
  • Bài 9 - [Javascript Typescript] TypeScript - Trang bị 'Giáp Sắt' cho Ninja JavaScript

    🚀TypeScript là gì? Tại sao nên dùng TypeScript thay vì JavaScript thuần?
    🚀Làm quen với các kiểu dữ liệu cơ bản (Primitive Types) trong TypeScript.
    🚀Cách định kiểu dữ liệu cho Mảng (Array) và Đối tượng (Object).
    🚀Hướng dẫn cài đặt môi trường Node.js, npm và TypeScript từ A-Z.

    2 giờ
  • Bài 10 - [Javascript Typescript] Bí quyết Viết Code An toàn với Type, Interface & Class
    • 🚀 Linh hoạt & Vững chắc: Nắm vững cách dùng Type AliasInterface để định hình dữ liệu.

    • 🧩 Kiểu Đa năng: Khám phá Union Types và định nghĩa "hợp đồng" cho hàm với Function Types.

    • 🛡️ OOP An toàn: Xây dựng Class chuyên nghiệp với private, protected và các cú pháp nâng cao.

    2 giờ
  • Bài 11 - [Javascript Typescript] Làm chủ TypeScript - Từ OOP đến Generics - Xây dựng Framework vững chắc

    🏗️ Kế thừa & Interfaces (extends, implements)

    ✅ Quản lý Hằng số với Enum

    🧩 Linh hoạt hóa với Generic

    2 giờ
  • Bài 12 - [Javascript Typescript] Làm chủ TypeScript Nâng cao - Từ Generic linh hoạt đến Xử lý File (JSON, XLSX)

    🔗 Hướng dẫn TypeScript Generics

    📊 Đọc file XLSX trong Node.js bằng async/await

    ⚙️ Xử lý file JSON với TypeScript và fs/promises

    📖 Cách dùng Record trong TypeScript để quản lý dữ liệu

     

    2 giờ
  • Bài 13 - [Javascript Typescript] Tổng Kết JavaScript & TypeScript - Chìa Khóa Vạn Năng Mở Cửa Thế Giới Tự Động Hóa

    Phần 1: Ôn Lại Những "Siêu Năng Lực" Cốt Lõi Đã Học 🧠

    Phần 2: Mở Rộng Chân Trời - Thế Giới Automation Ngoài Playwright 🌐

    Phần 3: Hành Trình Của Bạn Chỉ Mới Bắt Đầu! 🚀

     

     

    2 giờ

  • [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 14 - [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 15 - [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

  • Bài 16 - [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 17 - [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 18 - [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ờ
  • Bài 19 - [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 20 - [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 21 - [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 22 - [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 23 - [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 24 - [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 25 - [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 26 - [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 27 - [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 28 - [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 29 - [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 30 - [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 31 - [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 32 - [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 33 - [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 34 - [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 35 - [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 36 - [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 37 - [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 38 - [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 39 - [Playwright Typescript] Xử lý Multiple Tabs và Popups trong Playwright

    🧠 Xử lý multi tab

    🛠️ xử lý popup window



    2 hours
  • Bài 40 - [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
  • 100 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ý: 0 học viên
  • Số chương: 2
  • Số bài học: 41
  • Trình độ: Cơ bản
  • Ngôn ngữ: Vietnamese
  • Chứng chỉ: Có