重新執行服務
這項服務會追蹤在 WebdriverIO 測試框架中執行的失敗 Mocha 或 Jasmine 測試和 Cucumber 情境。它將允許重新執行失敗或不穩定的測試或情境。
注意:執行 WebdriverIO 版本 5.x
和 6.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"
}]
],
// ...
}