خدمة اختبار OCR
@wdio/ocr-service هي حزمة تابعة لطرف ثالث، لمزيد من المعلومات يرجى الاطلاع على GitHub | npm
للحصول على وثائق حول الاختبار المرئي مع WebdriverIO، يرجى الرجوع إلى الوثائق. يحتوي هذا المشروع على جميع الوحدات ذات الصلة لتشغيل الاختبارات المرئية باستخدام WebdriverIO. ضمن دليل ./packages
ستجد:
@wdio/visual-testing
: خدمة WebdriverIO لدمج الاختبار المرئيwebdriver-image-comparison
: وحدة مقارنة الصور التي يمكن استخدامها لأطر عمل اختبار NodeJS المختلفة التي تدعم بروتوكول WebDriver
مشغل Storybook (تجريبي)
انقر لمعرفة المزيد من الوثائق حول مشغل Storybook التجريبي
مشغل Storybook لا يزال في مرحلة تجريبية، وستنتقل الوثائق لاحقًا إلى صفحات وثائق WebdriverIO.
تدعم هذه الوحدة الآن Storybook مع مشغل مرئي جديد. يقوم هذا المشغل تلقائيًا بفحص مثيل 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 على ارتفاع الصفحة)؛
- النافذة المنبثقة للتوضيح (حيث تختار أحد الأهداف التي يمكن لمسها) غير مدعومة؛
- العديد من واجهات برمجة التطبيقات للأجهزة (على سبيل المثال، حدث orientationchange) غير متوفرة.
--headless
- النوع:
boolean
- إلزامي: لا
- افتراضي:
true
- مثال:
npx wdio tests/configs/wdio.local.desktop.storybook.conf.ts --storybook --headless=false
- ملاحظة: متوفر فقط من خلال واجهة سطر الأوامر
سيقوم هذا بتشغيل الاختبارات افتراضيًا في وضع headless (عندما يدعم المتصفح ذلك) أو يمكن تعطيله
--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