Pular para o conteúdo principal

Serviço Electron

wdio-electron-service é um pacote de terceiros, para mais informações consulte GitHub | npm


Serviço WebdriverIO para testar aplicações Electron

Permite testes E2E multiplataforma de aplicativos Electron através do extenso ecossistema WebdriverIO.

Sucessor espiritual do Spectron (RIP).

Recursos

Facilita o teste de aplicações Electron através de:

  • 🚗 configuração automática do Chromedriver necessário (para Electron v26 e superior)
  • 📦 detecção automática do caminho da sua aplicação Electron
  • 🧩 acesso às APIs do Electron dentro dos seus testes
  • 🕵️ simulação de APIs do Electron através de uma API semelhante ao Vitest

Instalação

Você precisará instalar o WebdriverIO, as instruções podem ser encontradas aqui.

Início Rápido

A maneira recomendada para começar rapidamente é usar o assistente de configuração WDIO.

Início Rápido Manual

Para começar sem usar o assistente de configuração, você precisará instalar o serviço e o @wdio/cli:

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

Ou use seu gerenciador de pacotes preferido - pnpm, yarn, etc.

Em seguida, crie seu arquivo de configuração WDIO. Se precisar de inspiração, há uma configuração funcional no diretório de exemplos deste repositório, bem como na página de referência de configuração WDIO.

Você precisará adicionar electron ao seu array de serviços e definir uma capacidade Electron, por exemplo:

wdio.conf.ts

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

Finalmente, execute alguns testes usando seu arquivo de configuração.

Isso iniciará uma instância do seu aplicativo da mesma forma que o WDIO lida com navegadores como Chrome ou Firefox. O serviço funciona com WDIO (parallel) multiremote se você precisar executar instâncias adicionais simultaneamente, por exemplo, várias instâncias do seu aplicativo ou diferentes combinações do seu aplicativo e um navegador Web.

Se você usa Electron Forge ou Electron Builder para empacotar seu aplicativo, o serviço tentará automaticamente encontrar o caminho para seu aplicativo Electron empacotado. Você pode fornecer um caminho personalizado para o binário através de capacidades de serviço personalizadas, por exemplo:

wdio.conf.ts

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

Veja a documentação de configuração para saber como encontrar o valor de appBinaryPath para os diferentes sistemas operacionais suportados pelo Electron.

Alternativamente, você pode direcionar o serviço para um aplicativo não empacotado fornecendo o caminho para o script main.js. O Electron precisará estar instalado em seu node_modules. É recomendável agrupar aplicativos não empacotados usando um bundler como 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'],
},
},
],
// ...
};

Configuração do Chromedriver

Se seu aplicativo usa uma versão do Electron anterior à v26, você precisará configurar manualmente o Chromedriver.

Isso ocorre porque o WDIO usa o Chrome for Testing para baixar o Chromedriver, que fornece apenas versões do Chromedriver v115 ou mais recentes.

Documentação

Configuração do Serviço
Configuração do Chromedriver
Acessando APIs do Electron
Simulando APIs do Electron
Gerenciamento de Janelas
Modo Standalone
Desenvolvimento
Problemas Comuns e Depuração

Desenvolvimento

Leia a documentação de desenvolvimento se estiver interessado em contribuir.

Exemplos de Integrações

Confira nosso projeto Electron boilerplate que demonstra como integrar o WebdriverIO em um aplicativo de exemplo. Você também pode dar uma olhada nos diretórios Example Apps e E2Es neste repositório.

Suporte

Se você estiver tendo problemas para executar o WDIO com o serviço, você deve verificar os Problemas Comuns documentados em primeira instância, depois abra uma discussão no fórum principal do WDIO.

O fórum de discussão do serviço Electron é muito menos ativo que o do WDIO, mas se o problema que você está enfrentando é específico do Electron ou do uso do serviço, você pode abrir uma discussão aqui.

Welcome! How can I help?

WebdriverIO AI Copilot