خدمة مقارنة الصور (اختبار التراجع البصري)
@wdio/visual-service هي حزمة طرف ثالث، لمزيد من المعلومات يرجى مراجعة GitHub | npm
للحصول على وثائق حول الاختبار البصري مع WebdriverIO، يرجى الرجوع إلى الوثائق. يحتوي هذا المشروع على جميع الوحدات ذات الصلة لإجراء اختبارات بصرية باستخدام WebdriverIO. في دليل ./packages ستجد:
@wdio/visual-testing: خدمة WebdriverIO لدمج الاختبار البصريwebdriver-image-comparison: وحدة مقارنة الصور التي يمكن استخدامها لأطر اختبار أتمتة NodeJS المختلفة التي تدعم بروتوكول WebDriver
مشغل Storybook (تجريبي)
انقر لمعرفة المزيد من الوثائق حول مشغل Storybook التجريبي
مشغل Storybook لا يزال في المرحلة التج ريبية، وسيتم نقل الوثائق لاحقًا إلى صفحات وثائق WebdriverIO.
تدعم هذه الوحدة الآن Storybook مع مشغل Visual جديد. يقوم هذا المشغل تلقائيًا بمسح مثيل Storybook محلي/بعيد وسينشئ لقطات شاشة للعناصر لكل مكون. يمكن القيام بذلك عن طريق إضافة
export const config: WebdriverIO.Config = {
// ...
services: ["visual"],
// ....
};
إلى services الخاصة بك وتشغيل npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook من خلال سطر الأوامر.
سيستخدم Chrome في وضع headless كمتصفح افتراضي.
[!NOTE]
- ستعمل معظم خيارات الاختبار البصري أيضًا مع مشغل Storybook، راجع وثائق WebdriverIO.
- سيقوم مشغل Storybook بتجاوز جميع إمكانياتك ويمكنه التشغيل فقط على المتصفحات التي يدعمها، انظر
--browsers.- لا يدعم مشغل Storybook التكوين الحالي الذي يستخدم إمكانيات Multiremote وسيظهر خطأ.
- يدعم مشغل Storybook فقط ويب سطح المكتب، وليس ويب الجوال.
خيارات خدمة مشغل Storybook
يمكن توفير خيارات الخدمة بهذه الطريقة
export const config: WebdriverIO.Config = {
// ...
services: [
[
'visual',
{
// Some default options
baselineFolder: join(process.cwd(), './__snapshots__/'),
debug: true,
// The storybook options, see cli options for the description
storybook: {
additionalSearchParams: new URLSearchParams({foo: 'bar', abc: 'def'}),
clip: false,
clipSelector: ''#some-id,
numShards: 4,
// `skipStories` can be a string ('example-button--secondary'),
// an array (['example-button--secondary', 'example-button--small'])
// or a regex which needs to be provided as as string ("/.*button.*/gm")
skipStories: ['example-button--secondary', 'example-button--small'],
url: 'https://www.bbc.co.uk/iplayer/storybook/',
version: 6,
// Optional - Allows overriding the baselines path. By default it will group the baselines by category and component (e.g. forms/input/baseline.png)
getStoriesBaselinePath: (category, component) => `path__${category}__${component}`,
},
},
],
],
// ....
}
خيارات سطر أوامر مشغل Storybook
--additionalSearchParams
- النوع:
string - إلزامي: لا
- الافتراضي: ''
- مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --additionalSearchParams="foo=bar&abc=def"
سيضيف معلمات بحث إضافية إلى عنوان URL الخاص بـ Storybook. راجع وثائق URLSearchParams لمزيد من المعلومات. يجب أن تكون السلسلة عبارة عن سلسلة URLSearchParams صالحة.
[!NOTE] هناك حاجة إلى علامات الاقتباس المزدوجة لمنع تفسير
&كفاصل أمر. على سبيل المثال، مع--additionalSearchParams="foo=bar&abc=def"سيقوم بإنشاء عنوان URL التالي لـ Storybook لاختبار القصص:http://storybook.url/iframe.html?id=story-id&foo=bar&abc=def.
--browsers
- النوع:
string - إلزامي: لا
- الافتراضي:
chrome، يمكنك الاختيار منchrome|firefox|edge|safari - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --browsers=chrome,firefox,edge,safari - ملاحظة: متاح فقط من خلال سطر الأوامر
سيستخدم المتصفحات المقدمة لالتقاط لقطات شاشة للمكونات
[!NOTE] تأكد من تثبيت المتصفحات التي تريد التشغيل عليها على جهازك المحلي
--clip
- النوع:
boolean - إلزامي: لا
- الافتراضي:
true - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clip=false
عند تعطيله، سيقوم بإنشاء لقطة شاشة لمنفذ العرض. عند تمكينه، سيقوم بإنشاء لقطات شاشة للعناصر بناءً على --clipSelector مما سيقلل من كمية المساحة البيضاء حول لقطة شاشة المكون ويقلل من حجم لقطة الشاشة.
--clipSelector
- النوع:
string - إلزامي: لا
- الافتراضي:
#storybook-root > :first-childلـ Storybook V7 و#root > :first-child:not(script):not(style)لـ Storybook V6، انظر أيضًا--version - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --clipSelector="#some-id"
هذا هو المحدد الذي سيتم استخدامه:
- لتحديد العنصر الذي سيتم التقاط لقطة الشاشة له
- للعنصر للانتظار ليكون مرئيًا قبل التقاط لقطة شاشة
--devices
- النوع:
string - إلزامي: لا
- الافتراضي: يمكنك الاختيار من
deviceDescriptors.ts - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --devices="iPhone 14 Pro Max","Pixel 3 XL" - ملاحظة: متاح فقط من خلال سطر الأوامر
سيستخدم الأجهزة المقدمة التي تتطابق مع deviceDescriptors.ts لالتقاط لقطات شاشة المكونات
[!NOTE]
- إذا كنت تفتقد تكوين جهاز، فلا تتردد في تقديم طلب ميزة
- سيعمل هذا فقط مع Chrome:
- إذا قدمت
--devicesفستعمل جميع نسخ Chrome في وضع محاكاة الجوال- إذا قدمت أيضًا متصفحات أخرى غير Chrome، مثل
--devices --browsers=firefox,safari,edgeفسيضيف تلقائيًا Chrome في وضع محاكاة الجوال- سينشئ مشغل Storybook افتراضيًا لقطات عنصر، إذا كنت تريد رؤية لقطة شاشة محاكاة الجوال الكاملة، فقدم
--clip=falseمن خلال سطر الأوامر- سيبدو اسم الملف على سبيل المثال مثل
__snapshots__/example/button/desktop_chrome/example-button--large-local-chrome-iPhone-14-Pro-Max-430x932-dpr-3.png- المصدر: اختبار موقع ويب للجوال على سطح المكتب باستخدام محاكاة الجوال يمكن أن يكون مفيدًا، ولكن يجب أن يكون المختبرون على دراية بوجود العديد من الاختلافات الدقيقة مثل:
- وحدة معالجة رسومات مختلفة تمامًا، مما قد يؤدي إلى تغييرات كبيرة في الأداء؛
- واجهة مستخدم الجوال غير محاكاة (على وجه الخصوص، يؤثر إخفاء شريط عنوان URL على ارتفاع الصفحة)؛
- نافذة منبثقة للتمييز (حيث تحدد أحد أهداف اللمس القليلة) غير مدعومة؛
- العديد من واجهات برمجة التطبيقات للأجهزة (على سبيل المثال، حدث تغيير الاتجاه) غير متوفرة.
--headless
- النوع:
boolean - إلزامي: لا
- الافتراضي:
true - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --headless=false - ملاحظة: متاح فقط من خلال سطر الأوامر
هذا سيقوم بتشغيل الاختبارات افتراضيًا في وضع غير مرئي (عندما يدعم المتصفح ذلك) أو يمكن تعطيله
--numShards
- النوع:
number - إلزامي: لا
- الافتراضي:
true - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --numShards=10
سيكون هذا عدد المثيلات المتوازية التي سيتم استخدامها لتشغيل القصص. سيتم تحديد هذا بواسطة maxInstances في ملف wdio.conf الخاص بك.
[!IMPORTANT] عند التشغيل في وضع
headless، لا تزيد العدد إلى أكثر من 20 لمنع عدم الاستقرار بسبب قيود الموارد
--skipStories
- النوع:
string|regex - إلزامي: لا
- الافتراضي: null
- مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --skipStories="/.*button.*/gm"
يمكن أن يكون هذا:
- سلسلة (
example-button--secondary,example-button--small) - أو تعبير منتظم (
"/.*button.*/gm")
لتخطي قصص معينة. استخدم id الخاص بالقصة التي يمكن العثور عليها في عنوان URL للقصة. على سبيل المثال، id في عنوان URL هذا http://localhost:6006/?path=/story/example-page--logged-out هو example-page--logged-out
--url
- النوع:
string - إلزامي: لا
- الافتراضي:
http://127.0.0.1:6006 - مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --url="https://example.com"
عنوان URL حيث يتم استضافة مثيل Storybook الخاص بك.
--version
- النوع:
number - إلزامي: لا
- الافتراضي: 7
- مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --version=6
هذا هو إصدار Storybook، الافتراضي هو 7. هذا مطلوب لمعرفة ما إذا كان يجب استخدام clipSelector الخاص بـ V6.