νμ¬ λ³΄κ³ μ μ μ₯μ μν CLI μΈμλ‘ "μΆλ ₯" νμΌμ μ§μ ν μ μμ΅λλ€. JSON ν¬λ§·ν°λ STDOUTμ μ§μ μ°λ κ² κ°μ΅λλ€. μ΄λ λλ²κΉ (console.log μ¬μ©)ν λ λ¬Έμ κ° λκ±°λ νλ‘κ·Έλ¨μ΄ μ€ν¨νμ¬ μλͺ»λ JSONμ μμ±ν λ λ¬Έμ κ° λ μ μμ΅λλ€.
μ΄κ²μ΄ 루λΉμ μ€μ΄μ²λΌ μλνμ¬ μ¬λ¬ νμμ λ³λμ μΆλ ₯ νμΌμ μ μ₯ν μ μλ€λ©΄ λ°λμ§ν κ²μ λλ€.
μ€μ λ‘ μ¬κΈ°μλ λ κ°μ§ λ³λμ λ¬Έμ κ° μμ΅λλ€.
μ¬λ¬ ν¬λ§·ν°μ λν΄ λ³λμ λ¬Έμ λ₯Ό λ§λ€μμ΅λλ€.
Julien μΈμ HTML μΆλ ₯ νμΌμ μ§μ ν μ μλμ§μ λν μμμ΄ μμ΅λκΉ?
+1
+1
μλ νμΈμ μ λ JSON κ²°κ³Όμ λ΄μ©μ μλμΌλ‘ 볡μ¬νμ¬ μ€μ΄-json2report-masterμ λ°μ΄ν° λλ ν 리μ μλ μ€μ΄.json νμΌμ λΆμ¬λ£μμ΅λλ€. μ΄λ κ² νλ©΄ λ©μ§ μ€ν κ²°κ³Όλ₯Ό μ»μ μ μμ§λ§ λ€μκ³Ό κ°μ κ²½μ°μ μ’μ κ²μ λλ€. μ€μ΄.jsλ ν΄λΉ λλ ν 리μ νμΌμ λ°°μΉν μ μμΌλ―λ‘ μλ λ¨κ³κ° νμνμ§ μμ΅λλ€.
λ²μ μ ν΄νΉνκ±°λ ν¬ν¬λ₯Ό λ§λ€κ³ μΆμ§ μμ΅λλ€. μ μ?
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
@letshaveyer μ΄κ²μ λΉμ μκ² μ μ©ν κΈ°λ₯μ²λΌ λ€λ¦½λλ€. pull requestλ₯Ό 보λ΄μ§ μλ μ΄μ λ 무μμ λκΉ?
μ΄κ²μ΄ μλν λκΉμ§ json_formatter.jsλ₯Ό μμ ν μ μμ΅λλ€. μ΄κ²μ ν΄νΉμ΄μ§λ§ λ§€λ² λΆμ¬ λ£κΈ°λ₯Ό 볡μ¬νλ κ²λ³΄λ€ ν¨μ¬ μ½μ΅λλ€. λν νμΌ μ΄λ¦μ νμ μ€ν¬νλ₯Ό μΆκ°νκ³ μμ΅λλ€.
νμΌμλ μ°λλ‘ formatterIo κ°μ²΄λ₯Ό λ³κ²½ν©λλ€.
var ν¬λ§·ν°Io = {
μ°κΈ°: ν¨μ(λ¬Έμμ΄){
self.log(λ¬Έμμ΄);
fs.writeFileSync('κ²½λ‘\test_results.json', λ¬Έμμ΄); // μΆκ°λ¨
}
};
μ΄κ²μ μ λμ€μ λ°°μμμ κ°λ¨ν νμ΄ν 리λλ μ μΌλ‘ ν μ μλ κ°λ¨ν μΌμ λλ€.
cucumber-js --format=json | tee wow.json
λ«μΌλ €λ©΄ +1
μ°λ¦¬λ κ·Έκ²μ νμ΄ν ν μ μμ΅λλ€. μ°λ¦¬λ μ€μ΄jsλ₯Ό μ€μ νκΈ° μν΄ κ°λκΈ°μ μ€μ νμΌμ μ¬μ©νκ³ μμ΅λλ€.
μ΅μ
μ€μ΄ μ΅μ
: {
νμ: 'JSON',
νκ·Έ: ' @testRun '
}
λ Έλλ₯Ό μ¬μ©νμ¬ κ°λκΈ°λ₯Ό μμνλ bat νμΌμ΄ μμ΅λλ€.
λΈλλ
2014λ
8μ 5μΌ μ€μ 9μ 54λΆμ "Sam Saccone" [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
μ΄κ²μ μ λμ€μμ κ°λ¨ν νμ΄ν 리λλ μ μΌλ‘ μνν μ μλ κ°λ¨ν μμ μ λλ€.
μ€μ΄-js --format=json | ν° μμ°.json
λ«μΌλ €λ©΄ +1
β
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997.
ν₯λ―Έλ‘κ²λ @brad8118 μ΄κ²μ μ€μ΄κ° μλλΌ κ°λκΈ°μ κΈ°λ₯μΈ κ² κ°μ΅λλ€.
κ°λκΈ°λ μ€μ΄λ₯Ό νΈμΆνκ³ μΆλ ₯μΌλ‘ μννλ μμ μ μ€μ΄κ° μλλΌ κ°λκΈ°μ μ± μμ λλ€.
κ·Έκ²μ λ¨μ§ λ΄ μ΄κΈ° μκ°μΌ λΏμ΄λ©°, μμ΄λμ΄μ μ΄λ € μμ΅λλ€. λλ μ€μ΄ libμ κΈ°λ₯ ν¬λ¦¬νλ₯Ό λ°©μ§νλ €κ³ ν©λλ€.
@brad8118 μ λ κ°λκΈ°λ₯Ό μ¬μ©νκ³ μμ΅λλ€. μμ€ μ½λλ₯Ό μλ§μΌλ‘ λ§λ€κ³ μΆμ§ μμ΅λλ€. μ΄λ₯Ό μν΄ νν¬ λλ μ§μ νμΌμ μΆκ°ν μ μλ λ°©λ²μ΄ μμ΅λκΉ?
var formatterIo = {
write: function(string){
self.log(string);
fs.writeFileSync('path\test_results.json', string); // added
}
};
@samccone κ°λκΈ° μ¬μ© κΈ°λ³Έ λ³΄κ³ λ μ¬μ© μ€μΈ νλ μμν¬μ λ°λΌ λ€λ¦ λλ€. Jasmineμ μ¬μ©νλ κ²½μ° Jasmineμ λ³΄κ³ κΈ°λ₯μ μ¬μ©ν©λλ€. μ€μ΄ νλ μμν¬λ₯Ό μ¬μ©νλ κ²½μ° νμ¬λ‘μλ νμΌμ μΆλ ₯ν λ°©λ²μ΄ μλ μ€μ΄.jsμ λ³΄κ³ κΈ°λ₯μ μ¬μ©ν©λλ€.
@jlin412 , λλ cucumber.jsλ₯Ό λ³κ²½νμ§ μκ³ μμ±λλ jsonμ μ λ¬/κ°μ Έμ€λ λ°©λ²μ λͺ¨λ₯΄κ² μ΅λλ€.
λν κ°λκΈ° json κ΅¬μ± νμΌμ μ 리 κΈ°λ₯μ λν΄μλ μκ°νμ΅λλ€. κ·Έλ¬λ 1 λλ 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 () {}
μ΄κ²μ μ΄λ―Έ λ€λ₯Έ ν¬ν¬μμ μλ£λ κ² κ°μ΅λλ€. λμ½λΌμΈλ€μ°°@b337b18
@jlin412 κ·μ¬μ° λ©΄ json.λΆμ¬λ£κΈ°. κ·Έκ±Έλ‘ λνλκ±°μΌ? htmlλ‘ λ³ννμλμ?
@brad8118 리λλ μ μ μ¬μ©νμ¬ json μΆλ ₯μ κ°λκΈ°μμ νμΌλ‘ λ³΄λΈ λ€μ μ κ·μ μΌμΉλ₯Ό μ¬μ©νμ¬ json νμμ νν°λ§νλ
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);
});
κ·Έλ° λ€μ μ€μ΄ μλμμΉλ₯Ό ββμ¬μ©νμ¬ html(μλ° νλ‘μ νΈ)λ‘ λ³νν©λλ€.
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/
νμΌ μ΄λ²€νΈ 리μ€λμ μμ‘΄νμ§ μκ³ μμ² μ νΈμΆν μ μλλ‘ μ€μ΄ μλμμΉ μ½λ λ² μ΄μ€λ₯Ό μ½κ° μμ νμ΅λλ€.
μλ μλ€μ, μ΄κ²μ΄ μ€μ΄-js λ§μ€ν°μκ² μΈμ λ€μ 컀λ°λ μ§ μκ°ν΄ λ³ΌκΉ? μ§κΈ μ΄ κΈ°λ₯μ΄ νμνμ§λ§ λΆκΈ°λ λΆκΈ°μ μμ‘΄νλ κ²μ μ‘°μ¬μ€λ½μ΅λλ€. μ€μ΄-js λ§μ€ν°μμ μΈμ μ¬μ©ν μ μλμ§ κ·Έλ¦¬κ³ κ·Έ λμ λΆκΈ°λ λΆκΈ° μ€ νλμ μμ‘΄νλ κ²μ΄ νλͺ νμ§ κ°λ¨ν μμ΄λμ΄λ₯Ό μλ €μ£Όμ€ μ μμ΅λκΉ? κ³ λ§μ, νλ μ΄μ .
+1 -- νμΌμ μ°λ νλκ·Έκ° λμμ΄ λ λ κ°λκΈ°μ ν¨κ» μ€μ΄λ₯Ό μ¬μ©νκΈ° μν΄ λ―ΈμΉ μ§μ νλ κ²μ λ νΌμκ° μλλΌλ κ²μ μλλ€. νμΌμ μ°λ κ²μ΄ κΈ°λ₯ ν¬λ¦½μΌλ‘ κ°μ£Όλλ μ΄μ λ₯Ό μ΄ν΄νμ§ λͺ»ν©λλ€. μ€μ΄λ κ°λ°μκ° μμ νμ§μ μκ°μ μΌλ‘ κ²μ¬ν μ μλλ‘ νκΈ° μν μ©λλ‘λ§ μ¬μ©λ©λκΉ? λ ν° ν μ€νΈ νκ²½μ λ²μ λ΄μμ μ€μ΄λ₯Ό μ¬μ©ν΄μλ μ λ©λκΉ? μ΄λ¬λ©΄ μλλλ°...
μλ νμΈμ,
λꡬλ μ§ λλ₯Ό λμΈ μ μμ΅λλ€. json μΆλ ₯μ νμΌλ‘ μ¬λ°λ₯΄κ² ꡬμ±νλ λ°©λ²μ μ°Ύμ§ λͺ»νμ΅λλ€.
λλ κΏκΊ½ κΏκΊ½ + κ°λκΈ° + μ€μ΄λ₯Ό μ¬μ©ν©λλ€.
미리 κ°μ¬λ립λλ€
@cedriclombardot
λλ κ·Έκ²μ μ¬μ©νμ§ μμμ§λ§ 1.5.0μμ κ°λκΈ°μμ json μΆλ ₯μ λλ ν 리λ₯Ό μ ννλ λ°©λ²μ΄ μμ΅λλ€.
νμ¬, λλ prettyμ json ν¬λ§·ν°λ₯Ό ν¨κ» μ¬μ©ν μ μλλ‘ νν¬λ₯Ό μΆκ°νμ΅λλ€.
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);
};
resultJsonOutputFile
μ΄ λ§μ μ²λΌ μλνκ³ μ€λΉλλ κ²μ λ³Έ μ μ΄ μμ΅λλ€.
https://www.npmjs.com/package/protractor-cucumber-junitμ μ¬μ© νμ¬ xmlλ‘ μ΄λ
μΈλλ¦
2015-01-02 18:34 GMT+01:00 μ μ΄μ¨ λ¦° μλ¦Ό @github.com :
@cedriclombardot https://github.com/cedriclombardot
κ°λκΈ°μμ json μΆλ ₯μ λν λλ ν 리λ₯Ό μ ννλ λ°©λ²μ΄ μμ΅λλ€.
1.5.0μ μ¬μ©νμ§ μμμ§λ§.
νμ¬, λλ prettyμ json ν¬λ§·ν°λ₯Ό ν¨κ» μ¬μ©ν μ μλλ‘ νν¬λ₯Ό μΆκ°νμ΅λλ€.module.exports = ν¨μ JsonOutputHook() {
var μ€μ΄ = require('μ€μ΄');
var JsonFormatter = Cucumber.Listener.JsonFormatter();
var fs = μꡬ('fs');JsonFormatter.log = ν¨μ(json) {
fs.writeFile('ν μ€νΈ/e2e/μΆλ ₯/cucumberReport.json', json, ν¨μ(μ€λ₯) {
(err) μ€λ₯λ₯Ό λμ§λ©΄;
console.log('json νμΌ μμΉ: test/e2e/output/cucumberReport.json');
});
};this.registerListener(JsonFormatter);
};β
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -68544890.
+1
μ΄κ²μ΄ μΈμ λ§μ€ν°μ 컀λ°λλμ§μ λν μ λ°μ΄νΈλ₯Ό μ»μ μ μμ΅λκΉ? μ λ νμ¬ μ€μ΄js λ§μ΄λμ€ κ°λκΈ°(λλ λ€λ₯Έ μ λ λ μ€νμΌ μΉ ν μ€νΈ νλ μμν¬)λ₯Ό μ¬μ©νκ³ μμΌλ―λ‘ νμμ΄ μ§μ λ λ³΄κ³ μλ₯Ό μμ±νλ €λ©΄ μ€μ΄jsκ° νμν©λλ€.
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ? μ΄λ‘ μΈν΄ μ΄ λͺ¨λμ ν¨μΉνκ±°λ λ³λ ¬ μ€μ΄(μ΄ κ²½μ°λ₯Ό μ²λ¦¬ν¨)λ₯Ό μ΄ν΄λ³΄λ κ²μ λν΄ μκ°ν μ μλ μΆ©λΆν λ¬Έμ κ° λ°μνμ΅λλ€.
μ€μ΄js -> μΉλλΌμ΄λ²
+1
μ΄ μ€λͺ μ λ°λΌ μ€μ΄js json νμμ μ μ₯ν©λλ€.
https://github.com/mrooding/gulp-protractor-cucumber-html-report#saving -cucumberjs-json-to-disk-when-using-protractor
μΌμ΄μΌ
μ€μ΄ js λ³΄κ³ μλ‘ μΈν΄ ν볡ν μκ°μ λμΉλ μ¬λμ΄ μλ κ²½μ° μ€μ΄-html-reportsλ₯Ό μ¬μ©νκ³ μμ΅λλ€.
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);
});
protractor.conf.cucumberOpts μ
λ°μ΄νΈ
format: 'json:cucumberReports/report.json',
μ΄ μ€λ λλ λ«ν ν μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ κ²Όμ΅λλ€. κ΄λ ¨ λ²κ·Έμ λν μ λ¬Έμ λ₯Ό μ¬μμμ€.
κ°μ₯ μ μ©ν λκΈ
@cedriclombardot
λλ κ·Έκ²μ μ¬μ©νμ§ μμμ§λ§ 1.5.0μμ κ°λκΈ°μμ json μΆλ ₯μ λλ ν 리λ₯Ό μ ννλ λ°©λ²μ΄ μμ΅λλ€.
νμ¬, λλ prettyμ json ν¬λ§·ν°λ₯Ό ν¨κ» μ¬μ©ν μ μλλ‘ νν¬λ₯Ό μΆκ°νμ΅λλ€.