NỘI DUNG BÀI HỌC

✅ Hiểu rõ giá trị cốt lõi của Playwright (Auto-wait, Tốc độ, Multi-browser).
✅ Thiết lập thành công môi trường Playwright + Pytest.
✅ Phân tích vai trò của từng thư viện: Pytest, PIP, Fixture page.
✅ Viết và chạy được Test Case Playwright đầu tiên, tạo được báo cáo HTML tự động.

🧠 I. PLAYWRIGHT: NGƯỜI MÁY KIỂM THỬ HIỆN ĐẠI

1️⃣. Playwright là gì?

Khái niệm: Playwright là một "người máy kiểm thử web" (Web Testing Robot) do Microsoft phát triển. Nó giúp lập trình viên và QA mô phỏng hành vi của người dùng thật trên các trình duyệt như Chrome, Firefox, Safari – nhưng với tốc độ của máy!

Ví dụ thực tế: Tưởng tượng bạn thuê một “người dùng robot 🤖” cực kỳ nhanh nhẹn và chính xác để kiểm tra website 24/7.
Robot này có thể:

  • Mở trình duyệt, gõ URL, click chuột, nhập text, chọn dropdown,…

  • Kiểm tra xem một trang có tải đúng nội dung hay không.
    Đó chính là Playwright!


2️⃣. Tại sao chọn Playwright? (Giá trị cốt lõi)

Tính năng Giải thích đơn giản Ví dụ thực tế / Automation
🕐 Auto-Wait (Tự động chờ) Khi bạn nhấp vào nút, website mất 1–2s để tải. Playwright tự động đợi cho đến khi phần tử sẵn sàng, không cần sleep(). Test đăng nhập không bị lỗi “element not found” do web load chậm.
⚡ Tốc độ (Speed) Playwright chạy headless (ẩn giao diện) nên cực nhanh, như một chiếc xe F1 🏎️. Trong CI/CD, hàng trăm test có thể chạy song song trong vài phút.
🌐 Hỗ trợ 3 trình duyệt chính Chỉ cần cài một lần, Playwright hỗ trợ Chromium (Chrome), Firefox, WebKit (Safari). QA có thể test cross-browser mà không phải viết lại code.

💡 Ví dụ minh họa:

Khi test login web, Selenium thường cần chờ “sleep(3)” → mất 3 giây.
Còn Playwright sẽ tự hiểu rằng cần đợi đến khi nút “Login” thật sự sẵn sàng rồi mới click → nhanh hơn, ổn định hơn.

🧰 II. PHÂN TÍCH CÁC THÀNH PHẦN CỐT LÕI 

Để Playwright hoạt động mượt mà với Python, ta cần một Bộ công cụ hoàn chỉnh – giống như một “bộ đồ nghề automation”.

Thành phần Vai trò (Chức năng) Ví dụ / Liên hệ thực tế
🧩 Playwright “Động cơ và bánh lái” của robot — cung cấp các lệnh tương tác như page.goto(), page.click(), page.fill(). page.goto("https://google.com") → Mở trang web.
⚙️ Pytest “Khung tổ chức và chạy thử nghiệm” – giúp gom test case, chạy và báo kết quả. Giống như thư ký kiểm tra danh sách bài test và báo ai đạt.
🔌 pytest-playwright “Cầu nối thông minh” giữa Pytest và Playwright — giúp Pytest tự cấp đối tượng page (trình duyệt) cho bạn dùng. Không cần tự khởi tạo trình duyệt bằng tay.
📊 pytest-html “Nhân viên báo cáo” – tạo file báo cáo HTML dễ đọc. Giúp team QA export báo cáo pass/fail hàng ngày.

 

🧩 Lí do chọn Pytest :

  • Pytest nhận diện test tự động (chỉ cần đặt tên test_...)

  • Hỗ trợ fixture mạnh mẽ → có thể khởi tạo browser, login, setup data…

  • plugin phong phú: pytest-playwright, pytest-html, pytest-xdist (chạy song song).


🧑‍💻 III. THIẾT LẬP MÔI TRƯỜNG VÀ CÔNG CỤ 

⚙️ Giả định:

  • Máy đã có Python 3.9+

  • Dự án có thư mục riêng và môi trường ảo (venv) đã kích hoạt.

1️⃣. Cài đặt các thư viện cần thiết

📘 Mở Terminal (hoặc VS Code Terminal) → nhập:

