NỘI DUNG BÀI HỌC
✅ 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…
-
Có 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:
➡️ 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
➡️ 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
✅ 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:
📘 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
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. |
