Перейти к основному содержимому

Пользовательские Матчеры

WebdriverIO использует библиотеку утверждений в стиле Jest expect, которая поставляется со специальными функциями и пользовательскими матчерами, предназначенными для запуска веб и мобильных тестов. Хотя библиотека матчеров большая, она определенно не подходит для всех возможных ситуаций. Поэтому возможно расширить существующие матчеры собственными, определенными вами.

предупреждение

Хотя в настоящее время нет различий в определении матчеров, специфичных для объекта 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