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 ao desenvolver testes localmente, já que você os executa em uma interface remota na maioria das vezes, 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á rapidamente 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, qualquer pessoa pode fornecer e aceitar capacidades personalizadas que são específicas para o driver de automação ou interface remota:

Extensões de Capacidade Específicas para Navegadores

  • 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 de 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ífico. Tem precedência sobre maxInstances e maxInstancesPerCapability.

Tipo: number

wdio:specs

Define specs para execução de teste para aquele 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 aquele 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 este 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 de caminho 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

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

Tipo: boolean

appendLog

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

Tipo: boolean

replayable

Log detalhado e não trunca strings longas para que o log possa ser reproduzido (experimental).

Tipo: boolean

readableTimestamp

Adiciona carimbos de data/hora legíveis ao log.

Tipo: boolean

enableChromeLogs

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

Tipo: boolean

bidiMapperPath

Caminho do mapeador bidi personalizado.

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 que mostram quais capacidades precisam ser aplicadas para alcançar 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 é usado principalmente em ambientes CI/CD onde nenhum display é usado. 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 Navegador

Se você deseja testar uma versão de navegador que ainda não foi lançada como estável, por exemplo, 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 para você com base no browserVersion definido, por exemplo:

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

Se você deseja testar um navegador baixado manualmente, 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, 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 configurando:

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

Recomenda-se seguir o protocolo W3C quando se trata de nomear capacidades, o que requer 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 tipos, 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