Hoppa till huvudinnehåll

Runner

En runner i WebdriverIO organiserar hur och var tester körs när testrunner används. WebdriverIO stöder för närvarande två olika typer av runners: lokal runner och webbläsarrunner.

Local Runner​

Local Runner initierar ditt ramverk (t.ex. Mocha, Jasmine eller Cucumber) inom en arbetsprocess och kör alla dina testfiler inom din Node.js-miljö. Varje testfil körs i en separat arbetsprocess per capability vilket möjliggör maximal samtidighet. Varje arbetsprocess använder en enda webbläsarinstans och kör därför sin egen webbläsarsession, vilket möjliggör maximal isolering.

Eftersom varje test körs i sin egen isolerade process är det inte möjligt att dela data mellan testfiler. Det finns två sätt att komma runt detta:

Om inget annat definieras i wdio.conf.js är Local Runner standardrunnern i WebdriverIO.

Install​

För att använda Local Runner kan du installera den via:

npm install --save-dev @wdio/local-runner

Setup​

Local Runner är standardrunnern i WebdriverIO så det finns inget behov av att definiera den i din wdio.conf.js. Om du vill ange den explicit kan du definiera den enligt följande:

// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}

Browser Runner​

Till skillnad från Local Runner initierar och exekverar Browser Runner ramverket inom webbläsaren. Detta låter dig köra enhetstester eller komponenttester i en verklig webbläsare snarare än i en JSDOM som många andra testramverk.

Medan JSDOM är allmänt använd för testsyften, är det i slutändan inte en verklig webbläsare och du kan inte emulera mobila miljöer med den. Med denna runner möjliggör WebdriverIO för dig att enkelt köra dina tester i webbläsaren och använda WebDriver-kommandon för att interagera med element som renderas på sidan.

Här är en översikt över att köra tester inom JSDOM jämfört med WebdriverIOs Browser Runner

JSDOMWebdriverIO Browser Runner
1.Kör dina tester inom Node.js med en re-implementering av webbstandarder, särskilt WHATWG DOM och HTML StandardsKör dina tester i en verklig webbläsare och kör koden i en miljö som dina användare använder
2.Interaktioner med komponenter kan endast imiteras via JavaScriptDu kan använda WebdriverIO API för att interagera med element genom WebDriver-protokollet
3.Canvas-stöd kräver ytterligare beroenden och har begränsningarDu har tillgång till det riktiga Canvas API
4.JSDOM har vissa begränsningar och webbAPI:er som inte stödsAlla Web API:er stöds eftersom tester körs i en verklig webbläsare
5.Omöjligt att upptäcka fel mellan webbläsareStöd för alla webbläsare inklusive mobila webbläsare
6.Kan inte testa för element-pseudotillståndStöd för pseudotillstånd som :hover eller :active

Denna runner använder Vite för att kompilera din testkod och ladda den i webbläsaren. Den kommer med förinställningar för följande komponentramverk:

  • React
  • Preact
  • Vue.js
  • Svelte
  • SolidJS
  • Stencil

Varje testfil / testfilgrupp körs inom en enda sida, vilket innebär att mellan varje test laddas sidan om för att garantera isolering mellan tester.

Install​

För att använda Browser Runner kan du installera den via:

npm install --save-dev @wdio/browser-runner

Setup​

För att använda Browser runner måste du definiera en runner-egenskap i din wdio.conf.js-fil, t.ex.:

// wdio.conf.js
export const {
// ...
runner: 'browser',
// ...
}

Runner Options​

Browser runner tillåter följande konfigurationer:

preset​

Om du testar komponenter med ett av de nämnda ramverken ovan kan du definiera en förinställning som säkerställer att allt är konfigurerat direkt. Detta alternativ kan inte användas tillsammans med viteConfig.

Type: vue | svelte | solid | react | preact | stencil
Example:

wdio.conf.js
export const {
// ...
runner: ['browser', {
preset: 'svelte'
}],
// ...
}

viteConfig​

