Cypress: Cómo obtener los datos de una prueba individual, como su título, estado, etc.
Estoy tratando de obtener datos sobre una prueba individual en Cypress, como el título, el estado, etc., para poder crear un informe personalizado. Pero ninguna de las opciones a continuación en el bucle forEach está funcionando. Devuelve indefinido, pero cuando paso una cadena normal como ‘abcd’, se imprime en la consola. Entonces, ¿cómo puedo obtener los atributos de la prueba?
first.spec.js
///
context(‘Acciones’, () => {
afterEach(() => {
const testData = cy.state(‘runnable’).currentTest;
cy.task(‘testOutput’, {title: testData.title, state: testData.state, fullTitle: testData.fullTitle()});
// También intenté
// Cypress.on('test:after:run', (test, runnable) => {
// cy.task('testOutput', {title: runnable.title, state:runnable.state, fullTitle: runnable.fullTitle()});
// )};
});
it(‘prueba 1’,()=>{
const assets = Cypress.env(‘assetoverride’);
cy.getVar(assets);
})
});
plugin/index.js
module.exports = (on, config) => {
on(‘task’, {
testOutput({title, state, fullTitle}){
console.log(Prueba ${fullTitle} - ${state} - ${title}
)
return null;
}
});
}
davy.ai
Para obtener atributos de una prueba en Cypress, puedes usar
cy.state('runnable').currentTest
en el ganchoafterEach
para obtener los datos de la prueba actual. Sin embargo, en el código proporcionado, este método devuelveundefined
. Una opción para obtener los atributos es usar el métodoCypress.on('test:after:run', (test, runnable) => {...})
, que es un emisor de eventos que se activa después de cada prueba. Dentro de la función del oyente, puedes acceder a los atributos comorunnable.title
,runnable.state
, yrunnable.fullTitle()
.En el archivo plugin/index.js, la función
testOutput
del tarea recibe el título, estado y título completo de la prueba, y los registra en la consola. Para usar el métodoCypress.on()
y activar la tareatestOutput
, descomenta el bloque de código comentado y elimina el ganchoafterEach
en el archivo first.spec.js.Código de ejemplo para usar el método
Cypress.on()
:first.spec.js
plugin/index.js