Opciones de Servicio
Las opciones de servicio son las opciones que se pueden establecer cuando se instancia el servicio y se utilizarán para cada llamada de método.
// wdio.conf.(js|ts)
export const config = {
// ...
// =====
// Setup
// =====
services: [
[
"visual",
{
// The options
},
],
],
// ...
};
Opciones Predeterminadas
addressBarShadowPadding
- Tipo:
number
- Obligatorio: No
- Predeterminado:
6
- Soportado: Web
El relleno que debe agregarse a la barra de direcciones en iOS y Android para hacer un recorte adecuado de la ventana gráfica.
autoElementScroll
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
true
- Soportado: Web, Aplicación Híbrida (Webview)
Esta opción te permite desactivar el desplazamiento automático del elemento a la vista cuando se crea una captura de pantalla del elemento.
addIOSBezelCorners
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa
Añade esquinas de bisel y muesca/isla dinámica a la captura de pantalla para dispositivos iOS.
Esto solo se puede hacer cuando el nombre del dispositivo PUEDE determinarse automáticamente y coincide con la siguiente lista de nombres de dispositivos normalizados. La normalización será realizada por este módulo. iPhone:
- iPhone X:
iphonex
- iPhone XS:
iphonexs
- iPhone XS Max:
iphonexsmax
- iPhone XR:
iphonexr
- iPhone 11:
iphone11
- iPhone 11 Pro:
iphone11pro
- iPhone 11 Pro Max:
iphone11promax
- iPhone 12:
iphone12
- iPhone 12 Mini:
iphone12mini
- iPhone 12 Pro:
iphone12pro
- iPhone 12 Pro Max:
iphone12promax
- iPhone 13:
iphone13
- iPhone 13 Mini:
iphone13mini
- iPhone 13 Pro:
iphone13pro
- iPhone 13 Pro Max:
iphone13promax
- iPhone 14:
iphone14
- iPhone 14 Plus:
iphone14plus
- iPhone 14 Pro:
iphone14pro
- iPhone 14 Pro Max:
iphone14promax
iPads: - iPad Mini 6th Generation:
ipadmini
- iPad Air 4th Generation:
ipadair
- iPad Air 5th Generation:
ipadair
- iPad Pro (11-inch) 1st Generation:
ipadpro11
- iPad Pro (11-inch) 2nd Generation:
ipadpro11
- iPad Pro (11-inch) 3rd Generation:
ipadpro11
- iPad Pro (12.9-inch) 3rd Generation:
ipadpro129
- iPad Pro (12.9-inch) 4th Generation:
ipadpro129
- iPad Pro (12.9-inch) 5th Generation:
ipadpro129
autoSaveBaseline
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
true
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa
Si no se encuentra una imagen de referencia durante la comparación, la imagen se copia automáticamente a la carpeta de referencia.
baselineFolder
- Tipo:
string|()=> string
- Obligatorio: No
- Predeterminado:
.path/to/testfile/__snapshots__/
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa
El directorio que contendrá todas las imágenes de referencia que se utilizan durante la comparación. Si no se establece, se utilizará el valor predeterminado que almacenará los archivos en una carpeta __snapshots__/
junto a la especificación que ejecuta las pruebas visuales. También se puede utilizar una función que devuelva una string
para establecer el valor de baselineFolder
:
{
baselineFolder: path.join(process.cwd(), 'foo', 'bar', 'baseline')
},
// O
{
baselineFolder: () => {
// Haz algo de magia aquí
return path.join(process.cwd(), 'foo', 'bar', 'baseline');
}
}
clearRuntimeFolder
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa
Eliminar la carpeta de tiempo de ejecución (actual
y diff
) en la inicialización
Esto solo funcionará cuando screenshotPath
se establece a través de las opciones del plugin, y NO FUNCIONARÁ cuando configures las carpetas en los métodos
createJsonReportFiles
(NUEVO)
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
Ahora tienes la opción de exportar los resultados de comparación a un archivo de informe JSON. Al proporcionar la opción createJsonReportFiles: true
, cada imagen que se compara creará un informe almacenado en la carpeta actual
, junto a cada resultado de imagen actual
. La salida se verá así:
{
"parent": "check methods",
"test": "should fail comparing with a baseline",
"tag": "examplePageFail",
"instanceData": {
"browser": {
"name": "chrome-headless-shell",
"version": "126.0.6478.183"
},
"platform": {
"name": "mac",
"version": "not-known"
}
},
"commandName": "checkScreen",
"boundingBoxes": {
"diffBoundingBoxes": [
{
"left": 1088,
"top": 717,
"right": 1186,
"bottom": 730
}
//....
],
"ignoredBoxes": [
{
"left": 159,
"top": 652,
"right": 356,
"bottom": 703
}
//...
]
},
"fileData": {
"actualFilePath": "/Users/wdio/visual-testing/.tmp/actual/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"baselineFilePath": "/Users/wdio/visual-testing/localBaseline/desktop_chrome-headless-shellexamplePageFail-local-chrome-latest-1366x768.png",
"diffFilePath": "/Users/wdio/visual-testing/.tmp/diff/desktop_chrome-headless-shell/examplePageFail-local-chrome-latest-1366x768png",
"fileName": "examplePageFail-local-chrome-latest-1366x768.png",
"size": {
"actual": {
"height": 768,
"width": 1366
},
"baseline": {
"height": 768,
"width": 1366
},
"diff": {
"height": 768,
"width": 1366
}
}
},
"misMatchPercentage": "12.90",
"rawMisMatchPercentage": 12.900729014153246
}
Cuando todas las pruebas se ejecutan, se generará un nuevo archivo JSON con la colección de comparaciones que se puede encontrar en la raíz de tu carpeta actual
. Los datos se agrupan por:
describe
para Jasmine/Mocha oFeature
para CucumberJSit
para Jasmine/Mocha oScenario
para CucumberJS y luego se ordenan por:commandName
, que son los nombres de métodos de comparación utilizados para comparar las imágenesinstanceData
, primero navegador, luego dispositivo, luego plataforma se verá así
[
{
"description": "check methods",
"data": [
{
"test": "should fail comparing with a baseline",
"data": [
{
"tag": "examplePageFail",
"instanceData": {},
"commandName": "checkScreen",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "14.34",
"rawMisMatchPercentage": 14.335403703025868
},
{
"tag": "exampleElementFail",
"instanceData": {},
"commandName": "checkElement",
"framework": "mocha",
"boundingBoxes": {
"diffBoundingBoxes": [],
"ignoredBoxes": []
},
"fileData": {},
"misMatchPercentage": "1.34",
"rawMisMatchPercentage": 1.335403703025868
}
]
}
]
}
]
Los datos del informe te darán la oportunidad de construir tu propio informe visual sin tener que hacer toda la magia y recopilación de datos tú mismo.
Necesitas usar @wdio/visual-testing
versión 5.2.0
o superior
disableBlinkingCursor
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
- Soportado: Web, Aplicación Híbrida (Webview)
Activar/Desactivar el "parpadeo" del cursor en todos los elementos input
, textarea
, [contenteditable]
en la aplicación. Si se establece en true
, el cursor se establecerá como transparent
antes de tomar una captura de pantalla
y se restablecerá cuando termine
disableCSSAnimation
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
- Soportado: Web, Aplicación Híbrida (Webview)
Activar/Desactivar todas las animaciones CSS en la aplicación. Si se establece en true
, todas las animaciones se desactivarán antes de tomar una captura de pantalla
y se restablecerán cuando termine
enableLayoutTesting
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
false
- Soportado: Web
Esto ocultará todo el texto en una página para que solo se utilice el diseño para la comparación. La ocultación se realizará añadiendo el estilo 'color': 'transparent !important'
a cada elemento.
Para la salida, consulta Salida de Prueba
Al usar esta bandera, cada elemento que contiene texto (no solo p, h1, h2, h3, h4, h5, h6, span, a, li
, sino también div|button|..
) recibirá esta propiedad. No hay opción para personalizar esto.
formatImageName
- Tipo:
string
- Obligatorio: No
- Predeterminado:
{tag}-{browserName}-{width}x{height}-dpr-{dpr}
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa
El nombre de las imágenes guardadas se puede personalizar pasando el parámetro formatImageName
con una cadena de formato como:
{tag}-{browserName}-{width}x{height}-dpr-{dpr}
Las siguientes variables se pueden pasar para formatear la cadena y se leerán automáticamente de las capacidades de la instancia. Si no se pueden determinar, se utilizarán los valores predeterminados.
browserName
: El nombre del navegador en las capacidades proporcionadasbrowserVersion
: La versión del navegador proporcionada en las capacidadesdeviceName
: El nombre del dispositivo de las capacidadesdpr
: La relación de píxeles del dispositivoheight
: La altura de la pantallalogName
: El logName de las capacidadesmobile
: Esto añadirá_app
, o el nombre del navegador después deldeviceName
para distinguir capturas de pantalla de aplicaciones de capturas de pantalla de navegadorplatformName
: El nombre de la plataforma en las capacidades proporcionadasplatformVersion
: La versión de la plataforma proporcionada en las capacidadestag
: La etiqueta que se proporciona en los métodos que se están llamandowidth
: El ancho de la pantalla
No puedes proporcionar rutas/carpetas personalizadas en el formatImageName
. Si deseas cambiar la ruta, consulta cómo cambiar las siguientes opciones:
baselineFolder
screenshotPath
folderOptions
por método
fullPageScrollTimeout
- Tipo:
number
- Obligatorio: No
- Predeterminado:
1500
- Soportado: Web
El tiempo de espera en milisegundos después de un desplazamiento. Esto puede ayudar a identificar páginas con carga diferida.
Esto solo funcionará cuando la opción de servicio/método userBasedFullPageScreenshot
esté establecida en true
, consulta también userBasedFullPageScreenshot
hideScrollBars
- Tipo:
boolean
- Obligatorio: No
- Predeterminado:
true
- Soportado: Web, Aplicación Híbrida (Webview)
Ocultar barras de desplazamiento en la aplicación. Si se establece en true, todas las barras de desplazamiento se desactivarán antes de tomar una captura de pantalla. Esto está establecido por defecto en true
para prevenir problemas adicionales.
logLevel
- Tipo:
string
- Obligatorio: No
- Predeterminado:
info
- Soportado: Web, Aplicación Híbrida (Webview), Aplicación Nativa