پرش به محتوای اصلی

wdio-video-reporter یک پکیج شخص ثالث است، برای اطلاعات بیشتر لطفا به GitHub | npm مراجعه کنید

Logo

این یک گزارش‌دهنده برای Webdriver IO v6 و بالاتر است که ویدیوهایی از اجرای تست‌های wdio شما تولید می‌کند. اگر از allure استفاده می‌کنید، موارد تست به صورت خودکار با ویدیوها تزئین می‌شوند. (برای Webdriver IO v5، لطفاً از wdio-video-reporter نسخه ^2.0.0 استفاده کنید.)

ویدیوها در wdio.config.outputDir قرار می‌گیرند

گزارش Allure نمونه با ویدیوهای گنجانده شده در تست‌های ناموفق را در اینجا مشاهده کنید: https://presidenten.github.io/wdio-video-reporter-example-report/

example-allure-report

مزایا:

  • ویدیوهای خوب در گزارش‌های allure شما
  • ویدیوهای با سرعت مناسب انسانی، حتی با وجود اینکه تست‌ها سریع هستند
  • با Selenium grid کار می‌کند
  • با تمام وب‌درایورهایی که از saveScreenshot پشتیبانی می‌کنند، کار می‌کند
  • در مرورگرهای دسکتاپ زیر با استفاده از Selenium 3.141.59 تأیید شده است:
    • Chrome
    • Firefox
    • Safari
    • Internet Explorer 11
    • Microsoft Edge
  • در دستگاه‌های ios و android زیر با Appium 1.13.0-beta3 تأیید شده است:
    • Iphone 8
    • Ipad Gen 6
    • Samsung galaxy S9
    • Samsung galaxy tab A10

معایب:

  • با گرفتن اسکرین‌شات پس از "اقدامات" کار می‌کند، که تست‌ها را کمی کندتر می‌کند. این با انتخاب دقیق پیام‌های jsonWireProtocol که باید منجر به اسکرین‌شات شوند، کاهش می‌یابد
  • درایورهای Selenium جعبه‌های هشدار و پنجره‌های پاپ‌آپ را در اسکرین‌شات‌ها نمایش نمی‌دهند، بنابراین آنها در ویدیوها قابل مشاهده نیستند

شروع سریع

قالب ساده را در wdio-template بررسی کنید تا به سرعت شروع کنید.

یکی از مخازن را کلون کرده و وابستگی‌ها را با yarn یا npm install نصب کنید. سپس yarn e2e یا npm run e2e را در دایرکتوری demo اجرا کرده و در نهایت yarn report یا npm run report را برای مشاهده گزارش allure اجرا کنید.

نصب

نصب گزارشگر

yarn add wdio-video-reporter یا npm install wdio-video-reporter

افزودن گزارشگر به پیکربندی

در بالای فایل wdio.conf.js، کتابخانه را import کنید:

const video = require('wdio-video-reporter');

سپس گزارشگر ویدیو را به پیکربندی در ویژگی reporters اضافه کنید:

 reporters: [
[video, {
saveAllVideos: false, // If true, also saves videos for successful test cases
videoSlowdownMultiplier: 3, // Higher to get slower videos, lower for faster videos [Value 1-100]
}],
],

استفاده با Allure

افزودن گزارشگر Allure، به طور خودکار گزارش‌ها را با ویدیوها بدون نیاز به پیکربندی اضافی به‌روز می‌کند :-)

 reporters: [
[video, {
saveAllVideos: false, // If true, also saves videos for successful test cases
videoSlowdownMultiplier: 3, // Higher to get slower videos, lower for faster videos [Value 1-100]
}],
['allure', {
outputDir: './_results_/allure-raw',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: true,
}],
],

پیکربندی

پارامترهای پیکربندی معمولی

اکثر کاربران ممکن است بخواهند این موارد را تنظیم کنند

  • saveAllVideos برای ذخیره ویدیوها برای تست‌های موفق، روی true تنظیم کنید. پیش‌فرض: false
  • videoSlowdownMultiplier عدد صحیح بین [1-100]. اگر ویدیوها خیلی سریع پخش می‌شوند، افزایش دهید. پیش‌فرض: 3
  • videoRenderTimeout حداکثر ثانیه‌ها برای انتظار رندر ویدیو. پیش‌فرض: 5
  • outputDir اگر تنظیم نشده باشد، از wdio.config.outputDir استفاده می‌کند. پیش‌فرض: undefined
  • outputDir اگر تنظیم نشده باشد، از wdio.config.outputDir استفاده می‌کند. پیش‌فرض: undefined
  • maxTestNameCharacters حداکثر طول نام تست. پیش‌فرض: 250

