
Playwright là gì? Kiểm thử tự động web toàn diện

Playwright là framework mã nguồn mở do Microsoft phát triển, dùng để kiểm thử tự động (end-to-end testing) và tự động hóa trình duyệt web. Với hơn 94.000 sao trên GitHub, Playwright đang trở thành lựa chọn hàng đầu cho lập trình viên muốn kiểm thử ứng dụng web một cách nhanh chóng và đáng tin cậy.
Điểm khác biệt cốt lõi của Playwright: một API duy nhất điều khiển cả ba engine trình duyệt — Chromium, Firefox và WebKit. Bạn viết mã một lần, kiểm thử chạy trên nhiều trình duyệt, nhiều nền tảng mà không cần sửa đổi gì thêm.
Cài đặt Playwright nhanh chóng

Cài đặt với Python
pip install pytest-playwright playwright install
Cài đặt với Node.js
npm init playwright@latest npx playwright install
Sau khi cài đặt, bạn có thể chạy kiểm thử với pytest (Python) hoặc npx playwright test (Node.js). Công cụ hỗ trợ Windows, macOS và Linux — bao gồm cả Ubuntu 22.04/24.04 phổ biến tại Việt Nam.
Ví dụ mã Playwright cơ bản
Dưới đây là ví dụ kiểm thử Python đơn giản từ tài liệu chính thức của Playwright:
import re
from playwright.sync_api import Page, expect
def test_has_title(page: Page):
page.goto("https://playwright.dev/")
expect(page).to_have_title(re.compile("Playwright"))
def test_get_started_link(page: Page):
page.goto("https://playwright.dev/")
page.get_by_role("link", name="Get started").click()
expect(page.get_by_role("heading", name="Installation")).to_be_visible()
Chú ý: bạn không cần viết time.sleep() hay chờ đợi thủ công. Playwright tự động chờ phần tử sẵn sàng trước khi tương tác — đây là tính năng auto-waiting giúp giảm đáng kể tình trạng kiểm thử “flaky” (chạy lúc được lúc không).
Tính năng nổi bật
- Auto-waiting thông minh: tự động chờ phần tử có thể tương tác, không cần sleep thủ công
- Codegen: ghi lại thao tác trên trình duyệt và tự sinh mã kiểm thử
- Trace Viewer: xem lại từng bước thực thi, kèm ảnh chụp màn hình và network request
- Cô lập test: mỗi kiểm thử chạy trong browser context riêng, không ảnh hưởng lẫn nhau
- Chạy song song: kiểm thử chạy song song trên nhiều trình duyệt theo mặc định
- Giả lập di động: kiểm thử giao diện mobile với thiết bị ảo Pixel, iPhone ngay trên máy tính
- Intercept network: giả lập API, chặn request, kiểm thử các tình huống lỗi mạng
- Kiểm thử API: tích hợp sẵn, không cần công cụ riêng như Postman trong pipeline
Thông tin chi tiết tại tài liệu chính thức Playwright.
So sánh Playwright với Selenium, Cypress và Puppeteer
| Tiêu chí | Playwright | Selenium | Cypress | Puppeteer |
|---|---|---|---|---|
| Nhà phát triển | Microsoft | Cộng đồng mã nguồn mở | Cypress.io | |
| Trình duyệt | Chromium, Firefox, WebKit | Chrome, Firefox, Safari, Edge | Chrome, Firefox, Edge | Chromium (chủ yếu) |
| Ngôn ngữ | JS/TS, Python, Java, .NET | 10+ ngôn ngữ | JavaScript/TypeScript | JavaScript |
| Auto-waiting | Có sẵn | Cần tự xử lý | Có sẵn | Tối thiểu |
| Test runner | Tích hợp sẵn | Không (dùng TestNG, pytest…) | Tích hợp sẵn | Không (dùng Jest, Mocha) |
| Chạy song song | Có, mặc định | Qua Selenium Grid | Có (bản trả phí) | Thủ công |
| iFrame, nhiều tab | Hỗ trợ đầy đủ | Hỗ trợ đầy đủ | Hạn chế | Hạn chế |
Selenium tồn tại từ 2004 và có hệ sinh thái lớn nhất, nhưng Playwright vượt trội về tốc độ và trải nghiệm phát triển nhờ kiến trúc kết nối trực tiếp với engine trình duyệt (CDP/WebSocket) thay vì giao thức WebDriver qua HTTP.
Ứng dụng thực tế
Ngoài kiểm thử, Playwright còn được dùng để:
- Tự động hóa tác vụ lặp lại: nhập liệu, tải file, kiểm tra dữ liệu hàng loạt
- Cào dữ liệu (web scraping): trích xuất nội dung trang web với độ ổn định cao
- Chạy trong CI/CD: tích hợp GitHub Actions, GitLab CI, Jenkins để kiểm thử tự động mỗi lần commit
- Hỗ trợ AI agents: Microsoft cung cấp MCP server giúp Claude Code, Copilot điều khiển trình duyệt
Nhược điểm cần cân nhắc
- Cộng đồng còn nhỏ hơn Selenium — ít câu trả lời trên Stack Overflow hơn khi gặp lỗi
- Phải tải file nhị phân trình duyệt riêng cho từng phiên bản Playwright (vài trăm MB)
- Không hỗ trợ IE11 — WebKit trong Playwright là Safari, không phải Internet Explorer
- Bản Node.js đầy đủ tính năng nhất; bản Python, Java, .NET cập nhật chậm hơn một nhịp
Kết luận
Playwright là lựa chọn mạnh mẽ cho dự án mới hoặc đội ngũ muốn thoát khỏi kiểm thử thủ công. Nếu bạn từng vật lộn với Selenium và các đoạn mã chờ đợi phức tạp, Playwright sẽ là trải nghiệm hoàn toàn khác: mã gọn, chạy nhanh, báo lỗi chi tiết kèm trace. Hãy bắt đầu với dự án nhỏ, chạy thử trên một trang quan trọng của ứng dụng, rồi mở rộng dần.
Tham khảo thêm:
