Matchers Personalizados
O WebdriverIO usa uma biblioteca de asserção no estilo Jest expect
que vem com recursos especiais e matchers personalizados específicos para executar testes web e mobile. Embora a biblioteca de matchers seja grande, ela certamente não se adequa a todas as situações possíveis. Portanto, é possível estender os matchers existentes com outros personalizados definidos por você.
Embora atualmente não haja diferença em como os matchers são definidos, sejam específicos para o objeto browser
ou uma instância de element, isso certamente pode mudar no futuro. Fique de olho em webdriverio/expect-webdriverio#1408
para mais informações sobre esse desenvolvimento.
Matchers Personalizados para o Browser
Para registrar um matcher personalizado para o browser, chame extend
no objeto expect
diretamente em seu arquivo de spec ou como parte do hook before
em seu wdio.conf.js
:
loading...
Como mostrado no exemplo, a função matcher recebe o objeto esperado, por exemplo, o objeto browser ou element, como primeiro parâmetro e o valor esperado como segundo. Você pode então usar o matcher da seguinte forma:
loading...
Matchers Personalizados para Elementos
Semelhante aos matchers personalizados do browser, os matchers de elementos não diferem. Aqui está um exemplo de como criar um matcher personalizado para verificar o aria-label de um elemento:
loading...
Isso permite que você chame a asserção da seguinte forma:
loading...
Suporte a TypeScript
Se você estiver usando TypeScript, mais um passo é necessário para garantir a segurança de tipos dos seus matchers personalizados. Ao estender a interface Matcher
com seus matchers personalizados, todos os problemas de tipo desaparecem:
loading...
Se você criou um matcher assimétrico personalizado, você pode estender os tipos expect
de forma semelhante:
declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}