Przejdź do głównej treści

Usługa Electron

wdio-electron-service jest pakietem zewnętrznym, więcej informacji znajdziesz na GitHub | npm


Usługa WebdriverIO do testowania aplikacji Electron

Umożliwia wieloplatformowe testowanie E2E aplikacji Electron dzięki rozbudowanemu ekosystemowi WebdriverIO.

Duchowy następca Spectron (RIP).

Funkcje

Ułatwia testowanie aplikacji Electron poprzez:

  • 🚗 automatyczną konfigurację wymaganego Chromedriver (dla Electron v26 i nowszych)
  • 📦 automatyczne wykrywanie ścieżki do aplikacji Electron
  • 🧩 dostęp do API Electron w testach
  • 🕵️ mockowanie API Electron poprzez interfejs podobny do Vitest

Instalacja

Będziesz potrzebować zainstalowanego WebdriverIO, instrukcje znajdziesz tutaj.

Szybki start

Zalecanym sposobem na szybkie rozpoczęcie pracy jest użycie kreatora konfiguracji WDIO.

Ręczny szybki start

Aby rozpocząć bez używania kreatora konfiguracji, musisz zainstalować usługę i @wdio/cli:

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

Lub użyj preferowanego menedżera pakietów - pnpm, yarn, itp.

Następnie utwórz plik konfiguracyjny WDIO. Jeśli potrzebujesz inspiracji, działająca konfiguracja znajduje się w katalogu przykładów tego repozytorium, a także na stronie referencyjnej konfiguracji WDIO.

Musisz dodać electron do tablicy usług i ustawić możliwości Electron, np.:

wdio.conf.ts

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

Na koniec, uruchom testy używając swojego pliku konfiguracyjnego.

Spowoduje to uruchomienie instancji Twojej aplikacji w taki sam sposób, w jaki WDIO obsługuje przeglądarki takie jak Chrome czy Firefox. Usługa działa z WDIO (równoległym) multiremote, jeśli potrzebujesz uruchomić dodatkowe instancje jednocześnie, np. wiele instancji aplikacji lub różne kombinacje aplikacji i przeglądarki internetowej.

Jeśli używasz Electron Forge lub Electron Builder do pakowania aplikacji, usługa automatycznie spróbuje znaleźć ścieżkę do spakowanej aplikacji Electron. Możesz podać niestandardową ścieżkę do pliku binarnego za pomocą niestandardowych możliwości usługi, np.:

wdio.conf.ts

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

Zobacz dokumentację konfiguracji, aby dowiedzieć się, jak znaleźć wartość appBinaryPath dla różnych systemów operacyjnych obsługiwanych przez Electron.

Alternatywnie możesz skierować usługę na niespakowaną aplikację, podając ścieżkę do skryptu main.js. Electron musi być zainstalowany w node_modules. Zaleca się bundlowanie niespakowanych aplikacji za pomocą takich narzędzi jak Rollup, Parcel, Webpack itp.

wdio.conf.ts

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

Konfiguracja Chromedriver

Jeśli Twoja aplikacja używa wersji Electron niższej niż v26, będziesz musiał ręcznie skonfigurować Chromedriver.

Wynika to z faktu, że WDIO używa Chrome for Testing do pobierania Chromedriver, który dostarcza tylko wersje Chromedriver v115 lub nowsze.

Dokumentacja

Konfiguracja usługi
Konfiguracja Chromedriver
Dostęp do API Electron
Mockowanie API Electron
Zarządzanie oknami
Tryb samodzielny
Rozwój
Typowe problemy i debugowanie

Rozwój

Przeczytaj dokument rozwoju, jeśli jesteś zainteresowany współtworzeniem.

Przykładowe integracje

Sprawdź nasz projekt boilerplate Electron, który pokazuje, jak zintegrować WebdriverIO w przykładowej aplikacji. Możesz też zajrzeć do katalogów Example Apps i E2Es w tym repozytorium.

Wsparcie

Jeśli masz problemy z uruchomieniem WDIO z tą usługą, najpierw powinieneś sprawdzić udokumentowane Typowe problemy, a następnie otworzyć dyskusję na głównym forum WDIO.

Forum dyskusyjne usługi Electron jest znacznie mniej aktywne niż forum WDIO, ale jeśli problem dotyczy konkretnie Electron lub korzystania z usługi, możesz rozpocząć dyskusję tutaj.

Welcome! How can I help?

WebdriverIO AI Copilot