-
Notifications
You must be signed in to change notification settings - Fork 11
Description
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
- Instalar las dependencias de Kraken (Java, Android SDK, Appium).
- Instalar las dependencias de un proyecto e2e-kraken a traves del comando
npm install. - Crear 2 o mas archivos .feature con sus steps requeridos.
- 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
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
