es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}
});
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener atributos de una prueba en Cypress, puedes usar cy.state('runnable').currentTest en el gancho afterEach para obtener los datos de la prueba actual. Sin embargo, en el código proporcionado, este método devuelve undefined. Una opción para obtener los atributos es usar el método Cypress.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 como runnable.title, runnable.state, y runnable.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étodo Cypress.on() y activar la tarea testOutput, descomenta el bloque de código comentado y elimina el gancho afterEach en el archivo first.spec.js.

    Código de ejemplo para usar el método Cypress.on():

    first.spec.js

    /// <reference types="cypress"></reference>
    context('Actions', () => {
      it('test 1',() => {
        const assets = Cypress.env('assetoverride');
        cy.getVar(assets);
      })
    });
    

    plugin/index.js

    module.exports = (on, config) => {
      Cypress.on('test:after:run', (test, runnable) => {
        const title = runnable.title;
        const state = runnable.state;
        const fullTitle = runnable.fullTitle();
        cy.task('testOutput', { title, state, fullTitle });
      });
      on('task', {
        testOutput({title, state, fullTitle}){
          console.log(`Prueba ${fullTitle} - ${state} - ${title}`)
          return null;
        }
      });
    }
    

Comments are closed.