Pular para o conteúdo principal

Serviço Docker

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

Este serviço é destinado a uso com WebdriverIO e ajuda a executar testes funcionais/de integração contra/usando aplicações em contêineres. Ele usa o popular serviço Docker (instalado separadamente) para executar contêineres.

Por que usá-lo?

Idealmente, seus testes seriam executados em alguma variedade de pipeline CI/CD onde frequentemente não há navegadores "reais" e outros recursos dos quais sua aplicação depende. Com o advento do Docker, praticamente todas as dependências necessárias da aplicação podem ser conteinerizadas. Com este serviço, você pode executar seu contêiner de aplicação ou um docker-selenium em seu CI e em completo isolamento (assumindo que o CI pode ter o Docker instalado como uma dependência). O mesmo pode ser aplicado ao desenvolvimento local se sua aplicação precisar ter um nível de isolamento do seu sistema operacional principal.

Como funciona

O serviço executará uma imagem docker existente e, uma vez pronta, iniciará os testes WebdriverIO que devem ser executados contra sua aplicação em contêiner.

Instalação

Execute:

npm install wdio-docker-service --save-dev

Instruções sobre como instalar o WebdriverIO podem ser encontradas aqui.

Configuração

Por padrão, Google Chrome, Firefox e PhantomJS estão disponíveis quando instalados no sistema host. Para usar o serviço, você precisa adicionar docker ao seu array de serviços:

// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};

Opções

dockerOptions

Várias opções necessárias para executar o contêiner docker

Tipo: Object

Padrão: { options: { rm: true } }

Exemplo:

dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}

dockerOptions.image

Tag do nome do contêiner Docker. Pode ser local ou do Docker HUB.

Tipo: String

Obrigatório: true

dockerOptions.healthCheck

Configuração que verifica a prontidão dos seus contêineres antes de iniciar os testes. Normalmente, seria uma URL localhost. Se o healthCheck não estiver configurado, o Webdriver começará a executar os testes imediatamente após o início do contêiner Docker, o que pode ser muito cedo, considerando que leva tempo para que um serviço web inicie dentro de um contêiner Docker.

Tipo: String|Object

Opções para uso de Objeto:

  • url - url para um aplicativo em execução dentro do seu contêiner
  • maxRetries - número de tentativas até que o healthcheck falhe. Padrão: 10
  • inspectInterval - intervalo entre cada tentativa em ms. Padrão: 500
  • startDelay - atraso inicial para iniciar o healthcheck em ms. Padrão: 0

Exemplo 1 (String): healthCheck: 'http://localhost:4444'

Exemplo 2 (Objeto):

healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}

dockerOptions.options

Mapa de opções usadas pelo comando docker run. Para mais detalhes sobre o comando run, clique aqui.

Qualquer opção de letra única será convertida para -[opção] (ou seja, d: true -> -d).

Qualquer opção de dois caracteres ou mais será convertida para --[opção] (ou seja, rm: true -> --rm).

Para opções que podem ser usadas mais de uma vez (ou seja, -e,-add-host, --expose, etc.), use a notação de array (ou seja, e: ["NODE_ENV=development", "FOO=bar"]).

Tipo: Object

Exemplo:

options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}

dockerOptions.args

Quaisquer argumentos que você queira passar para o contêiner. Corresponde a [ARG...] no CLI do Docker run.

Tipo: String

dockerOptions.command

Qualquer comando que você queira passar para o contêiner. Corresponde a [COMMAND] no CLI do Docker run.

Tipo: String

onDockerReady

Um método de callback que é chamado quando a aplicação Docker está pronta. A prontidão é determinada pela capacidade de fazer ping na URL de healthCheck.

Tipo: Function

dockerLogs

Caminho para onde os logs do contêiner docker devem ser armazenados

Tipo: String

Casos de Uso de Teste / Receitas

Por favor, visite nossa Wiki para mais detalhes.

Welcome! How can I help?

WebdriverIO AI Copilot