Giới thiệu về Playwright – Automation test
Playwright là gì?
Playwright là một thư viện rất phong phú xây dựng bởi Microsoft, hỗ trợ nhiều ngôn ngữ khác nhau như Node.js, Python, Java, .Net; được tạo ra đặc biệt để đáp ứng yêu cầu của những kiểm thử cuối cùng. Playwright hỗ trợ tất cả các trình duyệt hiện đại bao gồm Chromium, WebKit và Firefox và có khả năng tự động hoá các trình duyệt chỉ với một API duy nhất. Playwright có thể chạy kiểm thử trên Windows, Linux và macOS, Local, trên CI, hoặc với giả lập di động native.
Playwright có thể thực hiện được các mong muốn của người viết automation như:
- Chạy thử nghiệm trên tất cả các trình duyệt.
- Chạy song song các test cases
- Quay video, chụp ảnh màn hình
- Có thể mở rộng thông qua fixture
Cài đặt Playwright
Cài đặt python
Để sử dụng, bạn cần cài đặt Python trước khi bắt đầu. Tùy hệ điều hành mà bạn có thể xem hướng dẫn cài đặt Python tại đây.
Cài đặt Playwright
Cài đặt Pytest plugin
pip install pytest-playwright
Cài đặt trình duyệt (browser)
Mặc định Playwright sẽ cài đặt tất cả các trình duyệt (chromium, firefox, webkit,…) được hỗ trợ, nó độc lập với trình duyệt hiện tại trên máy tính của bạn. Nếu bạn không muốn cài đặt tất cả hay chỉ muốn cài đặt một vài trình duyệt nào đó, bạn có thể tham khảo ở đây. Nếu bạn muốn quản lý/xoá các trình duyệt mặc định mà Playwright đã cài đặt cũng rất dễ dàng (tham khảo ở đây).
playwright install
Playwright cũng có thể dễ dàng làm việc được với các trình duyệt có sẵn trên máy tính của bạn, để thực hiện điều này bạn cần có sự hiểu biết đổi chút về cdp (Chrome DevTools Protocol).
Viết một ví dụ cơ bản sử dụng Playwright
Mình sẽ lấy ví dụ đơn giản nhất là kiểm tra khi vào trang playwright.dev có xuất hiện từ Playwright ở title không? Sau đó sẽ thực hiện các hành vi mô phỏng click chuột, tải trang…
Bước đầu tiên
Tạo một file “test_my_application.py” bên trong thư mục working của bạn hoặc tuỳ ý ở các nơi với nội dung code như sau:
import re from playwright.sync_api import Page, expect def test_homepage_has_Playwright_in_title_and_get_started_link_linking_to_the_intro_page(page: Page): page.goto("https://playwright.dev/") # Expect a title "to contain" a substring. title = page.locator('.navbar__inner .navbar__title') expect(title).toHaveText('Playwright') #expect(page).to_have_title(re.compile("Playwright")) # create a locator get_started = page.get_by_role("link", name="Get started") # Expect an attribute "to be strictly equal" to the value. expect(get_started).to_have_attribute("href", "/docs/intro") # Click the get started link. get_started.click() # Expects the URL to contain intro. expect(page).to_have_url(re.compile(".*intro"))
Chúng ta có thể hiểu đoạn code hoạt động như sau:
- Định nghĩa một function với tên “test_homepage_has_Playwright_in_title_and_get_started_link_linking_to_the_intro_page”
- Truy cập vào trang playwright.dev
- Tìm đến selector “.navbar__inner .navbar__title” và kiểm tra xem selector đấy có chứa text là Playwright hay không.
- Tìm đến selector có dạng thẻ “<a>” và có chứa từ khoá “Get started”. Kiểm tra xem selector đấy có thuộc tính “href” với giá trị là “/docs/intro” hay không.
- Click chuột vào selector tìm thấy ở trên. Kiểm tra url có chưa từ khóa “intro” hay không.
Chạy test
Chạy test với câu lệnh sau ở terminal
pytest
Mặc định test sẽ được chạy trên trình duyệt chromium đã được playwright cài đặt ở trên. Bạn cũng có thể chỉ định rõ một trình duyệt khác thông qua các tham số ở CLI. Kết quả của việc test trên và logs sẽ được show trên terminal của bạn.
Test generator
Một điều không thể thiếu đó là Playwright có khả năng sinh ra những đoạn mã rất dễ dàng qua những thao tác sử dụng của bạn, điều này rất có ích nếu bạn không có nhiều kiến thức về lập trình hoặc muốn nhanh chóng có thể xây dựng được bộ kiểm thử tự động.
playwright codegen demo.playwright.dev/todomvc
Tạm kết
Chỉ với một vài command và một file test cơ bản. Bạn đã có thể bắt đầu với Playwright nói riêng, Automation test nói chung. Ở các bài tiếp theo, mình sẽ hướng dẫn các bạn viết test cho API và các kiến thức nâng cao hơn.