Turborepo

Playwright

Playwright 為現代 Web 應用程式提供可靠的端對端測試。

我們建議為您想在單一儲存庫中執行的每個測試套件建立一個 Playwright 套件。這可能表示根據您的需求,將套件分成每個應用程式、每個網域或其他方式。如果您不確定,請從為每個應用程式建立一個 Playwright 套件開始。

處理 Playwright 的環境變數

Playwright 需要一些環境變數才能正確執行。為了確保這些變數在您的 嚴格模式中的任務中可用,您需要使用端對端任務中的 passThroughEnv 或全域的 globalPassThroughEnv 將它們新增至您的傳遞變數,具體取決於您的範圍偏好設定。

以下使用 passThroughEnv 的組態將允許開頭為 PLAYWRIGHT_ 的環境變數進入e2e 任務,且不會影響雜湊

./turbo.json
{
  "tasks": {
    "e2e": {
      "passThroughEnv": ["PLAYWRIGHT_*"]
    }
  }
}

請注意,由於我們不希望在這些 Playwright 內部變數變更時錯過快取,因此使用傳遞變數。例如,PLAYWRIGHT_BROWSERS_PATH 用於尋找 Playwright 使用的瀏覽器二進位檔,如果此位置變更,我們不希望錯過快取。

設計任務圖

我們想要確保我們的端對端套件有適當的快取行為。具體而言,我們想要確保在以下幾個關鍵情況下出現快取遺失

  • 如果測試套件變更,則會錯過快取。
  • 如果套件測試的程式碼變更,則會錯過快取。

當測試程式碼變更時,任務的雜湊將會變更,因此將自然地滿足第一個需求。但是,第二個需求表示您需要確保端對端測試取決於應用程式原始程式碼的變更。

這種關係可以在 turbo.json 和端對端套件的 package.json 中表示。

./turbo.json
{
  "tasks": {
    "build": {
      "dependsOn": ["^build"]
    },
    "e2e": {
      "dependsOn": ["^build"] 
    }
  }
}

稍後,當您想要執行端對端測試時,請使用 --only 旗標來執行端對端測試,而無需先執行應用程式的建置。例如,您的命令可能看起來像 turbo run e2e --filter=@repo/playwright-myapp --only

共用 Playwright 公用程式

您也可以為端對端測試套件中需要的共用公用程式建立一個通用套件。我們建議在此共用套件中使用 peerDependencies,以便您可以存取消費者中使用的 Playwright,而無需將 Playwright 安裝到共用套件本身。

./packages/playwright-utilities/package.json
{
 "name": "@repo/playwright-utilities",
 "peerDependencies": {
   "playwright": "*"
}
}

小時

總計節省的運算時間
開始使用
遠端快取 →

本頁內容