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
- stödjer Electron Forge, Electron Builder och opaketerade appar
- 🧩 å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.