跳至主要內容

重新執行服務

wdio-rerun-service 是一個協力廠商套件,如需更多資訊,請參閱 GitHub | npm

wdio-rerun-service CI npm npm bundle size GitHub issues

這項服務會追蹤在 WebdriverIO 測試框架中執行的失敗 Mocha 或 Jasmine 測試和 Cucumber 情境。它將允許重新執行失敗或不穩定的測試或情境。

注意:執行 WebdriverIO 版本 5.x6.x 的 Cucumber 框架使用者應使用版本 1.6.x。如果您使用的是最新的 7.x 主要版本,請使用此服務的最新 1.7.x 版本。

重新執行與重試

WebdriverIO 內建的 Cucumber 和 Mocha/Jasmine 的 retry 邏輯有助於處理 Cucumber 和 Mocha/Jasmine 中不穩定的步驟。在每個框架中重試都有注意事項

  • Cucumber:它沒有考慮到某些步驟可能無法在測試的中間重試。執行步驟兩次可能會破壞情境的其餘部分,或者在測試內容中可能無法執行。
  • Mocha/Jasmine:retry 邏輯可以應用於個別測試,但這仍然是即時完成的,可能無法解決時間問題或網路連線問題。

re-run 的主要區別

  • 將重新執行整個 Cucumber 情境,而不僅僅是單一步驟
  • 允許在主要測試執行完成後重新執行整個規格檔案
  • 可以複製並在本機執行 (retry 無法)
  • 仍然可以與 retry 方法結合使用
  • 不需要任何程式碼變更即可將 retry 邏輯應用於不穩定或有問題的測試

建議您花一些時間評估可用的選項。混合解決方案可能是提供最佳實際和可操作測試結果的最佳解決方案。

安裝

最簡單的方式是將 wdio-rerun-service 新增至您 package.json 中的 devDependencies

{
"devDependencies": {
"wdio-rerun-service": "^1.6.2"
}
}

可以使用 npm 安裝

npm install wdio-rerun-service

套件安裝完成後,將其新增至 wdio.conf.js 中的 services 陣列

// wdio.conf.js
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [RerunService, {
// ...
}]
};

有關如何安裝 WebdriverIO 的說明,請參閱此處。

設定

下列選項可以新增至 wdio.conf.js 檔案。若要為服務定義選項,您需要以下列方式將服務新增至 services 清單

// wdio.conf.js
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
// Re-run service options here...
}]
],
// ...
};

rerunDataDir

執行期間將保留所有重新執行 JSON 資料的目錄。

類型:String

預設值:./results/rerun

範例

const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
rerunDataDir: './custom-rerun-directory'
}]
],
// ...
}

rerunScriptPath

寫入重新執行 Bash 指令碼的路徑。

類型:String

預設值:./rerun.sh

範例

const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
rerunScriptPath: './custom-path-for-rerun.sh'
}]
],
// ...
}

ignoredTags

(僅限 Cucumber) 要排除的 Cucumber 標籤集。如果情境包含標籤,重新執行服務將會跳過分析。

類型:Array

預設值:[]

範例

const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
ignoredTags: ['@known_bug']
}]
],
// ...
}

commandPrefix

將新增至產生的重新執行指令的前置詞。

類型:String

預設值:''

範例

const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
commandPrefix: "VARIABLE=true"
}]
],
// ...
}

歡迎!我能如何幫您?

WebdriverIO AI Copilot