Definiera din egen Vite-konfiguration. Du kan antingen skicka in ett anpassat objekt eller importera en befintlig vite.conf.ts-fil om du använder Vite.js för utveckling. Observera att WebdriverIO behåller anpassade Vite-konfigurationer för att konfigurera testmiljön.

Type: string or UserConfig or (env: ConfigEnv) => UserConfig | Promise<UserConfig>
Example:

wdio.conf.ts
import viteConfig from '../vite.config.ts'

export const {
// ...
runner: ['browser', { viteConfig }],
// or just:
runner: ['browser', { viteConfig: '../vites.config.ts' }],
// or use a function if your vite config contains a lot of plugins
// which you only want to resolve when value is read
runner: ['browser', {
viteConfig: () => ({
// ...
})
}],
// ...
}

headless​

Om inställd på true kommer runnern att uppdatera capabilities för att köra tester headless. Som standard är detta aktiverat inom CI-miljöer där en CI-miljövariabel är inställd på '1' eller 'true'.

Type: boolean
Default: false, inställd på true om CI-miljövariabeln är satt

rootDir​

Projektets rotmapp.

Type: string
Default: process.cwd()

coverage​

WebdriverIO stöder testövervakning genom istanbul. Se Coverage Options för mer detaljer.

Type: object
Default: undefined

Coverage Options​

Följande alternativ låter dig konfigurera kodtäckningsrapportering.

enabled​

Aktiverar kodtäckningsinsamling.

Type: boolean
Default: false

include​

Lista över filer som inkluderas i kodtäckning som glob-mönster.

Type: string[]
Default: [**]

exclude​

Lista över filer som exkluderas i kodtäckning som glob-mönster.

Type: string[]
Default:

[
'coverage/**',
'dist/**',
'packages/*/test{,s}/**',
'**/*.d.ts',
'cypress/**',
'test{,s}/**',
'test{,-*}.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx}',
'**/*{.,-}spec.{js,cjs,mjs,ts,tsx,jsx}',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
'**/.{eslint,mocha,prettier}rc.{js,cjs,yml}',
]

extension​

Lista över filändelser som rapporten ska inkludera.

Type: string | string[]
Default: ['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte']

reportsDirectory​

Katalog att skriva kodtäckningsrapporten till.

Type: string
Default: ./coverage

reporter​

Kodtäckningsrapportörer att använda. Se istanbul-dokumentationen för detaljerad lista över alla rapportörer.

Type: string[]
Default: ['text', 'html', 'clover', 'json-summary']

perFile​

Kontrollera tröskelvärden per fil. Se lines, functions, branches och statements för de faktiska tröskelvärdena.

Type: boolean
Default: false

clean​

Rensa kodtäckningsresultat innan tester körs.

Type: boolean
Default: true

lines​

Tröskelvärde för rader.

Type: number
Default: undefined

functions​

Tröskelvärde för funktioner.

Type: number
Default: undefined

branches​

Tröskelvärde för grenar.

Type: number
Default: undefined

statements​

Tröskelvärde för statements.

Type: number
Default: undefined

Limitations​

När du använder WebdriverIO browser runner är det viktigt att notera att trådblockerade dialoger som alert eller confirm inte kan användas direkt. Detta beror på att de blockerar webbsidan, vilket innebär att WebdriverIO inte kan fortsätta kommunicera med sidan, vilket gör att exekveringen hänger sig.

I sådana situationer tillhandahåller WebdriverIO standardmockar med standardreturnerade värden för dessa API:er. Detta säkerställer att om användaren av misstag använder synkrona popup-webb-API:er, skulle exekveringen inte hänga sig. Det rekommenderas dock fortfarande att användaren mockar dessa webb-API:er för bättre upplevelse. Läs mer i Mocking.

Examples​

Se till att kolla in dokumentationen kring komponenttestning och titta på exempelrepositoriet för exempel som använder dessa och andra ramverk.

Welcome! How can I help?

WebdriverIO AI Copilot