Перейти к основному содержанию

Electron Сервис

wdio-electron-service это сторонний пакет, для получения дополнительной информации смотрите GitHub | npm


WebdriverIO сервис для тестирования Electron приложений

Обеспечивает кросс-платформенное E2E тестирование Electron приложений через обширную экосистему WebdriverIO.

Духовный наследник Spectron (RIP).

Возможности

Делает тестирование Electron приложений намного проще благодаря:

  • 🚗 автоматической настройке необходимого Chromedriver (для Electron v26 и выше)
  • 📦 автоматическому определению пути к вашему Electron приложению
  • 🧩 доступу к Electron API в ваших тестах
  • 🕵️ мокингу Electron API через API в стиле Vitest

Установка

Вам потребуется установить WebdriverIO, инструкции можно найти здесь.

Быстрый старт

Рекомендуемый способ быстро начать работу - использовать мастер настройки WDIO.

Ручной быстрый старт

Чтобы начать без использования мастера настройки, вам нужно установить сервис и @wdio/cli:

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

Или используйте любой менеджер пакетов по вашему выбору - pnpm, yarn и т.д.

Далее создайте файл конфигурации WDIO. Если вам нужно вдохновение, есть рабочая конфигурация в директории примеров этого репозитория, а также страница справочника по конфигурации WDIO.

Вам нужно добавить electron в массив сервисов и установить возможности Electron, например:

wdio.conf.ts

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

Наконец, запустите некоторые тесты используя ваш файл конфигурации.

Это запустит экземпляр вашего приложения так же, как WDIO управляет браузерами, такими как Chrome или Firefox. Сервис работает с WDIO (параллельным) multiremote, если вам нужно запускать дополнительные экземпляры одновременно, например, несколько экземпляров вашего приложения или различные комбинации вашего приложения и веб-браузера.

Если вы используете Electron Forge или Electron Builder для упаковки вашего приложения, то сервис автоматически попытается найти путь к вашему упакованному Electron приложению. Вы можете предоставить пользовательский путь к бинарному файлу через настраиваемые возможности сервиса, например:

wdio.conf.ts

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

Смотрите документацию по конфигурации, чтобы узнать, как найти значение appBinaryPath для различных операционных систем, поддерживаемых Electron.

Альтернативно, вы можете направить сервис на неупакованное приложение, предоставив путь к скрипту main.js. Electron должен быть установлен в ваших node_modules. Рекомендуется собирать неупакованные приложения с использованием сборщика, такого как Rollup, Parcel, Webpack и т.д.

wdio.conf.ts

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

Конфигурация Chromedriver

Если ваше приложение использует версию Electron ниже v26, то вам нужно вручную настроить Chromedriver.

Это потому, что WDIO использует Chrome for Testing для загрузки Chromedriver, который предоставляет только версии Chromedriver v115 или новее.

Документация

Конфигурация сервиса
Конфигурация Chromedriver
Доступ к Electron API
Мокинг Electron API
Управление окнами
Автономный режим
Разработка
Распространенные проблемы и отладка

Разработка

Прочитайте документацию по разработке, если вы заинтересованы в участии.

Примеры интеграции

Посмотрите наш проект Electron boilerplate, который показывает, как интегрировать WebdriverIO в примере приложения. Вы также можете взглянуть на директории Example Apps и E2Es в этом репозитории.

Поддержка

Если у вас возникли проблемы с запуском WDIO с сервисом, вам следует сначала проверить документированные Распространенные проблемы, а затем открыть обсуждение на основном форуме WDIO.

Форум обсуждения сервиса Electron гораздо менее активен, чем форум WDIO, но если проблема, с которой вы столкнулись, характерна для Electron или использования сервиса, вы можете открыть обсуждение здесь.

Welcome! How can I help?

WebdriverIO AI Copilot