Cucumber-js: Informes: salida a archivo

Creado en 2 oct. 2012  ·  29Comentarios  ·  Fuente: cucumber/cucumber-js

Actualmente no es posible especificar un archivo de "salida" como argumento CLI para guardar informes. El formateador JSON parece escribir directamente en STDOUT, lo que puede ser un problema al depurar (usando console.log) o si el programa falla, produciendo JSON no válido.

Sería deseable que esto funcionara como pepino en rubí, permitiendo guardar múltiples formatos en archivos de salida separados.

Comentario más útil

@cedriclombardot

Hay una manera de seleccionar un directorio para la salida json del transportador de 1.5.0, aunque no lo he usado.
Actualmente, agregué un gancho para poder usar el formateador pretty y json juntos:

module.exports = function JsonOutputHook() {
  var Cucumber = require('cucumber');
  var JsonFormatter = Cucumber.Listener.JsonFormatter();
  var fs = require('fs');

  JsonFormatter.log = function (json) {
    fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
      if (err) throw err;
      console.log('json file location: test/e2e/output/cucumberReport.json');
    });
  };

  this.registerListener(JsonFormatter);
};

Todos 29 comentarios

En realidad, hay dos problemas separados aquí:

  1. redirigir el formateador (no solo JSON sino también _pretty_, _progress_, _html_, etc.) a otro archivo que no sea STDOUT;
  2. permiten múltiples formateadores en una sola ejecución.

Creé un problema separado con respecto a los múltiples formateadores.

Julien, ¿hay alguna noticia sobre cuándo podríamos especificar un archivo de salida HTML?

+1

+1

Hola, he estado copiando y pegando manualmente el contenido de los resultados JSON en el archivo cucumber.json en el directorio de datos de cucumber-json2report-master, lo que me permite obtener buenos resultados de la ejecución, pero sería genial si cucumber.js podría colocar el archivo en ese directorio, eliminando así el paso manual.

Realmente no quiero piratear la versión o crear una bifurcación. Sugerencias?

¿Algún avance en esto?

@letshaveyer, esto le parece una característica útil. ¿Por qué no envías una solicitud de extracción?

Hasta que esto funcione, puede modificar json_formatter.js. Esto es un truco pero mucho más fácil que copiar y pegar cada vez. También estamos agregando una marca de tiempo al nombre del archivo.

Cambiar el objeto formatterIo para escribir también en un archivo

var formatterIo = {
escribir: función (cadena) {
self.log (cadena);
fs.writeFileSync ('ruta \ test_results.json', cadena); // adicional
}
};

Esto es algo simple de hacer con redireccionamientos de tubería simples en unix y bash

cucumber-js --format=json | tee wow.json

+1 para cerrar

No podemos canalizarlo. Estamos usando el archivo de configuración de transportador para configurar cucumberjs
opciones

PepinoOptos: {
Formato: 'JSON',
Etiquetas: ' @testRun '
}

Tenemos un archivo bat que usa el nodo para iniciar el transportador.

Puntilla
El 5 de agosto de 2014 a las 9:54 a. M., "Sam Saccone" [email protected] escribió:

Esto es algo simple de hacer con redireccionamientos de tubería simples en unix

pepino-js --format = json | tee wow.json

+1 para cerrar

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997.

Interesante @ brad8118, esto parece que sería una característica del transportador y no del pepino.

transportador invoca pepino y lo que hace con la salida es responsabilidad del transportador y no pepino.

Esos son solo mis pensamientos iniciales, aunque abiertos a ideas. Solo estoy tratando de evitar el arrastre de funciones de la biblioteca de pepino.

@ brad8118 Estoy usando un transportador. Realmente no quiero confundir el código fuente. ¿Hay alguna forma de que pueda agregar un gancho o un archivo de soporte para hacer eso?

var formatterIo = {
write: function(string){
self.log(string);
fs.writeFileSync('path\test_results.json', string); // added
}
};

El transportador de

@ jlin412 , no sé cómo pasar / obtener el json que se está generando sin cambiar cucumber.js.
También he pensado en la función de limpieza en nuestro archivo de configuración json del transportador. Pero solo pasa 1 o 0.

// ----- The cleanup step -----
//
// A callback function called once the tests have finished running and
// the webdriver instance has been shut down. It is passed the exit code
// (0 if the tests passed or 1 if not).
onCleanUp: function () {}

Parece que esto ya está hecho en otra bifurcación. nicolassenechal @ b337b18

@ jlin412 cuando lindo y pegue el archivo json. ¿Qué estás haciendo con eso? ¿Lo estás convirtiendo a html?

@ brad8118 Utilizo la redirección para enviar la salida json a un archivo desde el transportador y luego tengo la función de tarea gruñona para filtrar el formato json usando la coincidencia de expresiones regulares:

  grunt.registerTask('jsonOutput', function () {
    var testOutput = grunt.file.read('test/e2e/tmp/cucumberOutput.json');
    var json = testOutput.match(/(\[\s+\{[\s\S]*\}\s+\]\s+\}\s+\]\s+\}\s+\])/)[1];
    grunt.file.write('test/e2e/output/cucumberReport.json', json);
  });

