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

👀 Kiểm thử tự động là gì?

🗒 Kiểm thử tự động là quá trình tự động hóa:

          • Thực thi kịch bản kiểm thử tự động
          • Tổng hợp và báo cáo kết quả kiểm thử

💪 Điểm mạnh của kiểm thử tự động:

          • Nhanh - nhiều - liên tục: Kiểm thử tự động thực thi kịch bản NHANH hơn nên thực thi được NHIỀU lần hơn từ đó sẽ thực thi được LIÊN TỤC
          • Không chủ quan: Hạn chế được các lỗi phát sinh do sự chủ quan của con người
          • Đỡ tổn tài nguyên: Giảm thiểu được các tài nguyên kiểm thử (thiết bị kiểm thử, nhân lực kiểm thử,...)
          • Phản hồi nhanh: Có phản hồi nhanh các báo cáo về chất lượng phần mềm cho các bên liên quan (QA/QC, BA, PO, Dev,...)
          • Tính nhất quán: Các lần thực thi kiểm thử luôn có sự nhất quán (về mặt dữ liệu kiểm thử, các bước kiểm thử,...) LƯU Ý: Nó sẽ là điểm mạnh khi phần mềm không có sự thay đổi làm ảnh hưởng đến script kiểm thử tự động
          • Tin cậy: Do thực hiện được nhiều lần và liên tục nên năng suất kiểm thử sẽ tăng lên --> Mức độ tin cậy của báo cáo kiểm thử sẽ tăng lên

🫵 Điểm yếu của kiểm thử tự động:

          • Chi phí đầu tư ban đầu cao
          • Mất nhiều thời gian phát triển và bảo trì
          • Khả năng thích ứng với những thay đổi của phần mềm không cao
          • Chỉ có thể đối chiếu kết quả với những gì được lập trình
          • Không thể thực hiện một số đánh giá về chất lượng phần mềm

 

📒 Các hoạt động trong kiểm thử tự động

          • Sử dụng công cụ/phần mềm để lập trình theo một bộ kịch bản kiểm thử
          • Sử dụng công cụ/phần mềm để cấu hình và kiểm soát cho các phiên thực thi kiểm thử tự động
          • Tự động hóa thực thi các bộ kịch bản kiểm thử tự động
          • Đối chiếu kết quả mong đợi và tổng hợp báo cáo

1️⃣. Playwright là gì?

Khái niệm: Playwright là một công cụ tự động hóa - "người máy kiểm thử web" (Web Testing Robot) của Microsoft, giúp bạn dùng code để 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.


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ờ thông minh) 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.
⚡Siêu 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.
🌐 Đa năng Chỉ cần cài một lần, Playwright hỗ trợ chạy trên nhiều trình duyệt:  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

Cánh tay robot trực tiếp cầm chuột và gõ phím. 

Cung cấp các lệnh tương tác như page.goto(), page.click(), page.fill().

Bạn bảo "Click", nó sẽ click. Bạn bảo "Nhập chữ", nó sẽ gõ.
⚙️ Pytest Người quản lý (Quản đốc): giúp gom test case, chạy và báo kết quả. Sắp xếp xem bài test nào chạy trước, bài nào chạy sau và ghi chép lại kết quả cuối cùng.
🔌 pytest-playwright Thông dịch viên :“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. Giúp "Quản lý" Pytest nói chuyện được với "Robot" Playwright mà không cần bạn phải đứng ra làm trung gian.
📊 pytest-html “Nhân viên báo cáo” – tạo file báo cáo HTML dễ đọc. Tổng hợp kết quả thành một file đẹp đẽ (có hình ảnh, màu sắc) để bạn mang đi báo cáo cho sếp hoặc khách hàng.

 

🌟 Tại sao lại chọn "Quản lý" Pytest?

Nếu Playwright là một công nhân giỏi, thì Pytest là một người quản lý cực kỳ thông minh vì:

  1. Cực kỳ nhạy bén: Bạn chỉ cần đặt tên file hay tên bài test có chữ test_ là nó tự hiểu: "À, đây là việc của mình!" và tự động bắt đầu làm.

  2. Chuẩn bị chu đáo (Fixtures): Trước khi làm việc, nó biết tự mở trình duyệt, đăng nhập sẵn cho bạn; làm xong nó lại biết tự dọn dẹp và đóng máy.

  3. "Cánh tay nối dài" phong phú: Nó có rất nhiều trợ thủ (plugin) đi kèm, giúp bạn làm được những việc khó như chạy nhiều bài test cùng lúc để tiết kiệm thời gian: 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: Tại sao cần cả 4?

  • playwright: Bản thân "robot" chính.

  • pytest: "Quản đốc" điều hành buổi kiểm thử.

  • pytest-playwright: "Sợi dây cáp" kết nối Robot và Quản đốc.

  • pytest-html: "Thư ký" chuyên soạn báo cáo kết quả đẹp mắt.


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

playwright install

➡️ Lệnh này có tác dụng gì? Nó sẽ tự động tải về 3 "vùng không gian" để robot làm việc:

  • Chromium: Để chạy thử như trên Chrome, Edge.

  • Firefox: Để chạy thử như trên trình duyệt Cáo lửa.

  • WebKit: Để chạy thử như trên Safari (máy Mac, iPhone).

Ghi chú: Bạn chỉ cần chạy lệnh này một lần duy nhất lúc mới thiết lập.



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