Saltar al contenido principal

Capacidades

Una capacidad es una definición para una interfaz remota. Ayuda a WebdriverIO a entender en qué navegador o entorno móvil deseas ejecutar tus pruebas. Las capacidades son menos cruciales cuando desarrollas pruebas localmente, ya que las ejecutas en una interfaz remota la mayoría del tiempo, pero se vuelven más importantes al ejecutar un gran conjunto de pruebas de integración en CI/CD.

información

El formato de un objeto de capacidad está bien definido por la especificación WebDriver. El ejecutor de pruebas de WebdriverIO fallará tempranamente si las capacidades definidas por el usuario no cumplen con esa especificación.

Capacidades personalizadas​

Aunque la cantidad de capacidades fijas definidas es muy baja, cualquiera puede proporcionar y aceptar capacidades personalizadas que son específicas del controlador de automatización o interfaz remota:

Extensiones de capacidades específicas del navegador​

  • goog:chromeOptions: Extensiones de Chromedriver, solo aplicables para pruebas en Chrome
  • moz:firefoxOptions: Extensiones de Geckodriver, solo aplicables para pruebas en Firefox
  • ms:edgeOptions: EdgeOptions para especificar el entorno al usar EdgeDriver para probar Chromium Edge

Extensiones de capacidades de proveedores en la nube​

Extensiones de capacidades del motor de automatización​

Capacidades de WebdriverIO para gestionar opciones de controlador de navegador​

WebdriverIO administra la instalación y ejecución del controlador del navegador por ti. WebdriverIO utiliza una capacidad personalizada que te permite pasar parámetros al controlador.

wdio:chromedriverOptions​

Opciones específicas pasadas a Chromedriver al iniciarlo.

wdio:geckodriverOptions​

Opciones específicas pasadas a Geckodriver al iniciarlo.

wdio:edgedriverOptions​

Opciones específicas pasadas a Edgedriver al iniciarlo.

wdio:safaridriverOptions​

Opciones específicas pasadas a Safari al iniciarlo.

wdio:maxInstances​

Número máximo de trabajadores paralelos en ejecución para el navegador/capacidad específica. Tiene prioridad sobre maxInstances y maxInstancesPerCapability.

Tipo: number

wdio:specs​

Define especificaciones para la ejecución de pruebas para ese navegador/capacidad. Igual que la opción de configuración regular specs, pero específica para el navegador/capacidad. Tiene prioridad sobre specs.

Tipo: (String | String[])[]

wdio:exclude​

Excluye especificaciones de la ejecución de pruebas para ese navegador/capacidad. Igual que la opción de configuración regular exclude, pero específica para el navegador/capacidad. Se excluye después de aplicar la opción de configuración global exclude.

Tipo: String[]

wdio:enforceWebDriverClassic​

Por defecto, WebdriverIO intenta establecer una sesión WebDriver Bidi. Si no prefieres eso, puedes establecer esta bandera para desactivar este comportamiento.

Tipo: boolean

Opciones comunes de controlador​

Aunque todos los controladores ofrecen diferentes parámetros para la configuración, hay algunos comunes que WebdriverIO entiende y utiliza para configurar tu controlador o navegador:

cacheDir​

La ruta a la raíz del directorio de caché. Este directorio se utiliza para almacenar todos los controladores que se descargan al intentar iniciar una sesión.

Tipo: string
Predeterminado: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary​

Ruta a un binario de controlador personalizado. Si se establece, WebdriverIO no intentará descargar un controlador, sino que utilizará el proporcionado por esta ruta. Asegúrate de que el controlador sea compatible con el navegador que estás utilizando.

Puedes proporcionar esta ruta a través de las variables de entorno CHROMEDRIVER_PATH, GECKODRIVER_PATH o EDGEDRIVER_PATH.

Tipo: string

precaución

Si se establece el binary del controlador, WebdriverIO no intentará descargar un controlador, sino que utilizará el proporcionado por esta ruta. Asegúrate de que el controlador sea compatible con el navegador que estás utilizando.

