Пользовательские Матчеры
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;
}
}
}