Cấu hình Hệ thống Windows Tối ưu cho Playwright

Thiết lập Môi trường Windows để Playwright Vận hành Ổn Định

Hạ tầng kiểm thử tự động trong doanh nghiệp thường sử dụng máy chủ Windows hoặc Jenkins agent chạy trên nền tảng này. Mặc dù Playwright hỗ trợ đầy đủ cho Windows, nhưng để tránh các sự cố tiềm ẩn liên quan đến thư viện hệ thống, chế độ không giao diện (headless), tài khoản dịch vụ và độ dài đường dẫn, người dùng cần thực hiện một số bước cấu hình đặc thù. Nội dung dưới đây tập trung vào các giải pháp kỹ thuật cho môi trường Windows.

1. Điều kiện Tiên quyết về Hệ thống

Đảm bảo máy chủ đáp ứng các thông số kỹ thuật tối thiểu trước khi cài đặt:

Thành phần Yêu cầu Cấu hình
Hệ điều hành Windows 10/11 (64-bit) hoặc Windows Server 2016 trở lên
Python Phiên bản 3.8 đến 3.12 (Khuyến nghị dùng 3.10+
RAM Tối thiểu 4 GB (Tăng cường nếu chạy song song nhiều browser)
Dung lượng ổ cứng Còn trống ít nhất 2 GB (Dành cho engine trình duyệt)

2. Quy trình Cài đặt

Thực hiện tuần tự các bước sau để thiết lập môi trường thực thi:

:: 1. Cài đặt Python (Nhớ tích chọn Add to PATH)
:: Tải từ https://www.python.org/downloads/windows/

:: 2. Cài đặt các gói thư viện cần thiết
python -m pip install playwright pytest pytest-playwright

:: 3. Tải browser kèm theo các phụ thuộc hệ thống (Cần quyền Admin)
playwright install --with-deps chromium

:: Lưu ý: Nếu chỉ cần engine mà không cài deps hệ thống:
:: playwright install chromium firefox webkit

Lệnh --with-deps yêu cầu quyền quản trị viên để cài đặt các runtime thiếu hụt thông qua winget (ví dụ: VC++ Redistributable). Trong trường hợp máy bị hạn chế mạng, việc cài thủ công Microsoft Visual C++ Redistributable có thể khắc phục hầu hết lỗi khởi động.

3. Xử lý các Lỗi Khởi động Thường gặp

Thông báo Lỗi Nguyên nhân Phương án Khắc phục
Microsoft Visual C++ Runtime error Thiếu thư viện chạy VC++ Cài đặt VC++ Redistributable hoặc chạy lại lệnh --with-deps
The system cannot find the file specified Trình duyệt chưa được tải về Thực thi lại lệnh playwright install
Target page, context or browser has been closed Vấn đề handle cửa sổ ở chế độ headless Sử dụng channel="msedge" hoặc nâng cấp version Playwright
Executable doesn't exist Biến môi trường PATH không trỏ đúng Kiểm tra sự tồn tại của thư mục %USERPROFILE%\AppData\Local\ms-playwright
Lỗi đường dẫn tiếng Việt/độ dài Giới hạn ký tự đường dẫn Windows Di chuyển project vào đường dẫn ngắn (ví dụ: C:\tests), bật hỗ trợ long path

4. Cấu hình Chế độ Headless

Trong các kịch bản CI/CD hoặc lên lịch chạy tự động, chế độ không giao diện là bắt buộc. Dưới đây là ví dụ về cách khởi tạo browser an toàn:

from playwright.sync_api import sync_playwright

def execute_audit():
    with sync_playwright() as playwright:
        # Khởi chạy browser ẩn giao diện
        browser_instance = playwright.chromium.launch(headless=True)
        
        # Tạo context với viewport cụ thể để đảm bảo ảnh chụp chuẩn
        context = browser_instance.new_context(viewport={"width": 1920, "height": 1080})
        tab = context.new_page()
        
        tab.goto("https://example.com")
        tab.emulate_media(media="screen")
        tab.screenshot(path="capture.png")
        
        browser_instance.close()

Lưu ý quan trọng:

  • Trên Windows Server bản rút gọn, chế độ headless vẫn có thể yêu cầu cài đặt gói "Desktop Experience" hoặc bổ sung font chữ để tránh lỗi ký tự tiếng Việt bị vỡ khi chụp ảnh màn hình.
  • Nếu ảnh chụp bị trắng, hãy thiết lập rõ ràng viewport và thêm các bước chờ (wait strategy) phù hợp.

5. Vấn đề khi Chạy qua Jenkins hoặc Task Scheduler

5.1. Tài khoản Dịch vụ thiếu Session Desktop

Khi Jenkins chạy dưới dạng Windows Service, nó không có phiên làm việc tương tác (interactive desktop), dẫn đến việc chế độ headed bị lỗi. Có hai hướng xử lý:

  • Phương án tối ưu: Sử dụng chế độ headless cho toàn bộ test UI.
  • Phương án thay thế: Cấu hình Jenkins agent chạy dưới dạng process đăng nhập tương tác (không phải service) hoặc khởi động qua javaws để có session desktop.

5.2. Thiết lập Task Scheduler

Để lên lịch chạy script vào ban đêm, sử dụng lệnh sau (yêu cầu tích chọn "Run whether user is logged on or not" và lưu mật khẩu):

:: Tạo task chạy lúc 3:30 sáng hàng ngày
schtasks /create /tn "AutoTestJob" ^
  /tr "D:\automation_project\run.bat" ^
  /sc daily /st 03:30 ^
  /ru "ADMIN\svc_account" /rp "password"

Nội dung file run.bat:

@echo off
cd /d D:\automation_project
.\venv\Scripts\activate.bat
python -m pytest --browser chromium --junitxml=report.xml -v

5.3. Quản lý Môi trường Ảo (venv)

Nên sử dụng venv để cô lập các thư viện, tránh xung đột với Python hệ thống:

python -m venv venv
.\venv\Scripts\activate
pip install playwright pytest pytest-playwright
playwright install chromium

6. Cấu hình Proxy và Tường lửa

Mạng nội bộ doanh nghiệp thường yêu cầu proxy để truy cập internet, khiến việc tải browser thất bại. Hãy thiết lập biến môi trường trước khi cài đặt:

:: Cấu hình proxy trước khi tải browser
set HTTPS_PROXY=http://proxy.company.com:8080
set HTTP_PROXY=http://proxy.company.com:8080
playwright install chromium

Nếu hệ thống cần test nằm trong mạng nội bộ, đảm bảo process Playwright có quyền truy cập đến địa chỉ đích (có thể cấu hình whitelist trong file .env).

7. Khắc phục Lỗi Font chữ Tiếng Việt

Các phiên bản Windows Server tối giản thường thiếu font chữ hiển thị, khiến nội dung tiếng Việt trên ảnh chụp bị ô vuông. Giải pháp:

  1. Vào Control Panel → Region → Administrative → Change system locale → Tích chọn "Beta: Use Unicode UTF-8".
  2. Cài đặt bổ sung các font phổ biến như Microsoft YaHei hoặc Source Han Sans.
  3. Khởi động lại máy để áp dụng thay đổi.

8. Danh sách Kiểm tra Cấu hình (Checklist)

Trạng thái Hạng mục Kiểm tra
Python đã được thêm vào PATH, lệnh python --version hoạt động
Lệnh playwright install --with-deps chromium hoàn tất thành công
Chế độ headless chụp ảnh màn hình bình thường (đã test cục bộ)
Nếu chạy bằng service account, đã chuyển sang headless hoặc agent tương tác
Biến môi trường HTTPS_PROXY đã được thiết lập đúng
Font chữ hiển thị tiếng Việt chính xác trên ảnh chụp
Đường dẫn project ngắn, không chứa ký tự đặc biệt hoặc tiếng Việt

Các vấn đề trên Windows thường xoay quanh bốn yếu tố: thư viện hệ thống, phiên làm việc desktop, font chữ và độ dài đường dẫn. Xử lý dứt điểm các điểm này sẽ giúp Playwright hoạt động ổn định tương đương trên Linux.

Thẻ: Playwright windows-automation automated-testing ci-cd python-scripting

Đăng vào ngày 17 tháng 8 lúc 02:09