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
- obsługuje Electron Forge, Electron Builder i niespakowane aplikacje
- 🧩 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.