Пользовательские Матчеры
WebdriverIO использует библиотеку утверждений в стиле Jest expect, которая поставляется со специальными функциями и пользовательскими матчерами, предназначенными для запуска веб и мобильных тестов. Хотя библиотека матчеров большая, она определенно не подходит для всех возможных ситуаций. Поэтому возможно расширить существующие матчеры собственными, определенными вами.
Хотя в настоящее время нет различий в определении матчеров, специфичных для объекта browser или экземпляра element, это, безусловно, может измениться в будущем. Следите за webdriverio/expect-webdriverio#1408 для получения дополнительной информации об этой разработке.
Пользовательские Матчеры для Браузера
Чтобы зарегистрировать пользовательский матчер для браузера, вызовите extend на объекте expect либо непосредственно в вашем spec-файле, либо как часть, например, хука before в вашем wdio.conf.js:
loading...
Как показано в примере, функция матчера принимает ожидаемый объект, например, объект браузера или элемента, в качестве первого параметра и ожидаемое значение в качестве второго. Затем вы можете использовать матчер следующим образом:
loading...
Пользовательские Матчеры для Элементов
Аналогично пользовательским матчерам для браузера, матчеры для элементов не отличаются. Вот пример того, как создать пользовательский матчер для проверки атрибута aria-label элемента:
loading...
Это позволяет вам вызывать утверждение следующим образом:
loading...
Поддержка TypeScript
Если вы используете TypeScript, требуется еще один шаг для обеспечения типобезопасности ваших пользовательских матчеров. Расширяя интерфейс Matcher своими пользовательскими матчерами, все проблемы с типами исчезают:
loading...
Если вы создали пользовательский асимметричный матчер, вы можете аналогичным образом расширить типы expect следующим образом:
declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}