Skip to content

建立 2026-09-15 更新 2026-09-15

平行執行與 CI/CD 整合

測試案例變多後,執行時間會直接影響開發與部署的節奏。Playwright 預設就支援平行執行,並且很容易整合進 CI/CD 流程,讓每次提交程式碼都能自動跑完整測試。

平行執行的兩個層次

Playwright 的平行化分成兩層:

  1. 檔案層級(Workers):不同測試檔案會分配給多個 Worker 行程同時執行,數量由 workers 設定(預設約為 CPU 核心數的一半)。
  2. 同檔案內(fullyParallel):預設同一個檔案內的測試會依序執行;設定 fullyParallel: true 後,同一檔案內的測試也會平行執行,適合測試案例之間完全獨立、沒有共用狀態的專案。
export default defineConfig({
  fullyParallel: true,
  workers: process.env.CI ? 2 : undefined,
});

平行執行能大幅縮短整體時間,但前提是測試之間必須互不干擾——例如不要共用同一筆會被修改的資料庫資料,這也是每個測試預設拿到獨立 context(見 Fixtures 與 Hooks)如此重要的原因。CI 環境資源有限,workers 通常會設得比本機保守,避免資源競爭反而拖慢速度或造成不穩定。

GitHub Actions 整合

npm init playwright@latest 建立專案時,若選擇加入 GitHub Actions,會自動產生類似以下的工作流程:

# .github/workflows/playwright.yml
name: Playwright Tests
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: lts/*
      - name: Install dependencies
        run: npm ci
      - name: Install Playwright Browsers
        run: npx playwright install --with-deps
      - name: Run Playwright tests
        run: npx playwright test
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 30

幾個重點:

  • npx playwright install --with-deps 會下載瀏覽器,並安裝 Linux 環境所需的系統依賴套件。
  • upload-artifact 搭配 if: always(),確保即使測試失敗,HTML 報表(包含失敗測試的 Trace)也會上傳,方便之後下載檢視,這正是 Trace Viewer 追蹤除錯 在 CI 環境派上用場的地方。
  • 若專案較大,可以搭配 --shard 參數把測試切分到多個 Job 並行執行,進一步縮短總時間:
npx playwright test --shard=1/4

使用官方 Docker Image

若 CI 環境不是 GitHub Actions(例如 GitLab CI、Jenkins),官方提供預先安裝好瀏覽器與系統依賴的 Docker Image,避免每次都要重新安裝:

docker run --rm -v $(pwd):/work -w /work mcr.microsoft.com/playwright:v1.55.0-noble \
  npx playwright test

使用官方 Image 的另一個好處是環境一致:本機、CI 若都用同一個版本的 Image,能減少「本機過、CI 卻失敗」這類環境差異造成的問題,對 視覺比對 這類對渲染環境敏感的測試尤其重要。

延伸閱讀

完成 CI 整合後,建議回頭瀏覽 影音教學資源,透過官方與社群的實際操作影片,鞏固前面幾個章節學到的觀念。