Pular para o conteúdo principal

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ê.

aviso

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:

customMatchers/example.ts
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:

customMatchers/example.ts
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:

customMatchers/example.ts
loading...

Isso permite que você chame a asserção da seguinte forma:

customMatchers/example.ts
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:

customMatchers/example.ts
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;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot