سرویس اجرای مجدد
wdio-rerun-service یک پکیج شخص ثالث است، برای اطلاعات بیشتر لطفاً به GitHub | npm مراجعه کنید
این سرویس تستهای ناموفق Mocha یا Jasmine و سناریوهای Cucumber را که در چارچوب تست WebdriverIO اجرا شدهاند، ردیابی میکند. این امکان را فراهم میکند که تستها یا سناریوهای ناموفق یا ناپایدار مجدداً اجرا شوند.
نکته: کاربران چارچوب Cucumber که از نسخههای 5.x
و 6.x
WebdriverIO استفاده میکنند باید از نسخه 1.6.x
استفاده کنند. اگر از آخرین نسخه اصلی 7.x
استفاده میکنید، از آخرین نسخه 1.7.x
این سرویس استفاده کنید.
Re-run در مقابل Retry
منطق retry
داخلی WebdriverIO برای Cucumber و Mocha/Jasmine برای رسیدگی به مراحل ناپایدار مفید است. بازنشانی در هر چارچوب معایبی دارد:
- Cucumber: در نظر نمیگیرد که برخی از مراحل ممکن است قابل تکرار در میانه یک تست نباشند. اجرای یک مرحله دو بار ممکن است بقیه سناریو را خراب کند یا ممکن است در متن تست امکانپذیر نباشد.
- Mocha/Jasmine: منطق
retry
ممکن است برای یک تست منفرد اعمال شود، اما این همچنان در زمان واقعی انجام میشود و ممکن است مشکلات زمانی یا مشکلات اتصال شبکه را در نظر نگیرد.
تمایزهای اصلی re-run
:
- یک سناریوی کامل Cucumber را مجدداً اجرا میکند و نه فقط یک مرحله واحد
- امکان اجرای مجدد کل فایل spec را پس از اتمام اجرای تست اصلی فراهم میکند
- میتواند به صورت محلی کپی و اجرا شود (
retry
نمیتواند) - همچنان میتواند در ترکیب با روشهای
retry
استفاده شود - برای اعمال منطق
retry
به تستهای ناپایدار یا مشکلدار نیازی به تغییر کد ندارد
توصیه میشود برای ارزیابی گزینههای موجود زمان بگذارید. یک راه حل ترکیبی ممکن است بهترین راه حل برای ارائه بهترین نتایج تست واقعی و قابل اجرا باشد.
نصب
سادهترین راه، افزودن wdio-rerun-service
به devDependencies
در package.json
شماست.
{
"devDependencies": {
"wdio-rerun-service": "^1.6.2"
}
}
میتوان آن را با استفاده از npm
نصب کرد:
npm install wdio-rerun-service
پس از تکمیل نصب بسته، آن را به آرایه services
در wdio.conf.js
اضافه کنید:
// 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, {
// گزینههای سرویس اجرای مجدد در اینجا...
}]
],
// ...
};
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"
}]
],
// ...
}