Opciones de controlador específicas del navegador​

Para propagar opciones al controlador, puedes utilizar las siguientes capacidades personalizadas:

  • Chrome o Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Egde: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort​

El puerto en el que debe ejecutarse el controlador ADB.

Ejemplo: 9515

Tipo: number

urlBase​

Prefijo de ruta de URL base para comandos, p. ej. wd/url.

Ejemplo: /

Tipo: string

logPath​

Escribe el registro del servidor en un archivo en lugar de stderr, aumenta el nivel de registro a INFO

Tipo: string

logLevel​

Establece el nivel de registro. Opciones posibles ALL, DEBUG, INFO, WARNING, SEVERE, OFF.

Tipo: string

verbose​

Registrar detalladamente (equivalente a --log-level=ALL)

Tipo: boolean

silent​

No registrar nada (equivalente a --log-level=OFF)

Tipo: boolean

appendLog​

Añadir al archivo de registro en lugar de reescribirlo.

Tipo: boolean

replayable​

Registrar detalladamente y no truncar cadenas largas para que el registro pueda reproducirse (experimental).

Tipo: boolean

readableTimestamp​

Añadir marcas de tiempo legibles al registro.

Tipo: boolean

enableChromeLogs​

Mostrar registros del navegador (anula otras opciones de registro).

Tipo: boolean

bidiMapperPath​

Ruta de mapeador bidi personalizado.

Tipo: string

allowedIps​

Lista de direcciones IP remotas permitidas separadas por comas que pueden conectarse a EdgeDriver.

Tipo: string[]
Predeterminado: ['']

allowedOrigins​

Lista de orígenes de solicitudes permitidos separados por comas que pueden conectarse a EdgeDriver. ¡Usar * para permitir cualquier origen de host es peligroso!

Tipo: string[]
Predeterminado: ['*']

spawnOpts​

Opciones para pasar al proceso del controlador.

Tipo: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
Predeterminado: undefined

Capacidades especiales para casos de uso específicos​

Esta es una lista de ejemplos que muestran qué capacidades deben aplicarse para lograr un caso de uso determinado.

Ejecutar navegador sin interfaz gráfica (headless)​

Ejecutar un navegador sin interfaz gráfica significa ejecutar una instancia del navegador sin ventana o interfaz de usuario. Esto se utiliza principalmente en entornos CI/CD donde no se utiliza ninguna pantalla. Para ejecutar un navegador en modo sin interfaz gráfica, aplica las siguientes capacidades:

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

Automatizar diferentes canales de navegador​

Si deseas probar una versión de navegador que aún no se ha lanzado como estable, por ejemplo, Chrome Canary, puedes hacerlo estableciendo capacidades y apuntando al navegador que deseas iniciar, por ejemplo:

Cuando se realizan pruebas en Chrome, WebdriverIO descargará automáticamente la versión del navegador y el controlador deseados según el browserVersion definido, por ejemplo:

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

Si deseas probar un navegador descargado manualmente, puedes proporcionar una ruta binaria al navegador mediante:

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

Además, si deseas utilizar un controlador descargado manualmente, puedes proporcionar una ruta binaria al controlador mediante:

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

Extender capacidades personalizadas​

Si deseas definir tu propio conjunto de capacidades para, por ejemplo, almacenar datos arbitrarios para ser utilizados en las pruebas para esa capacidad específica, puedes hacerlo configurando:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// configuraciones personalizadas
}
}]
}

Se recomienda seguir el protocolo W3C cuando se trata de nombrar capacidades, que requiere un carácter : (dos puntos) que denota un espacio de nombres específico de la implementación. Dentro de tus pruebas, puedes acceder a tu capacidad personalizada mediante, por ejemplo:

browser.capabilities['custom:caps']

Para garantizar la seguridad de tipos, puedes extender la interfaz de capacidad de WebdriverIO mediante:

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

Welcome! How can I help?

WebdriverIO AI Copilot