پارامترهای پیکربندی پیشرفته

کاربران پیشرفته که می‌خواهند زمان‌بندی اسکرین‌گرب موتور را تغییر دهند، می‌توانند این موارد را ویرایش کنند. این آرایه‌ها ممکن است با آخرین کلمه پیام jsonWireProtocol پر شوند، یعنی /session/:sessionId/buttondown.

  • addExcludedActions اقداماتی را اضافه کنید که اسکرین‌شات در آنها غیرضروری است. پیش‌فرض: []
  • addJsonWireActions اقداماتی را اضافه کنید که اسکرین‌شات در آنها وجود ندارد. پیش‌فرض: []
  • recordAllActions فیلتر کردن را نادیده بگیرید و همه چیز را اسکرین‌شات کنید. (توصیه نمی‌شود) پیش‌فرض: false

برای مشاهده پیام‌های پردازش شده، wdio.config.logLevel: 'debug' را تنظیم کرده و outputDir/wdio-X-Y-Video-reporter.log را بررسی کنید. این همچنین دایرکتوری خروجی اسکرین‌شات‌ها را برای بررسی دست نخورده باقی می‌گذارد

برای جلوگیری از لاگ گیری اضافی و دریافت فقط فایل‌های ویدیویی، wdio.config.logLevel: 'silent' را تنظیم کنید.

پشتیبانی از Cucumber

اگر از گزارشگر Allure استفاده می‌کنید، باید اطمینان حاصل کنید که موارد زیر را انجام می‌دهید:

  • به جای استفاده از assertions داخلی node از chai استفاده کنید، در غیر این صورت تست‌های ناموفق در تعاریف مراحل شما به عنوان خراب گزارش می‌شوند
  • useCucumberStepReporter: true را به گزینه Allure در فایل wdio.conf.js اضافه کنید، یک پیکربندی معمولی به این شکل خواهد بود:
  reporters: [
[video, {
saveAllVideos: false, // If true, also saves videos for successful test cases
videoSlowdownMultiplier: 3, // Higher to get slower videos, lower for faster videos [Value 1-100]
}],
['allure', {
outputDir: './_results_/allure-raw',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: true,
useCucumberStepReporter: true
}],
],

برای یک مثال کامل، شاخه cucumber را در wdio-template بررسی کنید

راه‌اندازی Appium

از نسخه v1.2.4 wdio-video-reporter پشتیبانی برای کمک به Allure در تمایز بین مرورگرهای سافاری و کروم در دسکتاپ و دستگاه‌ها وجود دارد. گزارشگر از ویژگی سفارشی deviceType برای شناسایی دستگاه‌های مختلف استفاده می‌کند. مقادیر توصیه شده phone و tablet هستند. توصیه می‌شود که browserVersion را نیز برای تمام مرورگرها برای جلوگیری از یک اشکال در وب‌درایور Chrome هنگام استفاده از دستگاه‌ها در همان شبکه Selenium grid به عنوان مرورگرهای Chrome دسکتاپ اضافه کنید.

فایل‌های ویدیویی تولید شده نیز deviceType را به نام مرورگر اضافه می‌کنند.

مثال پیکربندی appium:

  "capabilities": [
{
...
"deviceType": "phone",
"browserVersion": "73.0-phone-1",
...
}
],

و wdio-config.json:

  "capabilities": [
{
...
"appium:deviceType": "phone",
"browserVersion": "73.0-phone-1",
...
},
],

مشارکت

فورک کنید، تغییرات را ایجاد کنید، برخی تست‌ها را بنویسید، لینت کنید، تست‌ها را اجرا کنید، بسازید و در دمو تأیید کنید که تغییرات به درستی کار می‌کنند، سپس یک PR ایجاد کنید.

پوشه دمو با نسخه ساخته شده کتابخانه کار می‌کند، بنابراین اگر ویژگی‌های جدیدی اضافه کردید و می‌خواهید آنها را امتحان کنید، حتماً آن را بسازید.

تشکر

تشکر از Johnson E برای اصلاح پشتیبانی Cucumber که بسیاری از کاربران درخواست کرده بودند.

Welcome! How can I help?

WebdriverIO AI Copilot