持續整合
簡介
Playwright 測試可以在 CI 環境中執行。我們為常見的 CI 提供者建立了範例配置。
在 CI 上執行測試的 3 個步驟
-
確保 CI 代理程式可以執行瀏覽器:在 Linux 代理程式中使用我們的 Docker 映像,或使用 CLI 安裝您的相依性。
-
安裝 Playwright:
dotnet build
pwsh bin/Debug/netX/playwright.ps1 install --with-deps -
執行您的測試:
dotnet test
CI 配置
命令列工具可用於在 CI 中安裝所有作業系統相依性。
GitHub Actions
在 push/pull_request 時
測試將在 main/master 分支上的 push 或 pull request 時執行。 工作流程將安裝所有相依性、安裝 Playwright,然後執行測試。
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Build & Install
run: dotnet build
- name: Ensure browsers are installed
run: pwsh bin/Debug/net8.0/playwright.ps1 install --with-deps
- name: Run your tests
run: dotnet test
透過容器
GitHub Actions 支援使用 容器中執行工作,方法是使用 jobs.<job_id>.container
選項。這對於不污染具有相依性的主機環境,以及針對跨不同作業系統的螢幕截圖/視覺迴歸測試具有一致的環境非常有用。
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
playwright:
name: 'Playwright Tests'
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright/dotnet:v1.49.0-noble
options: --user 1001
steps:
- uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- run: dotnet build
- name: Run your tests
run: dotnet test
在部署時
這將在 GitHub 部署進入 success
狀態後開始測試。 諸如 Vercel 之類的服务使用此模式,因此您可以在其部署的環境上執行端對端測試。
name: Playwright Tests
on:
deployment_status:
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
if: github.event.deployment_status.state == 'success'
steps:
- uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- run: dotnet build
- name: Ensure browsers are installed
run: pwsh bin/Debug/net8.0/playwright.ps1 install --with-deps
- name: Run tests
run: dotnet test
env:
# This might depend on your test-runner
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }}
Docker
我們有一個預先建置的 Docker 映像,可以直接使用,也可以作為更新現有 Docker 定義的參考。
建議的配置
- 當使用 Chromium 時,也建議使用
--ipc=host
。 如果沒有它,Chromium 可能會耗盡記憶體並崩潰。 在 Docker 文件中了解有關此選項的更多資訊。 - 啟動 Chromium 時看到其他奇怪的錯誤? 在本機開發時,請嘗試使用
docker run --cap-add=SYS_ADMIN
執行您的容器。 - 建議使用
--init
Docker 標誌或 dumb-init,以避免對 PID=1 的進程進行特殊處理。 這是殭屍進程的常見原因。
Azure Pipelines
對於 Windows 或 macOS 代理程式,無需額外配置,只需安裝 Playwright 並執行您的測試即可。
對於 Linux 代理程式,您可以使用我們的 Docker 容器與 Azure Pipelines 支援執行容器化工作。 或者,您可以使用命令列工具來安裝所有必要的相依性。
若要執行 Playwright 測試,請使用此管線任務
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseDotNet@2
inputs:
packageType: sdk
version: '8.0.x'
displayName: 'Use .NET SDK'
- script: dotnet build --configuration Release
displayName: 'Build'
- script: pwsh bin/Release/net8.0/playwright.ps1 install --with-deps
displayName: 'Install Playwright browsers'
- script: dotnet test --configuration Release
displayName: 'Run tests'
Azure Pipelines (容器化)
trigger:
- main
pool:
vmImage: ubuntu-latest
container: mcr.microsoft.com/playwright/dotnet:v1.49.0-noble
steps:
- task: UseDotNet@2
inputs:
packageType: sdk
version: '8.0.x'
displayName: 'Use .NET SDK'
- script: dotnet build --configuration Release
displayName: 'Build'
- script: dotnet test --configuration Release
displayName: 'Run tests'
CircleCI
在 CircleCI 上執行 Playwright 與在 GitHub Actions 上執行非常相似。 為了指定預先建置的 Playwright Docker 映像,只需在您的配置中使用 docker:
修改代理程式定義,如下所示
executors:
pw-noble-development:
docker:
- image: mcr.microsoft.com/playwright/dotnet:v1.49.0-noble
注意:當使用 docker 代理程式定義時,您正在指定 playwright 運行的資源類別到 'medium' 層級 此處。 Playwright 的預設行為是將工作進程數設定為偵測到的核心計數(medium 層級的情況下為 2 個)。 將工作進程數覆寫為大於此數字將導致不必要的逾時和失敗。
Jenkins
Jenkins 支援用於管線的 Docker 代理程式。 使用 Playwright Docker 映像在 Jenkins 上執行測試。
pipeline {
agent { docker { image 'mcr.microsoft.com/playwright/dotnet:v1.49.0-noble' } }
stages {
stage('e2e-tests') {
steps {
sh 'dotnet build'
sh 'dotnet test'
}
}
}
}
Bitbucket Pipelines
Bitbucket Pipelines 可以使用公共 Docker 映像作為建置環境。 若要在 Bitbucket 上執行 Playwright 測試,請使用我們的公共 Docker 映像(請參閱 Dockerfile)。
image: mcr.microsoft.com/playwright/dotnet:v1.49.0-noble
GitLab CI
若要在 GitLab 上執行 Playwright 測試,請使用我們的公共 Docker 映像(請參閱 Dockerfile)。
快取瀏覽器
不建議快取瀏覽器二進位檔案,因為還原快取所需的時間與下載二進位檔案所需的時間相當。 尤其是在 Linux 下,需要安裝作業系統相依性,這些相依性是不可快取的。
如果您仍然想要在 CI 執行之間快取瀏覽器二進位檔案,請根據 Playwright 版本的雜湊值,在您的 CI 配置中快取這些目錄。
偵錯瀏覽器啟動
Playwright 支援 DEBUG
環境變數,以在執行期間輸出偵錯日誌。 將其設定為 pw:browser
在偵錯 Error: Failed to launch browser
錯誤時很有幫助。
DEBUG=pw:browser dotnet test
以 Headed 模式執行
預設情況下,Playwright 以無頭模式啟動瀏覽器。 請參閱我們的執行測試指南,了解如何在 Headed 模式下執行測試。
在 Linux 代理程式上,Headed 執行需要安裝 Xvfb。 我們的Docker 映像和 GitHub Action 已預先安裝 Xvfb。 若要使用 Xvfb 在 Headed 模式下執行瀏覽器,請在實際命令之前新增 xvfb-run
。
xvfb-run dotnet test