Pular para o conteúdo principal

Capacidades

Uma capacidade é uma definição para uma interface remota. Ela ajuda o WebdriverIO a entender em qual ambiente de navegador ou móvel você deseja executar seus testes. As capacidades são menos cruciais durante o desenvolvimento de testes locais, pois você normalmente os executa em uma única interface remota, mas se tornam mais importantes ao executar um grande conjunto de testes de integração em CI/CD.

informação

O formato de um objeto de capacidade é bem definido pela especificação WebDriver. O testrunner do WebdriverIO falhará precocemente se as capacidades definidas pelo usuário não aderirem a essa especificação.

Capacidades Personalizadas​

Embora a quantidade de capacidades fixas definidas seja muito baixa, todos podem fornecer e aceitar capacidades personalizadas específicas para o driver de automação ou interface remota:

Extensões de Capacidade Específicas do Navegador​

  • goog:chromeOptions: extensões do Chromedriver, aplicáveis apenas para testes no Chrome
  • moz:firefoxOptions: extensões do Geckodriver, aplicáveis apenas para testes no Firefox
  • ms:edgeOptions: EdgeOptions para especificar o ambiente ao usar EdgeDriver para testar o Edge Chromium

Extensões de Capacidade de Fornecedores em Nuvem​

Extensões de Capacidade de Motores de Automação​

Capacidades do WebdriverIO para gerenciar opções de driver de navegador​

O WebdriverIO gerencia a instalação e execução do driver de navegador para você. O WebdriverIO usa uma capacidade personalizada que permite passar parâmetros para o driver.

wdio:chromedriverOptions​

Opções específicas passadas para o Chromedriver ao iniciá-lo.

wdio:geckodriverOptions​

Opções específicas passadas para o Geckodriver ao iniciá-lo.

wdio:edgedriverOptions​

Opções específicas passadas para o Edgedriver ao iniciá-lo.

wdio:safaridriverOptions​

Opções específicas passadas para o Safari ao iniciá-lo.

wdio:maxInstances​

Número máximo total de workers paralelos em execução para o navegador/capacidade específica. Tem precedência sobre maxInstances e maxInstancesPerCapability.

Tipo: number

wdio:specs​

Define specs para execução de teste para esse navegador/capacidade. Igual à opção de configuração regular specs, mas específica para o navegador/capacidade. Tem precedência sobre specs.

Tipo: (String | String[])[]

wdio:exclude​

Exclui specs da execução de teste para esse navegador/capacidade. Igual à opção de configuração regular exclude, mas específica para o navegador/capacidade. Exclui após a aplicação da opção de configuração global exclude.

Tipo: String[]

wdio:enforceWebDriverClassic​

Por padrão, o WebdriverIO tenta estabelecer uma sessão WebDriver Bidi. Se você não preferir isso, pode definir esta flag para desabilitar esse comportamento.

Tipo: boolean

Opções Comuns de Driver​

Embora todos os drivers ofereçam diferentes parâmetros para configuração, existem alguns comuns que o WebdriverIO entende e usa para configurar seu driver ou navegador:

cacheDir​

O caminho para a raiz do diretório de cache. Este diretório é usado para armazenar todos os drivers que são baixados ao tentar iniciar uma sessão.

Tipo: string
Padrão: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary​

Caminho para um binário de driver personalizado. Se definido, o WebdriverIO não tentará baixar um driver, mas usará o fornecido por este caminho. Certifique-se de que o driver seja compatível com o navegador que você está usando.

Você pode fornecer esse caminho através das variáveis de ambiente CHROMEDRIVER_PATH, GECKODRIVER_PATH ou EDGEDRIVER_PATH.

Tipo: string

cuidado

Se o binary do driver estiver definido, o WebdriverIO não tentará baixar um driver, mas usará o fornecido por este caminho. Certifique-se de que o driver seja compatível com o navegador que você está usando.

Opções de Driver Específicas do Navegador​

Para propagar opções para o driver, você pode usar as seguintes capacidades personalizadas:

  • Chrome ou Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Edge: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort​

A porta na qual o driver ADB deve ser executado.

Exemplo: 9515

Tipo: number

urlBase​

Prefixo do caminho da URL base para comandos, por exemplo, wd/url.

Exemplo: /

Tipo: string

logPath​

Escreve o log do servidor em arquivo em vez de stderr, aumenta o nível de log para INFO

Tipo: string

logLevel​

Define o nível de log. Opções possíveis ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Tipo: string

verbose​

Log detalhado (equivalente a --log-level=ALL)

Tipo: boolean

silent​

Nenhum log (equivalente a --log-level=OFF)

Tipo: boolean

appendLog​

Anexa arquivo de log em vez de reescrevê-lo.

Tipo: boolean

replayable​

Log detalhado sem truncar strings longas para que o log possa ser reproduzido (experimental).

Tipo: boolean

readableTimestamp​

Adiciona timestamps legíveis ao log.

Tipo: boolean

enableChromeLogs​

Mostra logs do navegador (substitui outras opções de log).

Tipo: boolean

bidiMapperPath​

Caminho personalizado do mapeador bidi.

Tipo: string

allowedIps​

Lista de permissões separada por vírgulas de endereços IP remotos que têm permissão para se conectar ao EdgeDriver.

Tipo: string[]
Padrão: ['']

allowedOrigins​

Lista de permissões separada por vírgulas de origens de solicitação que têm permissão para se conectar ao EdgeDriver. Usar * para permitir qualquer origem de host é perigoso!

Tipo: string[]
Padrão: ['*']

spawnOpts​

Opções a serem passadas para o processo do driver.

Tipo: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Padrão: undefined

Capacidades Especiais para Casos de Uso Específicos​

Esta é uma lista de exemplos mostrando quais capacidades precisam ser aplicadas para atingir um determinado caso de uso.

Executar Navegador em Modo Headless​

Executar um navegador em modo headless significa executar uma instância do navegador sem janela ou UI. Isso é principalmente usado em ambientes CI/CD onde nenhuma exibição é usada. Para executar um navegador em modo headless, aplique as seguintes capacidades:

{
browserName: 'chrome', // ou 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

Automatizar Diferentes Canais de Navegadores​

Se você deseja testar uma versão de navegador que ainda não foi lançada como estável, como o Chrome Canary, você pode fazer isso definindo capacidades e apontando para o navegador que deseja iniciar, por exemplo:

Ao testar no Chrome, o WebdriverIO baixará automaticamente a versão desejada do navegador e o driver com base no browserVersion definido, por exemplo:

{
browserName: 'chrome', // ou 'chromium'
browserVersion: '116' // ou '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' ou 'latest' (mesmo que 'canary')
}

Se você deseja testar um navegador baixado manualmente, você pode fornecer um caminho binário para o navegador via:

{
browserName: 'chrome', // ou 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

Além disso, se você deseja usar um driver baixado manualmente, você pode fornecer um caminho binário para o driver via:

{
browserName: 'chrome', // ou 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

Estender Capacidades Personalizadas​

Se você deseja definir seu próprio conjunto de capacidades para, por exemplo, armazenar dados arbitrários a serem usados nos testes para essa capacidade específica, você pode fazer isso definindo:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// configurações personalizadas
}
}]
}

É recomendável seguir o protocolo W3C quando se trata de nomenclatura de capacidades, o que exige um caractere : (dois pontos), denotando um namespace específico de implementação. Dentro dos seus testes, você pode acessar sua capacidade personalizada através de, por exemplo:

browser.capabilities['custom:caps']

Para garantir a segurança de tipo, você pode estender a interface de capacidade do WebdriverIO via:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot