Hoppa till huvudinnehåll

Anpassade Matchers

WebdriverIO använder ett Jest-liknande expect bekräftelsebibliotek som kommer med speciella funktioner och anpassade matchers specifikt för att köra webb- och mobiltester. Trots att biblioteket med matchers är stort, passar det definitivt inte alla möjliga situationer. Därför är det möjligt att utöka de befintliga matchers med anpassade som definieras av dig.

varning

Även om det för närvarande inte finns någon skillnad i hur matchers definieras som är specifika för browser-objektet eller en element-instans, kan detta säkerligen förändras i framtiden. Håll ett öga på webdriverio/expect-webdriverio#1408 för ytterligare information om denna utveckling.

Anpassade Browser Matchers

För att registrera en anpassad browser matcher, anropa extendexpect-objektet antingen direkt i din spec-fil eller som en del av t.ex. before-hooken i din wdio.conf.js:

customMatchers/example.ts
loading...

Som visas i exemplet tar matcher-funktionen det förväntade objektet, t.ex. browser- eller elementobjektet, som den första parametern och det förväntade värdet som den andra. Du kan sedan använda matchern så här:

customMatchers/example.ts
loading...

Anpassade Element Matchers

Liknande anpassade browser matchers skiljer sig elementmatcher inte åt. Här är ett exempel på hur man skapar en anpassad matcher för att bekräfta aria-label för ett element:

customMatchers/example.ts
loading...

Detta låter dig anropa bekräftelsen så här:

customMatchers/example.ts
loading...

TypeScript-stöd

Om du använder TypeScript krävs ytterligare ett steg för att säkerställa typsäkerheten för dina anpassade matchers. Genom att utöka Matcher-gränssnittet med dina anpassade matchers försvinner alla typproblem:

customMatchers/example.ts
loading...

Om du skapade en anpassad asymmetrisk matcher kan du på liknande sätt utöka expect-typerna enligt följande:

declare global {
namespace ExpectWebdriverIO {
interface AsymmetricMatchers {
myCustomMatcher(value: string): ExpectWebdriverIO.PartialMatcher;
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot