Kiểm thử trình duyệt tự động là điều cần thiết để xây dựng các ứng dụng web mạnh mẽ và chất lượng cao. Cho dù bạn đang chạy các bộ kiểm thử đầu cuối tích hợp liên tục (CI), thực hiện kiểm thử hồi quy trên các bản phát hành trình duyệt hay tự động hoá các hoạt động tương tác với trình duyệt, Chrome đều cung cấp một bộ công cụ và chế độ thực thi chuyên dụng được thiết kế cho nhà phát triển và kỹ sư tự động hoá kiểm thử.
Bài viết tổng quan này giới thiệu các sản phẩm cốt lõi trong hệ sinh thái tự động hoá và kiểm thử của Chrome (Chrome for Testing, ChromeDriver, Puppeteer và chế độ Headless của Chrome) và giải thích cách bạn có thể sử dụng các sản phẩm này cùng nhau để có quy trình kiểm thử đáng tin cậy và có thể tái tạo.
Chrome for Testing
Chrome for Testing là một phiên bản Chrome chuyên biệt nhắm đến các trường hợp sử dụng tính năng kiểm thử và tự động hoá ứng dụng web.
Khi chạy các bộ kiểm thử toàn diện hoặc quy trình tích hợp liên tục (CI), bạn thường cần kết quả nhất quán và có thể tái tạo trong các lần chạy kiểm thử lặp lại. Thay vì dựa vào các bản cài đặt trình duyệt tiêu chuẩn, Chrome for Testing cho phép bạn tải xuống và ghim các phiên bản Chrome cụ thể cho môi trường kiểm thử.
Các tính năng chính
- Tải xuống theo phiên bản theo yêu cầu: Truy cập vào các tệp nhị phân Chrome cụ thể theo phiên bản để bạn luôn kiểm thử dựa trên chính xác phiên bản mà bạn chọn.
- Các tệp nhị phân được ghép nối trên các kênh: Đối với mọi bản phát hành Chrome trên tất cả các kênh (Ổn định, Beta, Nhà phát triển và Canary), Chrome for Testing cung cấp các tệp nhị phân Chrome phù hợp được ghép nối với các tệp nhị phân ChromeDriver có liên quan, cũng như trình bao Chrome Headless cũ (
chrome-headless-shell) cho những người vẫn sử dụng trình bao này trong các thử nghiệm tự động. - Dễ dàng tự động hoá việc tải xuống: Bạn có thể dễ dàng tải xuống các tệp nhị phân bằng tiện ích dòng lệnh
@puppeteer/browsershoặc truy vấn thông qua trang tổng quan về tính sẵn có.
Tìm hiểu thêm
ChromeDriver
ChromeDriver là một máy chủ độc lập nguồn mở triển khai tiêu chuẩn W3C WebDriver và giao thức WebDriver BiDi hai chiều. Nó đóng vai trò là cầu nối giữa các khung kiểm thử dựa trên WebDriver (chẳng hạn như Selenium, WebDriverIO và Nightwatch) và trình duyệt Chrome.
Các tính năng chính
- Hỗ trợ W3C WebDriver và WebDriver BiDi: Hỗ trợ cả các lệnh tự động hoá WebDriver cổ điển và giao tiếp hai chiều theo thời gian thực thông qua WebDriver BiDi để nghe sự kiện nhanh, giám sát mạng và chặn nhật ký.
- Được phát hành cùng với Chrome for Testing: Các bản phát hành ChromeDriver được tích hợp trực tiếp vào cơ sở hạ tầng Chrome for Testing. Đối với mỗi phiên bản Chrome for Testing, một phiên bản ChromeDriver tương ứng sẽ được phát hành đồng thời, giúp bạn không còn phải lo lắng về việc phiên bản không khớp.
Tìm hiểu thêm
- Tài liệu về ChromeDriver
- WebDriver BiDi – Tương lai của tính năng tự động hoá trên nhiều trình duyệt
- MDN: Tài liệu tham khảo về WebDriver BiDi
Puppeteer
Puppeteer là một thư viện JavaScript do Google phát triển, cung cấp API cấp cao để kiểm soát Chrome thông qua Giao thức Chrome DevTools (CDP) hoặc WebDriver BiDi.
Các tính năng chính
- Tự động hoá mà không cần thiết lập: Theo mặc định, Puppeteer sẽ tự động tải một tệp nhị phân Chrome for Testing tương thích xuống, cho phép tự động hoá trình duyệt mà không cần thiết lập.
- Kiểm soát hoàn toàn Chrome: Dễ dàng chụp ảnh màn hình, tạo tệp PDF, tự động hoá việc gửi biểu mẫu, chặn các yêu cầu mạng và thực hiện kiểm thử giao diện người dùng ở chế độ có giao diện hoặc không có giao diện.
Tìm hiểu thêm
Chế độ không có giao diện người dùng của Chrome
Chế độ Chrome Headless cho phép bạn chạy Chrome trong một môi trường không có người dùng mà không có giao diện người dùng nào hiển thị. Bằng cách truyền cờ --headless trên dòng lệnh, Chrome chạy một cách gọn gàng trong môi trường máy chủ, vùng chứa và quy trình CI/CD.
Các tính năng chính
- Công cụ trình duyệt hợp nhất: Chế độ Không giao diện người dùng hiện đại (
--headless) có cùng một cách triển khai trình duyệt với Chrome có giao diện người dùng. - Khả năng gỡ lỗi và tự động hoá phong phú: Hỗ trợ chụp ảnh màn hình, tạo tệp PDF, gỡ lỗi từ xa và định cấu hình màn hình ảo.
Tìm hiểu thêm
- Chạy Chrome ở chế độ không có giao diện người dùng
- Định cấu hình màn hình ảo
- Gỡ lỗi ở chế độ Không có giao diện người dùng
- Thông tin tham khảo về dòng lệnh không có giao diện người dùng
Ví dụ: Kết hợp các sản phẩm này
Trong quy trình kiểm thử tự động hoặc tích hợp liên tục (CI) thông thường, các sản phẩm này hoạt động cùng nhau để cung cấp một môi trường kiểm thử có thể tái tạo và không cần giám sát:
- Tệp nhị phân trình duyệt (Chrome for Testing): Sử dụng một tệp nhị phân Chrome for Testing cụ thể, được ghim theo phiên bản để kết quả kiểm thử của bạn có tính xác định trong các lần chạy.
- Chế độ thực thi (Chế độ Chrome Headless): Chạy tệp nhị phân đó ở Chế độ Headless (
--headless) để các quy trình kiểm thử thực thi một cách rõ ràng trong các máy chủ, vùng chứa hoặc quy trình CI mà không có màn hình đồ hoạ. - Trình điều khiển tự động hoá (Puppeteer hoặc ChromeDriver): Điều khiển trình duyệt bằng thư viện tự động hoá như Puppeteer hoặc bất kỳ khung kiểm thử nào khác được kết nối thông qua WebDriver BiDi.
Puppeteer tự động kết nối các phần này. Khi được cài đặt, công cụ này sẽ tải một tệp nhị phân Chrome for Testing tương thích xuống và khởi chạy tệp đó ở Chế độ không có giao diện người dùng theo mặc định.
Khi sử dụng các khung W3C WebDriver (chẳng hạn như Selenium hoặc WebdriverIO), bạn có thể tự động tải xuống một cặp nhị phân Chrome for Testing và ChromeDriver phù hợp, đồng thời truyền cờ --headless để chạy mà không cần giao diện người dùng.