Luego utilizo sándwich de pepino para convertirlo a html (un proyecto de Java).
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

Hice una pequeña modificación en la base del código de sándwich de pepino para poder llamarlo a pedido en lugar de depender del oyente de eventos del archivo.

Hola chicos, ¿solo estoy tratando de entender cuándo se enviará esto al maestro de pepino-js? Necesito esta funcionalidad ahora, pero desconfío de confiar en una rama bifurcada. ¿Podría darme una idea de cuándo estará disponible en cucumber-js master y solo una idea rápida de si es prudente confiar en una de las ramas bifurcadas mientras tanto? Gracias, Fraser.

+1 - Sé que no soy el único en pasar por algunas contorsiones locas para usar pepino con transportador cuando una bandera para escribir en un archivo sería muy útil. No entiendo por qué escribir en un archivo se considera una característica lenta. ¿El pepino solo está destinado a permitir que los desarrolladores inspeccionen visualmente la calidad de su trabajo? ¿No se supone que debemos usar pepino dentro del alcance de un entorno de prueba más amplio? Esto no puede ser tan ...

Hola,

Cualquiera puede ayudarme, no he encontrado cómo configurar correctamente la salida json en el archivo.
Yo uso gulp + transportador + cucumberjs

Gracias por adelantado

@cedriclombardot

Hay una manera de seleccionar un directorio para la salida json del transportador de 1.5.0, aunque no lo he usado.
Actualmente, agregué un gancho para poder usar el formateador pretty y json juntos:

module.exports = function JsonOutputHook() {
  var Cucumber = require('cucumber');
  var JsonFormatter = Cucumber.Listener.JsonFormatter();
  var fs = require('fs');

  JsonFormatter.log = function (json) {
    fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
      if (err) throw err;
      console.log('json file location: test/e2e/output/cucumberReport.json');
    });
  };

  this.registerListener(JsonFormatter);
};

No he visto que el resultJsonOutputFile parece funcionar mágicamente y listo
para ir en xml con: https://www.npmjs.com/package/protractor-cucumber-junit

Cédric

2015-01-02 18:34 GMT + 01: 00 Jason Lin [email protected] :

@cedriclombardot https://github.com/cedriclombardot

Hay una manera de seleccionar un directorio para la salida json del transportador de
1.5.0 aunque no lo he usado.
Actualmente, agregué un gancho para poder usar el formateador pretty y json juntos:

module.exports = function JsonOutputHook () {
var Pepino = require ('pepino');
var JsonFormatter = Cucumber.Listener.JsonFormatter ();
var fs = require ('fs');

JsonFormatter.log = function (json) {
fs.writeFile ('test / e2e / output / cucumberReport.json', json, function (err) {
si (err) lanzar err;
console.log ('ubicación del archivo json: test / e2e / output / cucumberReport.json');
});
};

this.registerListener (JsonFormatter);
};

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -68544890.

+1

Entonces, ¿podríamos obtener una actualización sobre cuándo se comprometerá esto con el maestro? Actualmente estoy usando cucumberjs menos transportador (o cualquier otro marco de prueba web de estilo selenio), por lo que necesito cucumberjs para producir un informe formateado.

¿Algún avance en esto? Esto nos ha causado suficientes problemas para pensar en parchear este módulo o mirar en paralelo-pepino (que maneja este caso).

cucumberjs -> webdriverio

+1

Sigo esta descripción para guardar el formato json de cucumberjs.

https://github.com/mrooding/gulp-protractor-cucumber-html-report#saving -cucumberjs-json-to-disk-when-using-transportador

  1. Agregue un oyente al formateador CucumberJS JSON y guárdelo en un archivo
  2. protractor.conf.js agrega una referencia al detector de gancho

Es trabajo

si alguien se pierde la hora feliz debido a los informes de pepino js, ​​estamos usando cucumber-html-reports

  1. actualice su hooks.js
support.registerHandler('AfterFeatures', () => {
    ///* creates report
    var options = {
        theme: 'bootstrap',
        jsonFile: 'cucumberReports/report.json',
        output: 'cucumberReports/report.html',
        reportSuiteAsScenarios: true,
        launchReport: true,
        metadata: {
            "App Version":"0.3.2",
            "Test Environment": "POC",
            //"Browser": "Chrome  54.0.2840.98",
            //"Platform": "Windows 10",
            //"Parallel": "Scenarios",
            //"Executed": "Remote"
        }
      };

    reporter.generate(options);
  });

actualice su transportador.conf.cucumberOpts
format: 'json:cucumberReports/report.json',

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Abra un nuevo problema para errores relacionados.

¿Fue útil esta página
0 / 5 - 0 calificaciones