pip install playwright pytest pytest-playwright pytest-html

➡️ Giải thích:

  • playwright: Thư viện chính.

  • pytest: Framework kiểm thử.

  • pytest-playwright: Plugin kết nối Pytest với Playwright.

  • pytest-html: Plugin xuất báo cáo HTML.

2️⃣. Tải về trình duyệt cho Playwright

playwright install

➡️ Giải thích:
Tải về các “bộ não” của 3 trình duyệt:

  • Chromium (Chrome-based)

  • Firefox

  • WebKit (Safari engine)

👉 Sau khi chạy lệnh, Playwright có thể tự động mở browser cho test.

3️⃣. Kiểm tra cài đặt

pytest --version
playwright --version

✅ Nếu cả hai hiện phiên bản → môi trường đã sẵn sàng.

🧾 IV. KỊCH BẢN ĐẦU TIÊN: VIẾT VÀ CHẠY TEST 

1️⃣. Cấu trúc dự án

Tạo cấu trúc thư mục:

my-playwright-project/
│
├── tests/
│   └── test_kiem_tra_trang_chu.py
│
└── pytest.ini

📘 Quy tắc Pytest:

  • Tên file phải bắt đầu bằng test_

  • Tên hàm phải bắt đầu bằng test_

2️⃣. Viết test đầu tiên: “Chào Google!”

📄 File: tests/test_kiem_tra_trang_chu.py

 
import re
from playwright.sync_api import Page, expect

def test_kiem_tra_tieu_de_google(page: Page):
    print("🤖 Robot bắt đầu mở trình duyệt Google...")

    # 1️⃣ Truy cập trang web
    page.goto("https://www.google.com")

    # 2️⃣ Kiểm tra tiêu đề
    expect(page).to_have_title(re.compile("Google"))
    print("✅ Tiêu đề chính xác: Google")

    # 3️⃣ Kiểm tra URL có chứa “google”
    expect(page).to_have_url(re.compile("google"))
    print("🌐 URL hợp lệ!")


3️⃣. Giải thích code

 
Lệnh / Từ khóa Ý nghĩa
page: Page Là fixture đặc biệt do pytest-playwright cung cấp — đại diện cho một tab trình duyệt.
page.goto(url) Mở trang web tương ứng với URL.
expect(page).to_have_title() Kiểm tra tiêu đề trang có khớp với mong đợi không.
expect(page).to_have_url() Kiểm tra URL hiện tại.
re.compile("Google") Cho phép dùng biểu thức chính quy (regex), giúp linh hoạt hơn.


4️⃣. Chạy test và tạo báo cáo

Lệnh Chức năng Khi sử dụng
pytest Chạy toàn bộ test ở chế độ headless (ẩn trình duyệt). Khi chạy trên server CI/CD để tiết kiệm thời gian.
pytest --headed Chạy test có hiển thị trình duyệt. Khi debug, quan sát robot thao tác.
pytest --html=report.html --self-contained-html Tạo file báo cáo đẹp dạng HTML. Khi cần lưu kết quả để chia sẻ.

📘 Sau khi chạy, mở file report.html → xem màu xanh (Pass ✅) hay đỏ (Fail ❌).


🧩 V. TÓM TẮT & BÀI TẬP VỀ NHÀ 

Mục tiêu Chi tiết
🧠 Tóm tắt nhanh Hôm nay bạn đã cài đặt xong môi trường, hiểu rõ vai trò của Playwright và Pytest, chạy được kịch bản test đầu tiên. Playwright là “động cơ”, Pytest là “bộ điều khiển thông minh”.
💡 Bài tập thực hành Viết file mới test_bai_tap.py để:
1️⃣ Truy cập vào trang web yêu thích (ví dụ: shopee.vn, vnexpress.net, công ty bạn).
2️⃣ Kiểm tra tiêu đề trang có đúng mong đợi.
3️⃣ Kiểm tra URL trang web.
🔜 Buổi 2 sắp tới Sẽ học về Locators (tìm và thao tác phần tử), nhập liệu, click, đợi động (explicit wait) – giúp robot thực sự “tương tác thông minh” với website.
 

Teacher

Teacher

Hà Lan

QA Automation

With over 5 years of experience in web, API, and mobile test automation, built strong expertise in designing and maintaining automation frameworks across various domains and international projects. Committed to mentoring and knowledge sharing, I provide practical guidance and proven techniques to help aspiring testers develop their skills and succeed in the automation field.

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học