Skip to content

Error en creación de reportes. #4

@juanmanuelgg

Description

@juanmanuelgg

Descripción

Durante la creación de archivos auxiliares que soportan la creación del reporte se genera un error si se debe crear un archivo sin que alguna de las carpetas presentes en la ruta hayan sido creadas previamente.

Contexto

En esta sección se debe detallar el contexto en el que fue ejecutado el escenario de prueba.

  • Versión de la app: kraken-node 1.0.24
  • Sistema operativo: Windows 11, Ubuntu 24.04, Debian bookworm 12.10, (Mac, no pude probar)
  • Browser ( nombre y versión ): No aplica en este issue.

Pasos a reproducir

reproducir-error-kraken

  1. Instalar las dependencias de Kraken (Java, Android SDK, Appium).
  2. Instalar las dependencias de un proyecto e2e-kraken a traves del comando npm install.
  3. Crear 2 o mas archivos .feature con sus steps requeridos.
  4. Ejecutar kraken con el comando npm test.

Comportamiento Actual

.

1 scenario (1 passed)
3 steps (3 passed)
0m05.105s (executing steps: 0m05.088s)
node:fs:562
  return binding.open(
                 ^

Error: ENOENT: no such file or directory, open '/home/node/tests/reports/f926569dd41b54a450b7/assets/js/data.json'
    at Object.openSync (node:fs:562:18)
    at FileHelper.createFileIfDoesNotExist (/home/node/tests/node_modules/kraken-node/lib/utils/FileHelper.js:86:26)
    at Reporter.generateGeneralReport (/home/node/tests/node_modules/kraken-node/lib/reports/Reporter.js:173:44)
    at Reporter.saveReport (/home/node/tests/node_modules/kraken-node/lib/reports/Reporter.js:60:14)
    at TestScenario.afterExecute (/home/node/tests/node_modules/kraken-node/lib/TestScenario.js:123:23)
    at TestScenario.<anonymous> (/home/node/tests/node_modules/kraken-node/lib/TestScenario.js:91:30)
    at step (/home/node/tests/node_modules/kraken-node/lib/TestScenario.js:52:23)
    at Object.next (/home/node/tests/node_modules/kraken-node/lib/TestScenario.js:33:53)
    at fulfilled (/home/node/tests/node_modules/kraken-node/lib/TestScenario.js:24:58) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/node/tests/reports/f926569dd41b54a450b7/assets/js/data.json'
}

Node.js v22.15.0

Comportamiento Esperado

.

1 scenario (1 passed)
3 steps (3 passed)
0m05.107s (executing steps: 0m05.100s)

Evidencias

Video con evidencia del error

Información Adicional

Posibles soluciones

Usar solo un archivo .feature

He visto que se popularizo la idea de que Kraken no soporta pruebas distribuidas en varios archivos. Veo eso como una mala interpretación del problema que se describe en este issue.

Preparación de las carpetas antes del reporte

A traves de los hooks de Kraken se puede preparar la existencia de algunas carpetas antes de la generación del reporte. Esta solución también ha sido usada en semestres pasados. Esto requiere editar el archivo: ./features/web/support/hooks.js

const { After, Before, AfterStep, BeforeStep, BeforeAll } = require('@cucumber/cucumber');
const { WebClient, Device } = require('kraken-node');

Before(async function() {
  this.deviceClient = new WebClient('chrome', {}, this.userId);
  this.driver = await this.deviceClient.startKrakenForUserId(this.userId);
})

After(async function() {
  await this.deviceClient.stopKrakenForUserId(this.userId);
});

AfterStep(async function(Scenario){
  const fs = require('fs');
  const folderPath = "./reports/screenshot/"+Scenario.pickle.name.replace(/\s/g,'');
  
  if (!fs.existsSync(folderPath)){
    fs.mkdir(folderPath, { recursive: true }, (error) => {
      if (error) {
        console.error('Error al crear el directorio:', error);
      } else {
        console.log('Directorio creado exitosamente');
      }
    });  
  }  
  await this.driver.saveScreenshot("./reports/screenshot/"+Scenario.pickle.name.replace(/\s/g,'')+ "/Paso_"+ counter + ".png");

});

BeforeStep(async function(Scenario){
  counter++;
});

BeforeAll(async function(){
  counter=0;
});

Hacer un parche de la version local de Kraken

Insertar this.createFolderIfDoesNotExist(path_1.default.dirname(path)); en la Linea 86 del archivo ./node_modules/kraken-node/lib/utils/FileHelper.js

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions