Cucumber-js: Reporting - Sortie dans un fichier

Créé le 2 oct. 2012  ·  29Commentaires  ·  Source: cucumber/cucumber-js

Il n'est actuellement pas possible de spécifier un fichier de "sortie" comme argument CLI pour l'enregistrement des rapports. Le formateur JSON semble écrire directement sur STDOUT, ce qui peut être un problème lors du débogage (à l'aide de console.log) ou si le programme échoue, produisant un JSON invalide.

Il serait souhaitable que cela fonctionne comme le concombre dans Ruby, permettant à plusieurs formats d'être enregistrés dans des fichiers de sortie séparés.

Commentaire le plus utile

@cedriclombardot

Il existe un moyen de sélectionner un répertoire vers la sortie json du rapporteur à partir de la version 1.5.0, bien que je ne l'aie pas utilisé.
Actuellement, j'ai ajouté un crochet pour pouvoir utiliser les formateurs pretty et json ensemble :

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

Tous les 29 commentaires

Il y a en fait deux problèmes distincts ici :

  1. rediriger le formateur (pas seulement JSON mais aussi _pretty_, _progress_, _html_, etc.) vers un autre fichier que STDOUT ;
  2. permettre plusieurs formateurs en un seul passage.

J'ai créé un problème séparé concernant les multiples formateurs.

Julien, y a-t-il des nouvelles du moment où nous serions en mesure de spécifier un fichier de sortie HTML ?

+1

+1

Salut, j'ai copié et collé manuellement le contenu des résultats JSON dans le fichier cucumber.json dans le répertoire de données de cucumber-json2report-master, ce qui me permet d'obtenir de bons résultats de l'exécution, mais ce serait génial si cucumber.js pourrait placer le fichier dans ce répertoire, éliminant ainsi l'étape manuelle.

Je ne veux pas vraiment pirater la version ou créer un fork. Suggestions?

Une mise à jour pour ceci?

@letshaveyer, cela vous semble une fonctionnalité utile. Pourquoi n'envoyez-vous pas de demande de tirage ?

Jusqu'à ce que cela fonctionne, vous pouvez modifier json_formatter.js. C'est hack mais beaucoup plus facile que de copier un coller à chaque fois. Nous ajoutons également un horodatage au nom de fichier.

Modifiez l'objet formatterIo pour qu'il écrive également dans un fichier

var formatterIo = {
écrire : fonction(chaîne){
self.log(chaîne);
fs.writeFileSync('chemin\test_results.json', chaîne); // ajoutée
}
} ;

C'est une chose simple à faire avec de simples redirections de tuyaux dans unix et bash

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

+1 pour fermer

Nous ne pouvons pas le canaliser. Nous utilisons le fichier de configuration du rapporteur pour définir cucumberjs
options

Opt concombre : {
Format : 'JSON',
Mots clés : ' @testRun '
}

Nous avons un fichier bat qui utilise un nœud pour démarrer le rapporteur.

Brad
Le 5 août 2014 à 9 h 54, "Sam Saccone" [email protected] a écrit :

C'est une chose simple à faire avec de simples redirections de tuyaux sous unix

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

+1 pour fermer

-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997.

Intéressant @ brad8118, cela semble être une caractéristique du rapporteur et non du concombre.

le rapporteur invoque le concombre et ce qu'il fait avec la sortie relève de la responsabilité du rapporteur et non du concombre.

Ce ne sont que mes premières réflexions, ouvertes aux idées. J'essaie juste d'empêcher le glissement des fonctionnalités de la bibliothèque de concombre.

@ brad8118 J'utilise un rapporteur. Je ne veux pas vraiment brouiller le code source. Existe-t-il un moyen d'ajouter un hook ou un fichier de support pour le faire?

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

Le rapporteur

@ jlin412 , je ne sais pas comment passer/obtenir le json qui est généré sans changer cucumber.js.
J'ai également pensé à la fonction de nettoyage dans notre fichier de configuration json rapporteur. Mais il ne passe que 1 ou 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 () {}

On dirait que cela est déjà fait dans une autre fourchette. nicolassenechal@b337b18

@ jlin412 quand vous mignon et collez le json. Qu'est-ce que tu fais avec ? Est-ce que tu le convertis en html ?

@ brad8118 J'utilise la redirection pour envoyer la sortie json vers un fichier à partir du rapporteur, puis j'ai la fonction de tâche de grognement pour filtrer le format json à l'aide de la correspondance regex :

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

Ensuite, j'utilise un sandwich au concombre pour convertir en html (un projet java).
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

J'ai apporté une légère modification à la base de code du sandwich au concombre afin que je puisse l'appeler à la demande plutôt que de dépendre de l'écouteur d'événement de fichier.

Salut les gars, j'essaie juste de comprendre quand cela sera remis au maître concombre-js? J'ai besoin de cette fonctionnalité maintenant, mais je me méfie de compter sur une branche fourchue. Pourriez-vous me donner une idée de quand il sera disponible dans cucumber-js master et juste une idée rapide de s'il est sage de s'appuyer sur l'une des branches fourchues en attendant ? Merci, Fraser.

+1 -- Je sais que je ne suis pas le seul à subir des contorsions folles pour utiliser du concombre avec un rapporteur alors qu'un indicateur pour écrire dans un fichier serait tellement utile. Je ne comprends pas pourquoi l'écriture dans un fichier est considérée comme un glissement de fonctionnalité. Le concombre est-il uniquement destiné à permettre aux développeurs d'inspecter visuellement la qualité de leur travail ? Ne sommes-nous pas censés utiliser le concombre dans le cadre d'un environnement de test plus large ? Cela ne peut pas être ainsi...

Salut,

N'importe qui peut m'aider, je n'ai pas trouvé comment configurer correctement la sortie json dans un fichier.
J'utilise gulp+rapporteur+concombrejs

Merci d'avance

@cedriclombardot

Il existe un moyen de sélectionner un répertoire vers la sortie json du rapporteur à partir de la version 1.5.0, bien que je ne l'aie pas utilisé.
Actuellement, j'ai ajouté un crochet pour pouvoir utiliser les formateurs pretty et json ensemble :

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

Je n'ai pas vu que le resultJsonOutputFile semble fonctionner comme par magie et prêt
aller en xml avec : https://www.npmjs.com/package/protractor-cucumber-junit

Cédric

02/01/2015 18:34 GMT":" Jason Lin [email protected] :

@cedriclombardot https://github.com/cedriclombardot

Il existe un moyen de sélectionner un répertoire vers la sortie json du rapporteur à partir de
1.5.0 bien que je ne l'aie pas utilisé.
Actuellement, j'ai ajouté un crochet pour pouvoir utiliser les formateurs pretty et json ensemble :

module.exports = fonction JsonOutputHook() {
var Concombre = require('concombre');
var JsonFormatter = Cucumber.Listener.JsonFormatter();
var fs = require('fs');

JsonFormatter.log = fonction (json) {
fs.writeFile('test/e2e/output/cucumberReport.json', json, fonction (err) {
si (err) jeter err ;
console.log('emplacement du fichier json : test/e2e/output/cucumberReport.json');
});
} ;

this.registerListener(JsonFormatter);
} ;

-
Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment-68544890 .

+1

Pourrions-nous s'il vous plaît obtenir une mise à jour sur le moment où cela sera engagé dans le master ? J'utilise actuellement cucumberjs moins rapporteur (ou tout autre framework de test Web de style sélénium), j'ai donc besoin de cucumberjs pour produire un rapport formaté.

Une mise à jour pour ceci? Cela nous a causé suffisamment de problèmes pour penser à patcher ce module ou à examiner le concombre parallèle (qui gère ce cas).

concombrejs -> webdriverio

+1

Je suis cette description pour enregistrer le format json cucumberjs.

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

  1. Ajoutez un écouteur au formateur JSON CucumberJS et enregistrez-le dans un fichier
  2. protractor.conf.js ajoute une référence à l'écouteur de crochet

C'est du travail

si quelqu'un manque l'happy hour à cause des rapports js sur le concombre, nous utilisons les rapports concombre-html

  1. mettre à jour votre 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);
  });

mettre à jour votre protractor.conf.cucumberOpts
format: 'json:cucumberReports/report.json',

Ce fil a été automatiquement verrouillé car il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème pour les bogues liés.

Cette page vous a été utile?
0 / 5 - 0 notes