Перейти до основного вмісту

Власні Матчери

WebdriverIO використовує бібліотеку тверджень expect у стилі Jest, яка має спеціальні функції та власні матчери, специфічні для запуску веб- та мобільних тестів. Хоча бібліотека матчерів велика, вона точно не підходить для всіх можливих ситуацій. Тому можна розширити існуючі матчери власними, визначеними вами.

попередження

Хоча наразі немає різниці в тому, як визначаються матчери, специфічні для об'єкта browser або екземпляра element, це може змінитися в майбутньому. Слідкуйте за webdriverio/expect-webdriverio#1408 для отримання додаткової інформації про цей розвиток.

Власні Матчери для Браузера

Щоб зареєструвати власний матчер для браузера, викличте extend на об'єкті expect безпосередньо у вашому spec-файлі або як частину, наприклад, хука before у вашому wdio.conf.js:

customMatchers/example.ts
loading...

Як показано в прикладі, функція матчера приймає очікуваний об'єкт, наприклад, браузер або елемент, як перший параметр і очікуване значення як другий. Потім ви можете використовувати матчер таким чином:

customMatchers/example.ts
loading...

Власні Матчери для Елементів

Подібно до власних матчерів для браузера, матчери елементів не відрізняються. Ось приклад того, як створити власний матчер для перевірки aria-label елемента:

customMatchers/example.ts
loading...

Це дозволяє вам викликати твердження таким чином:

customMatchers/example.ts
loading...

Підтримка TypeScript

Якщо ви використовуєте TypeScript, потрібен ще один крок для забезпечення типової безпеки ваших власних матчерів. Розширивши інтерфейс Matcher вашими власними матчерами, всі проблеми з типами зникнуть:

customMatchers/example.ts
loading...

Якщо ви створили власний асиметричний матчер, ви можете таким чином розширити типи expect:

declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot