Hoppa till huvudinnehåll

Electron Service

wdio-electron-service är ett tredjepartspaket, för mer information se GitHub | npm


WebdriverIO-tjänst för testning av Electron-applikationer

Möjliggör plattformsoberoende E2E-testning av Electron-appar via det omfattande WebdriverIO-ekosystemet.

Andlig efterföljare till Spectron (RIP).

Funktioner

Gör testning av Electron-applikationer mycket enklare via:

  • 🚗 automatisk installation av nödvändig Chromedriver (för Electron v26 och senare)
  • 📦 automatisk sökvägsdetektering av din Electron-applikation
  • 🧩 åtkomst till Electron-API:er i dina tester
  • 🕵️ mockningar av Electron-API:er via ett Vitest-liknande API

Installation

Du behöver installera WebdriverIO, instruktioner finns här.

Snabbstart

Det rekommenderade sättet att komma igång snabbt är att använda WDIO-konfigurationsguiden.

Manuell snabbstart

För att komma igång utan att använda konfigurationsguiden behöver du installera tjänsten och @wdio/cli:

npm install --dev @wdio/cli wdio-electron-service

Eller använd din föredragna pakethanterare - pnpm, yarn, etc.

Skapa sedan din WDIO-konfigurationsfil. Om du behöver inspiration för detta finns det en fungerande konfiguration i exempelkatalogen i detta repository, samt WDIO:s konfigurationsreferenssida.

Du behöver lägga till electron i din services-array och ställa in en Electron-capability, t.ex.:

wdio.conf.ts

export const config = {
// ...
services: ['electron'],
capabilities: [
{
browserName: 'electron',
},
],
// ...
};

Slutligen, kör några tester med hjälp av din konfigurationsfil.

Detta kommer att starta en instans av din app på samma sätt som WDIO hanterar webbläsare som Chrome eller Firefox. Tjänsten fungerar med WDIO (parallel) multiremote om du behöver köra ytterligare instanser samtidigt, t.ex. flera instanser av din app eller olika kombinationer av din app och en webbläsare.

Om du använder Electron Forge eller Electron Builder för att paketera din app så kommer tjänsten automatiskt att försöka hitta sökvägen till din paketerade Electron-applikation. Du kan ange en anpassad sökväg till binärfilen via anpassade tjänstcapabilities, t.ex.:

wdio.conf.ts

export const config = {
// ...
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appBinaryPath: './path/to/built/electron/app.exe',
appArgs: ['foo', 'bar=baz'],
},
},
],
// ...
};

Se konfigurationsdokumentationen för att hitta ditt appBinaryPath-värde för de olika operativsystem som stöds av Electron.

Alternativt kan du rikta tjänsten mot en opaketerad app genom att ange sökvägen till main.js-skriptet. Electron behöver vara installerat i din node_modules. Det rekommenderas att bunta opaketerade appar med hjälp av en bundler som Rollup, Parcel, Webpack, etc.

wdio.conf.ts

export const config = {
// ...
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appEntryPoint: './path/to/bundled/electron/main.bundle.js',
appArgs: ['foo', 'bar=baz'],
},
},
],
// ...
};

Chromedriver-konfiguration

Om din app använder en version av Electron som är lägre än v26 behöver du manuellt konfigurera Chromedriver.

Detta beror på att WDIO använder Chrome for Testing för att ladda ner Chromedriver, vilket endast tillhandahåller Chromedriver-versioner av v115 eller nyare.

Dokumentation

Tjänstkonfiguration
Chromedriver-konfiguration
Åtkomst till Electron-API:er
Mockning av Electron-API:er
Fönsterhantering
Fristående läge
Utveckling
Vanliga problem och felsökning

Utveckling

Läs utvecklingsdokumentationen om du är intresserad av att bidra.

Exempelintegrationer

Kolla in vårt Electron-boilerplate-projekt som visar hur man integrerar WebdriverIO i en exempelapplikation. Du kan också titta på katalogerna Example Apps och E2Es i detta repository.

Support

Om du har problem med att köra WDIO med tjänsten bör du först kontrollera de dokumenterade vanliga problemen, och sedan öppna en diskussion i WDIOs huvudforum.

Electron-tjänstens diskussionsforum är mycket mindre aktivt än WDIO:s, men om problemet du upplever är specifikt för Electron eller användning av tjänsten kan du öppna en diskussion här.

Welcome! How can I help?

WebdriverIO AI Copilot