Protractor: μ£Όλ‹ˆνŠΈ 리포터

에 λ§Œλ“  2013λ…„ 08μ›” 28일  Β·  42μ½”λ©˜νŠΈ  Β·  좜처: angular/protractor

Jenkinsμ—μ„œ 각도기 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  μ‹ΆμœΌλ―€λ‘œ junit 리포터(karma와 같은)κ°€ 있으면 Jenkinsμ—μ„œ ν…ŒμŠ€νŠΈ μƒνƒœλ₯Ό 보고할 수 있으면 맀우 μœ μš©ν•©λ‹ˆλ‹€.

feature request

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ꡬ성 νŒŒμΌμ—μ„œ 이 μž‘μ—…μ„ μ•½κ°„ ν•΄ν‚Ήλœ λ°©μ‹μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 방법 - μ €λŠ” Protractor의 자체 ν…ŒμŠ€νŠΈ μ œν’ˆκ΅°μœΌλ‘œ 이것을 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

npm install jasmine-reporters

ꡬ성 파일:

require('jasmine-reporters');

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(
    'outputdir/', true, true));

// The main suite of Protractor tests.
exports.config = {
  seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',
  chromeDriver: './selenium/chromedriver',

  seleniumAddress: 'http://localhost:4444/wd/hub',

  // Spec patterns are relative to this directory.
  specs: [
    '*_spec.js'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8000',
};

λͺ¨λ“  42 λŒ“κΈ€

μ—¬κΈ° λ‚΄ 2μ„ΌνŠΈ: Gruntλ₯Ό λΉŒλ“œ λ„κ΅¬λ‘œ μ‚¬μš©ν•˜λŠ” 경우 grunt-jasmine-node λ₯Ό μ‚¬μš©ν•˜μ—¬ 각도기 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  JUnitκ³Ό μœ μ‚¬ν•œ λ³΄κ³ μ„œλ₯Ό 얻도둝 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€!

ꡬ성 νŒŒμΌμ—μ„œ 이 μž‘μ—…μ„ μ•½κ°„ ν•΄ν‚Ήλœ λ°©μ‹μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 방법 - μ €λŠ” Protractor의 자체 ν…ŒμŠ€νŠΈ μ œν’ˆκ΅°μœΌλ‘œ 이것을 ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

npm install jasmine-reporters

ꡬ성 파일:

require('jasmine-reporters');

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(
    'outputdir/', true, true));

// The main suite of Protractor tests.
exports.config = {
  seleniumServerJar: './selenium/selenium-server-standalone-2.35.0.jar',
  chromeDriver: './selenium/chromedriver',

  seleniumAddress: 'http://localhost:4444/wd/hub',

  // Spec patterns are relative to this directory.
  specs: [
    '*_spec.js'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8000',
};

μΆ”κ°€ μ˜ˆμ œλŠ” 이제 https://github.com/angular/protractor/blob/master/spec/junitOutputConf.js 에 ν‘œμ‹œλ©λ‹ˆλ‹€.

λ””λ ‰ν† λ¦¬μ˜ μƒλŒ€ 경둜 λ˜λŠ” μ ˆλŒ€ 경둜λ₯Ό ν—ˆμš©ν•©λ‹ˆκΉŒ? μƒλŒ€ κ²½λ‘œκ°€ μž‘λ™ν•˜μ§€ μ•ŠλŠ” λ™μ•ˆ μ ˆλŒ€ κ²½λ‘œλŠ” μž‘λ™ν•©λ‹ˆλ‹€. ../Reports와 같은 μ˜΅μ…˜μ„ μ‹œλ„ν–ˆμ§€λ§Œ 아무 μ†Œμš©μ΄ μ—†μŠ΅λ‹ˆλ‹€.
jasmine.getEnv().addReporter(
μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter('xmloutput', true, true));
},

탐색 및 μž‘μ—…, λ‚΄ λ§ˆμ§€λ§‰ 의견 λ¬΄μ‹œ

μ œκ°€ λ˜‘λ˜‘ν•˜μ§€ μ•Šμ•„μ„œ 폴더가 λ§Œλ“€μ–΄μ§€κΈΈ κΈ°λŒ€ν–ˆλŠ”λ° 사싀 미리 폴더λ₯Ό λ§Œλ“€μ–΄λ†”μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

@juliemr grunt-concurrent λ₯Ό 톡해 λ³‘λ ¬λ‘œ μ‹€ν–‰λ˜λŠ” 두 개의 각도기 μΈμŠ€ν„΄μŠ€μ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? Firefox와 Chromeμ—μ„œ λ™μ‹œμ— ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” 데 ν•„μš”ν•˜μ§€λ§Œ ν•˜λ‚˜μ˜ XML이 λ‹€λ₯Έ ν•˜λ‚˜λ₯Ό λŒ€μ²΄ν•˜κ²Œ λ˜μ–΄ Jenkinsλ₯Ό ν˜Όλž€μŠ€λŸ½κ²Œ λ§Œλ“€ κ²ƒμž…λ‹ˆλ‹€.

μ•„λ§ˆλ„ κ°λ„κΈ°λŠ” Karmaκ°€ ν•˜λŠ” 것과 μœ μ‚¬ν•œ 이유둜 λ³‘λ ¬λ‘œ μ‹€ν–‰ν•˜λŠ” 방법을 μ•Œμ•„μ•Ό ν•©λ‹ˆκΉŒ?

@mzgol λ™μ‹œ μž‘μ—…μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 각 λŒ€μƒμ΄ ν”Œλž«νΌμ— 따라 λ‹€λ₯Έ junit xml λ³΄κ³ μ„œλ₯Ό 좜λ ₯ν•˜λ„λ‘ ν•΄λ³΄μ…¨μŠ΅λ‹ˆκΉŒ? λŒ€μƒ 이름을 기반으둜 μƒˆ 좜λ ₯ 폴더λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ κΉ¨λ—ν•œ ν™˜κ²½μ—μ„œ λΉŒλ“œ 단계λ₯Ό λ³‘λ ¬λ‘œ μ‹€ν–‰ν•  수 μžˆλŠ” Jenkins의 닀쀑 ꡬ성 λŒ€μƒμ„ μ‚΄νŽ΄λ³Ό μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ‹œκΈˆμ„ λΉŒλ“œμ™€ 같은 멋진 κΈ°λŠ₯을 가지고 있으며 κ·ΈλŸ°νŠΈλ³΄λ‹€ λ™μ‹œμ„±μ„ 더 잘 μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

mocha에도 λΉ„μŠ·ν•œ ꡬ성이 μžˆμŠ΅λ‹ˆκΉŒ? (μ €λŠ” μž¬μŠ€λ―Όμ„ μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—)

@mzgol jvandyke(κ°μ‚¬ν•©λ‹ˆλ‹€)의 μ œμ•ˆμ„ μ‹œλ„ν–ˆλŠ”λ° 잘 μž‘λ™ν•©λ‹ˆλ‹€.

onPrepare: function(){
        require('jasmine-reporters');
        var capsPromise = browser.getCapabilities();
        capsPromise.then(function(caps){
            var browserName = caps.caps_.browserName.toUpperCase();
            var browserVersion = caps.caps_.version;
            var prePendStr = browserName + "-" + browserVersion + "-";
            jasmine.getEnv().addReporter(new
jasmine.JUnitXmlReporter("protractor_output", true, true,prePendStr));
        });
 },

감사 ν•΄μš”. μ €μ—κ²Œλ„ νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.

onPrepare: ν•¨μˆ˜(){
require('jasmine-reporters');
var capsPromise = λΈŒλΌμš°μ €.getCapabilities();
capsPromise.then(ν•¨μˆ˜(μΊ‘){
var λΈŒλΌμš°μ € 이름 = caps.caps_.browserName.toUpperCase();
var λΈŒλΌμš°μ € 버전 = caps.caps_.version;
var prePendStr = λΈŒλΌμš°μ € 이름 + "-" + λΈŒλΌμš°μ € 버전 + "-";
jasmine.getEnv().addReporter(μ‹ κ·œ
jasmine.JUnitXmlReporter("각도기_좜λ ₯", μ°Έ, μ°Έ, prePendStr));
});
},

이 μœ„μ— html 리포터λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. κ·€ν•˜μ˜ μ˜κ²¬μ„ μ•Œλ €μ£Όμ„Έμš”
https://github.com/jintoppy/protractor-html-screenshot-reporter

@tracycummins 에 λ„ˆλ¬΄ κ±Έλ €μ„œ 폴더 생성을 λ¬Έμ„œμ— μΆ”κ°€ν•˜λŠ” 것도 아이디어일 수 μžˆμŠ΅λ‹ˆλ‹€!

@juliemr μƒ˜ν”Œμ— λ‚˜μ—΄λœ λͺ¨λ“  μ˜΅μ…˜μ΄ μ§€κ²ΉμŠ΅λ‹ˆλ‹€. 이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λͺ¨λ“  포인터 감사

/home/jack/prototype/conf.js:19
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter('xml좜λ ₯', μ°Έ, μ°Έ));
^^
TypeError: undefinedλŠ” ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.
export.config.onPrepareμ—μ„œ (/home/jack/prototype/conf.js:19:33)
Runner.runFilenamesOrFns_μ—μ„œ (/home/usr/lib/node_modules/protractor/lib/runner.js:64:9)
Runner.runTestPreparersμ—μ„œ (/home/usr/lib/node_modules/protractor/lib/runner.js:91:8)
runner.controlFlow.execute.then.jasmineNodeOptsμ—μ„œ (/home/usr/lib/node_modules/protractor/lib/frameworks/jasmine.js:39:12)
webdriver.promise.ControlFlow.runInNewFrame_μ—μ„œ (/home/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1539:20)
webdriver.promise.ControlFlow.runEventLoop_μ—μ„œ (/home/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1404:8)
래퍼 μ—μ„œ _onTimeout으둜
Timer.listOnTimeoutμ—μ„œ ontimeout 으둜
==== 비동기 μž‘μ—… ====
ν…ŒμŠ€νŠΈ μ€€λΉ„μž μ‹€ν–‰
Object.exports.runμ—μ„œ (/home/usr/lib/node_modules/protractor/lib/frameworks/jasmine.js:38:24)
driverprovider_.setupEnv.then.then.then.testResultμ—μ„œ (/home/usr/lib/node_modules/protractor/lib/runner.js:233:28)
_fulfilled(/home/usr/lib/node_modules/protractor/node_modules/q/q.js:797:54)
self.promiseDispatch.doneμ—μ„œ (/home/usr/lib/node_modules/protractor/node_modules/q/q.js:826:30)
Promise.promise.promiseDispatch(/home/usr/lib/node_modules/protractor/node_modules/q/q.js:759:13)
/home/usr/lib/node_modules/protractor/node_modules/q/q.js:525:49μ—μ„œ
ν”ŒλŸ¬μ‹œ μ‹œ(/home/usr/lib/node_modules/protractor/node_modules/q/q.js:108:17)
process._tickCallbackμ—μ„œ (node.js:423:13)
Function.Module.runMainμ—μ„œ (module.js:499:11)


// 예제 ꡬ성 νŒŒμΌμž…λ‹ˆλ‹€.
export.config = {
// μ‹€ν–‰ 쀑인 μ…€λ ˆλŠ„ μ„œλ²„μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€.
μ…€λ ˆλŠ„ μ£Όμ†Œ: ' http://localhost :4444/wd/hub',
allScriptsTimeout: 30000,
// μ›Ήλ“œλΌμ΄λ²„ μΈμŠ€ν„΄μŠ€μ— 전달될 κΈ°λŠ₯.
λŠ₯λ ₯: {
'browserName': 'νŒŒμ΄μ–΄ν­μŠ€'
},

// 사양 νŒ¨ν„΄μ€ λ‹€μŒκ³Ό 같은 경우 직접 ν˜„μž¬ μž‘μ—…μ— μƒλŒ€μ μž…λ‹ˆλ‹€.
// 각도기가 ν˜ΈμΆœλ©λ‹ˆλ‹€.
사양: ['example_spec.js'],

// Jasmine λ…Έλ“œμ— 전달할 μ˜΅μ…˜.
onPrepare: ν•¨μˆ˜() {
require('jasmine-reporters');
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter('xml좜λ ₯', μ°Έ, μ°Έ));
},

// Jasmine λ…Έλ“œμ— 전달할 μ˜΅μ…˜.
jasmineNodeOpts: {
showColors: 사싀,
κΈ°λ³Έ μ‹œκ°„ 초과 간격: 30000
}
};

μ•ˆλ…•ν•˜μ„Έμš” @jkmurthy

λ‚˜λŠ” λ˜‘κ°™μ€ λ¬Έμ œμ— λΆ€λ”ͺμ³€λ‹€. [email protected] μ΅œμ‹  λ²„μ „μ—μ„œλŠ” λͺ¨λ“ˆ 이름을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. 이에 λŒ€ν•œ λ¬Έμ„œλŠ” μ—†μ§€λ§Œ 이 νŒŒμΌμ— μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/larrymyers/jasmine-reporters/blob/master/src/junit_reporter.js

  • μš©λ²•:

    • jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmineReporters.JUnitXmlReporter(μ˜΅μ…˜);

μ—¬μ „νžˆ λͺ¨λ“ˆ 'jasmineReporters'κ°€ μ •μ˜λ˜μ§€ μ•Šμ€ κ²ƒμ²˜λŸΌ μž‘λ™ν•˜λ„λ‘ λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이전 λ²„μ „μ˜ [email protected] 둜 μ „ν™˜ν–ˆλŠ”λ° μ™„λ²½ν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. 리포터 μ˜΅μ…˜μ—μ„œ 좜λ ₯으둜 μ°Έμ‘°ν•˜λŠ” 디렉토리λ₯Ό μƒμ„±ν–ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

jasmine-reportersλ₯Ό 0.4.1둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•΄λ„ μž‘λ™ν•˜μ§€ μ•ŠμŒ
μ‹œλ„
onPrepare: ν•¨μˆ˜() {
var 폴더 이름 = (μƒˆ λ‚ μ§œ()).toString().split(' ').splice(1, 4).join(' ');
var mkdirp = μš”κ΅¬('mkdirp');
var newFolder = "./λ³΄κ³ μ„œ/" + 폴더 이름;
require('jasmine-reporters');

            mkdirp(newFolder, function(err) {
              if (err) {
                console.error(err);
              } else {
                jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(newFolder, true, true));
              }
            });
          },

아직 운이 μ—†λ‹€

이것은 ν™•μ‹€νžˆ λ‚˜μ—κ²Œ λ¬Έμ œμž…λ‹ˆλ‹€. jasmine-reporters 2.0을 μ‚¬μš©ν•˜λ©΄
D:\HgBuild\TPSOneSearch\Unstable\Tyler.TPS.OneSearch\Tyler.TPS.Web.OneSearch\app
\test\e2e\oneSearchChromeConf.js:29
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter(uri, t
μ°Έ, μ°Έ, ''));
^^
TypeError: undefinedλŠ” ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

"new jasmine.JUnitXmlReporter"λ₯Ό "jasmineReporters.JUnitXmlReporter"둜 λ³€κ²½ν•˜λ©΄ jasmineReportersκ°€ μ •μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

jasmine-reportersλ₯Ό 0.4.1둜 되돌리면 ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

jasmine-reporters 2.0은 1.x와 APIκ°€ λ‹€λ¦…λ‹ˆλ‹€. λ§Ήλͺ©μ μœΌλ‘œ μ—…λ°μ΄νŠΈν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ ν˜ΈμΆœμ„ μ‘°μ •ν•©λ‹ˆλ‹€.

JUnitXmlReporter에 λŒ€ν•œ junit_reporter.js 파일의 주석을 보면 λ‹€μŒκ³Ό 같이 conf νŒŒμΌμ„ μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€.

onPrepare: ν•¨μˆ˜() {
require('jasmine-reporters');
λ³€μˆ˜ μ˜΅μ…˜ = {
savePath: '일뢀 파일 경둜',
톡합: 사싀,
useDotNotation: μ°Έ
};
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmineReporters.JUnitXmlReporter(μ˜΅μ…˜));
},

이것은 μž‘λ™ν•΄μ•Όν•©λ‹ˆκΉŒ?
"ReferenceError: jasmineReportersκ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€" 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

/**
* 주어진 사양 싀행에 λŒ€ν•œ JUnit XML을 μƒμ„±ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€
* κ²°κ³Όκ°€ κΈ°λ‘λ˜λŠ” μœ„μΉ˜λ₯Ό μ œμ–΄ν•˜κ³  기본값은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
* κ°€λŠ₯ν•œ ν•œ 적은 수의 .xml νŒŒμΌμ„ μƒμ„±ν•˜λ„λ‘ μ„€μ •ν•©λ‹ˆλ‹€. μ €μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€
* 단일 XML 파일 λ˜λŠ” 각 μ΅œμƒμœ„ describe 에 λŒ€ν•œ XML 파일 λ˜λŠ”
* 쀑첩에 관계없이 각 describe 에 λŒ€ν•œ XML 파일.
*
* μš©λ²•:
*
* jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmineReporters.JUnitXmlReporter(μ˜΅μ…˜);
*
* @param {객체} [μ˜΅μ…˜]
* @param {string} [savePath] νŒŒμΌμ„ μ €μž₯ν•  디렉토리 (κΈ°λ³Έκ°’: '')
* @param {boolean} [consolidateAll] λͺ¨λ“  ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό μ €μž₯할지 μ—¬λΆ€
* 단일 파일(κΈ°λ³Έκ°’: true)
* μ°Έκ³ : true인 경우 {filePrefix}λŠ” 전체 파일 μ΄λ¦„μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€(μ œμ™Έ
* ν™•λŒ€)
* @param {boolean} [톡합] λ‚΄ν¬λœ μ„€λͺ…을 μ €μž₯할지 μ—¬λΆ€
* μƒμœ„ 파일과 λ™μΌν•œ 파일(κΈ°λ³Έκ°’: true)
* μ°Έκ³ : 톡합 λͺ¨λ‘κ°€ true인 경우 trueλŠ” 아무 μž‘μ—…λ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
* μ°Έκ³ : falseλŠ” λ˜ν•œ gatherAll을 false둜 μ„€μ •ν•©λ‹ˆλ‹€.
* @param {boolean} [useDotNotation] μŠ€μœ„νŠΈ 이름을 λ‹€μŒμœΌλ‘œ ꡬ뢄할지 μ—¬λΆ€
* 곡백 λŒ€μ‹  점, 즉 "Class init"κ°€ μ•„λ‹Œ "Class.init"(κΈ°λ³Έκ°’: true)
* @param {string} [filePrefix]λŠ” μ•žμ— μΆ”κ°€λ˜λŠ” λ¬Έμžμ—΄ κ°’μž…λ‹ˆλ‹€.
* xml 좜λ ₯ 파일 (κΈ°λ³Έκ°’: junitresults-)
* μ°Έκ³ : 만일 gatherAll이 참이면, 기본값은 λ‹¨μˆœνžˆ "junitresults"이고
* 이것은 μ‹€μ œ 파일 이름이 λ©λ‹ˆλ‹€(예: "junitresults.xml").
*/

@john-bridges λ°±ν‹±μœΌλ‘œ μ½”λ“œλ₯Ό κ°μŒ€ 수 μžˆμŠ΅λ‹ˆκΉŒ? 그것 μ—†μ΄λŠ” 읽기가 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

@john-bridges κΈ€μŽ„μš”, jasmineReporters λ³€μˆ˜λ₯Ό μ •μ˜ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— λ³€μˆ˜κ°€ μ •μ˜λ˜μ§€ μ•Šμ€ 것은 λ‹Ήμ—°ν•©λ‹ˆλ‹€. λͺ¨λ“ˆμ„ ν• λ‹Ήν•΄μ•Ό ν•©λ‹ˆλ‹€.

var jasmineReporters = require('jasmine-reporters');

@mzgol λ‚˜λŠ” 바보, 맀λ ₯처럼 μž‘λ™ν•©λ‹ˆλ‹€. 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

jasmine-reporters 의 이전 버전은 리포터λ₯Ό jasmine κ°œμ²΄μ— 직접 μ—°κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 이제 더 λ‚˜μ€ 자체 내보내기에 μ—°κ²°λ©λ‹ˆλ‹€.

λ‚˜λŠ” ν˜Όλž€μ΄ μ–΄λ””μ„œ μ™”λŠ”μ§€ λ³Έλ‹€. ;)

@mzgol λ™μ˜ν•©λ‹ˆλ‹€. 훨씬 더 λ‚˜μ€ λ°©λ²•μž…λ‹ˆλ‹€. λ‹€μ‹œ ν•œ 번 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

[email protected] λŠ” Jasmine 2.xλ₯Ό μ§€μ›ν•˜λ©° μœ„μ—μ„œ κ΄€μ°°/λ…Όμ˜ν•œ κ²ƒμ²˜λŸΌ λ‹€λ₯Έ ꡬ문과 μ§„μž…μ μ„ κ°€μ§‘λ‹ˆλ‹€(자체 개체 λŒ€ μ „μ—­ jasmine 개체). 즉, 각도기가 μ‚¬μš©ν•˜λŠ” Jasmine 1.xκ°€ μ•„λ‹ˆλΌ Jasmine 2.x만 μ§€μ›ν•©λ‹ˆλ‹€. λ”°λΌμ„œ var jasmineReporters = require('jasmine-reporters'); new jasmineReporters.JUnitXmlReporter(/*...*/); λ₯Ό μˆ˜ν–‰ν•˜μ—¬ 각도기 κ΅¬μ„±μ—μ„œ κ³Όκ±° 였λ₯˜λ₯Ό 얻을 수 μžˆμ§€λ§Œ Jasmine 2.x 이벀트 및 리포터 μΈν„°νŽ˜μ΄μŠ€λ₯Ό 기닀리고 있기 λ•Œλ¬Έμ— 의미 μžˆλŠ” 좜λ ₯을 μ–»κΈ°κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

JUnitXmlReporterκ°€ Jasmine 1.x와 ν•¨κ»˜ μž‘λ™ν•˜λ„λ‘ ν•˜λŠ” μ μ ˆν•œ 방법은 @juliemr 의 μ›λž˜ 지침을 μ•½κ°„ μˆ˜μ •ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

npm install jasmine-reporters@~1.0.0

그런 λ‹€μŒ ν‰μ†Œμ™€ 같이 κ·Έλ…€μ˜ λ‚˜λ¨Έμ§€ μ§€μ‹œ 사항을 λ”°λ₯΄μ‹­μ‹œμ˜€.

[email protected] κ°€ [email protected] $ 와 λ‹€λ₯Έ 점을 ν•΄κ²°ν•˜κΈ° μœ„ν•΄ jasmine-reporters READMEλ₯Ό μ κ²€ν–ˆμŠ΅λ‹ˆλ‹€. 질문이 많이 λ‚˜μ˜€κΈ° λ•Œλ¬Έμ— 각도기와 ν•¨κ»˜ 재슀민 리포터λ₯Ό μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•œ νŠΉμ • μ„Ήμ…˜λ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

μ‹¬κ°ν•˜κ²Œ λΆ€μ‘±ν•œ λ¬Έμ„œλ₯Ό 지적해 μ£Όμ‹  @ksraja μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ 계속 λ‹«νžˆλŠ” μ΄μœ λŠ” μ—¬μ „νžˆ β€‹β€‹λ¬Έμ œμž„μ΄ λΆ„λͺ…ν•©λ‹ˆλ‹€.

    onPrepare: function() {

        require('jasmine-reporters');
        jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('test-target/', true, true));

        browser.driver.get('http://localhost:9000');
        require('./test/e2e/models/login-page').login();
    },

였λ₯˜ λ°œμƒ:

Running "protractor:e2e" (protractor) task

/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-reporters/src/jasmine.console
_reporter.js:2
    if (! jasmine) {
          ^
ReferenceError: jasmine is not defined
    at /Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-reporters/src/jasmine.
console_reporter.js:2:11
    at Object.<anonymous> (/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-re
porters/src/jasmine.console_reporter.js:144:3)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/212400520/PredixExperience/predix-dashboard/node_modules/jasmine-re
porters/src/load_reporters.js:1:63)
    at Module._compile (module.js:456:26)
>> 
Fatal error: protractor exited with code: 8

@jonniespratley npm install jasmine-reporters κ°€ 기본적으둜 1.0.1 버전을 μ„€μΉ˜ν•œλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ jasmine-reporters μ΅œμ‹  버전을 μ„€μΉ˜ν–ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. 예λ₯Ό λ“€μ–΄

npm install jasmine-reporters@~2.0.3 --save-dev

κ·Έ ν›„ λ‹€μŒκ³Ό 같이 각도기 ꡬ성을 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

var jasmineReporters = require('jasmine-reporters');
exports.config = {
    framework: 'jasmine2',
    //...  
    //Other configurations...
    //...  
    onPrepare: function () {
        jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
            savePath: '..',
            consolidateAll: false
        }));
    },
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 60000,
        print: function() {}
    }
};

이제 jasmine-reportersκ°€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

jasmine2 ν”„λ ˆμž„μ›Œν¬λ‘œ μ—…κ·Έλ ˆμ΄λ“œν•˜κΈ° μœ„ν•œ κ°λ„κΈ°μ˜ λ¬Έμ„œμ—μ„œ 기자 μ„Ήμ…˜μ— @luixaviles 닡변이 λ¬Έμ„œν™”λ˜μ–΄ 있으면 쒋을 κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” jasmine2에 λŒ€ν•œ junit λ³΄κ³ μ„œλ₯Ό μ–»λŠ” 방법을 μ•Œμ•„λ‚΄λŠ” 데 어렀움을 κ²ͺ은 μœ μΌν•œ μ‚¬λžŒμ΄λΌκ³  상상할 수 μ—†μŠ΅λ‹ˆλ‹€. λ¬Όλ‘ , 일단 이것을 λ°œκ²¬ν•˜κ³  ν˜„μž¬ λ¬Έμ„œλ₯Ό λ‹€μ‹œ 읽으면 더 λͺ…ν™•ν•΄μ‘Œμ§€λ§Œ, μ›λž˜ jasmine-reportersκ°€ jasmine2μ—μ„œ (μ „ν˜€) μž‘λ™ν•˜μ§€ μ•Šμ•˜λ‹€λŠ” 의미둜 잘λͺ» μ½μ—ˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ λ‹΅λ³€μ΄λ‚˜ jasmine-reporters' readme에 λŒ€ν•œ 링크가 있으면 일이 μ’€ 더 μ‰¬μ›Œμ§ˆ κ²ƒμž…λ‹ˆλ‹€.

재슀민 λ³΄κ³ μ„œλ₯Ό μ‹œλ„
var jasmineReporters = require('jasmine-reporters');
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmineReporters.JUnitXmlReporter('../TestReports/test', μ°Έ, μ°Έ));

잘 μ‹€ν–‰λ˜μ—ˆμ§€λ§Œ xml 파일이 μƒμ„±λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” https://github.com/angular/protractor/blob/master/spec/junitOutputConf.js 에 λ„λ‹¬ν•˜λ €κ³ ν–ˆμ§€λ§Œ 404λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

@spatchamatla κ·€ν•˜μ˜ μ˜ˆμ œλŠ” [email protected] 리포터(jasmineReporters.JUnitXmlReporter λŒ€ jasmine.JUnitXmlReporter)처럼 λ³΄μ΄λŠ” 것과 [email protected] ꡬ문(μˆœμ„œν™”λœ 인수)의 μ΄μƒν•œ 쑰합을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ˜¬λ°”λ₯Έ ꡬ문을 μ‚¬μš©ν•˜μ—¬ 리포터λ₯Ό λ§Œλ“€κ³  더 λ§Žμ€ 정보λ₯Ό 얻을 수 μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

jasmine-reporters README의 μ˜ˆμ œμ—μ„œ μˆ˜μ •:

var junitReporter = new jasmineReporters.JUnitXmlReporter({
    savePath: '../TestReports/test'
});
jasmine.getEnv().addReporter(junitReporter);

λ‚΄κ°€ μƒκ°ν•˜κΈ°μ— '../TestReports/test' 폴더가 μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.
그것도 쑰용히.

2015λ…„ 4μ›” 15일 μˆ˜μš”μΌ μ˜€ν›„ 4μ‹œ 33λΆ„, Ben Loveridge [email protected]
썼닀:

@spatchamatla https://github.com/spatchamatla κ·€ν•˜μ˜ μ˜ˆλŠ”
[email protected] ꡬ문의 μ΄μƒν•œ μ‘°ν•©(μˆœμ„œν™”λœ 인수)
[email protected] 기자처럼 λ³΄μ΄λŠ” 것과 ν•¨κ»˜
(jasmineReporters.JUnitXmlReporter λŒ€ jasmine.JUnitXmlReporter).

μ˜¬λ°”λ₯Έ ꡬ문을 μ‚¬μš©ν•˜μ—¬ 리포터λ₯Ό λ§Œλ“€κ³  λ‹€μŒ κ²°κ³Όκ°€ λ‚˜μ˜€λŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.
더 λ‚˜μ•„κ°€.

jasmine-reporters README의 μ˜ˆμ œμ—μ„œ μˆ˜μ •:

var junitReporter = μƒˆλ‘œμš΄ jasmineReporters.JUnitXmlReporter({
savePath: '../TestReports/test'
});
jasmine.getEnv().addReporter(junitReporter);

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/angular/protractor/issues/60#issuecomment -93451490.

jasmine-reportersλŠ” https://github.com/substack/node-mkdirp λ₯Ό μ‚¬μš©ν•˜μ—¬ 디렉토리λ₯Ό μƒμ„±ν•˜λ €κ³  μ‹œλ„ν•˜μ§€λ§Œ κ²°μ½” λ‚˜μœ 생각은 μ•„λ‹™λ‹ˆλ‹€.

@bloveridge @spenoir , λ‚˜λŠ” [email protected] 둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜κ³  μ•„λž˜λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€

   //For junit output reports
        var reporters = require('jasmine-reporters');
        var capsPromise = browser.getCapabilities();
        capsPromise.then(function (caps) {
            var browserName = caps.caps_.browserName.toUpperCase();
            var browserVersion = caps.caps_.version;
            var prePendStr = browserName + "-" + browserVersion + "-";
            jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('Protractor/TestReports', true, true, prePendStr));
        });

μž‘λ™ν•˜κΈ° μ‹œμž‘ν–ˆμ§€λ§Œ μœ μΌν•œ 단점은 ν”„λ‘œμ νŠΈ 폴더가 μ•„λ‹Œ ν™ˆ 디렉토리에 폴더λ₯Ό λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 폴더 경둜λ₯Ό μ‚¬μš©ν•˜λ €κ³  μ‹œλ„ν–ˆμ„ λ•Œ μ—¬μ „νžˆ

κ²½κ³ : '../TestReports', 'CHROME-41.0.2272.118-TestImpersonationPage.xml'에 λŒ€ν•œ junit λ³΄κ³ μ„œ μž‘μ„±μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€. 원인:
Rhino μ‹œλ„: Javaκ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
PhantomJs μ‹œλ„: 창이 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
NodeJS μ‹œλ„: EACCES, κΆŒν•œ κ±°λΆ€ '/Users/TestReports'

λ‚˜λŠ” μˆ˜λ™μœΌλ‘œ 폴더λ₯Ό λ§Œλ“€μ—ˆκ³  μ—¬μ „νžˆ μ½˜μ†”μ— μœ„μ˜ λ‚΄μš©μ„ λ³΄μ—¬μ€λ‹ˆλ‹€

'Protractor/TestReports'κ°€ μ˜¬λ°”λ₯Έ 경둜이고 ν•΄λ‹Ή 폴더가 μ‘΄μž¬ν•©λ‹ˆκΉŒ?

2015λ…„ 4μ›” 15일 μˆ˜μš”μΌ μ˜€ν›„ 5:01, spatchamatla [email protected]
썼닀:

@bloveridge https://github.com/bloveridge @spenoir
https://github.com/spenoir , λ‚˜λŠ” [email protected] 둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν–ˆκ³ 
μ•„λž˜μ—μ„œ μ‚¬μš©

//junit 좜λ ₯ λ³΄κ³ μ„œμ˜ 경우
var 기자 = require('jasmine-reporters');
var capsPromise = λΈŒλΌμš°μ €.getCapabilities();
capsPromise.then(ν•¨μˆ˜(λŒ€λ¬Έμž) {
var λΈŒλΌμš°μ € 이름 = caps.caps_.browserName.toUpperCase();
var λΈŒλΌμš°μ € 버전 = caps.caps_.version;
var prePendStr = λΈŒλΌμš°μ € 이름 + "-" + λΈŒλΌμš°μ € 버전 + "-";
jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter('각도/TestReports', true, true, prePendStr));
});

μž‘λ™ν•˜κΈ° μ‹œμž‘ν–ˆμ§€λ§Œ μœ μΌν•œ 단점은 집에 폴더λ₯Ό λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.
ν”„λ‘œμ νŠΈ 폴더가 μ•„λ‹Œ 디렉토리. λ‚΄κ°€ ν”„λ‘œμ νŠΈλ₯Ό μ‚¬μš©ν•˜λ €κ³ ν–ˆμ„ λ•Œ
폴더 경둜, μ—¬μ „νžˆ

Rhino μ‹œλ„: Javaκ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
PhantomJs μ‹œλ„: 창이 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
NodeJS μ‹œλ„: path.resolve에 λŒ€ν•œ μΈμˆ˜λŠ” λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.

λ‚˜λŠ” μˆ˜λ™μœΌλ‘œ 폴더λ₯Ό λ§Œλ“€μ—ˆκ³  μ—¬μ „νžˆ μ½˜μ†”μ— μœ„μ˜ λ‚΄μš©μ„ λ³΄μ—¬μ€λ‹ˆλ‹€

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/angular/protractor/issues/60#issuecomment -93460326.

'Protractor/TestReports'λŠ” ν™ˆ 폴더에 μƒμ„±λœ κ²½λ‘œμž…λ‹ˆλ‹€.

jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('../TestReports', true, true, prePendStr));

그리고 λ‚΄κ°€ μˆ˜λ™μœΌλ‘œ λ§Œλ“ 

screen shot 2015-04-15 at 12 07 09 pm

λ‚΄κ°€ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ, 그것은 μ—¬μ „νžˆ β€‹β€‹β€‹β€‹μ œκ³΅ν•©λ‹ˆλ‹€
κ²½κ³ : '../TestReports', 'CHROME-41.0.2272.118-TestImpersonationPage.xml'에 λŒ€ν•œ junit λ³΄κ³ μ„œ μž‘μ„±μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€. 원인:
Rhino μ‹œλ„: Javaκ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
PhantomJs μ‹œλ„: 창이 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
NodeJS μ‹œλ„: EACCES, κΆŒν•œ κ±°λΆ€ '/Users/TestReports'

TestReports 폴더에 λŒ€ν•œ κΆŒν•œμ„ μ™„ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν™•μ‹€ν•˜μ§€ μ•ŠμŒ
이후.

2015λ…„ 4μ›” 15일 μˆ˜μš”μΌ μ˜€ν›„ 5:10, spatchamatla [email protected]
썼닀:

'Protractor/TestReports'λŠ” ν™ˆ 폴더에 μƒμ„±λœ 경둜이며,
κ·Έλ•Œ λ‚˜λŠ” μ‚¬μš©ν–ˆλ‹€

jasmine.getEnv().addReporter(μƒˆλ‘œμš΄ jasmine.JUnitXmlReporter('../TestReports', true, true, prePendStr));

그리고 λ‚΄κ°€ μˆ˜λ™μœΌλ‘œ λ§Œλ“ 

[이미지: μŠ€ν¬λ¦°μƒ· 2015-04-15 at 12 07 09 pm]
https://cloud.githubusercontent.com/assets/4671240/7163457/278cffa6-e368-11e4-9994-2c0b5d33f07c.png

λ‚΄κ°€ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ, 그것은 μ—¬μ „νžˆ β€‹β€‹β€‹β€‹μ œκ³΅ν•©λ‹ˆλ‹€
κ²½κ³ : '../TestReports'에 λŒ€ν•œ junit λ³΄κ³ μ„œ μž‘μ„±μ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.
'CHROME-41.0.2272.118-TestImpersonationPage.xml'. 원인:
Rhino μ‹œλ„: Javaκ°€ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
PhantomJs μ‹œλ„: 창이 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
NodeJS μ‹œλ„: EACCES, κΆŒν•œ κ±°λΆ€ '/Users/TestReports'

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/angular/protractor/issues/60#issuecomment -93466365.

λ¬Όλ‘ μž…λ‹ˆλ‹€. @spenoir 의 μ œμ•ˆκ³Ό μ˜κ²¬μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

ν›Œλ₯­ν•œ μŠ€λ ˆλ“œ. λ§Žμ€ 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
λ¬Έμ œκ°€ μžˆλ‹€κ³  μƒκ°ν–ˆμ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. μ‚­μ œν•  방법을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€ :)
쒋은 일을 κ³„μ†ν•˜μ‹­μ‹œμ˜€.

@jkmurthy @ksraja λ‚˜μ—΄λœ jasmineReportsλŠ” μ‹€μ œλ‘œ require ν•¨μˆ˜μ˜ 내보내기인 것 κ°™μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄,
var jasmineReporters = require('jasmine-reporters');

jasmine-reporters μΆ”κ°€ μ •λ³΄μ˜ μ˜ˆκ°€ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€: https://github.com/larrymyers/jasmine-reporters#protractor

μ½˜μ†” 좜λ ₯만 ν•„μš”ν•œ 경우 https://github.com/bcaudan/jasmine-spec-reporter/blob/master/docs/protractor-configuration.md 에 λ§Œμ‘±ν–ˆμŠ΅λ‹ˆλ‹€.

@josephdpurcell κ·€ν•˜κ°€ μ œκ³΅ν•œ 링크도 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ° λ‚΄ ꡬ성이 μžˆμŠ΅λ‹ˆλ‹€. 도움이 되길 λ°”λžλ‹ˆλ‹€!
mkdirp νŒ¨ν‚€μ§€μ™€ λ‹€λ₯Έ jasmine 2.x 및 jasmine-reporters 2.X νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν–ˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.
이 ꡬ성은 폴더가 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우 μžλ™ 였λ₯˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ 폴더λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

   var folderName = ('output_folder');
    var mkdirp = require('mkdirp');
    mkdirp(folderName, function(err) {
      if (err) {
        console.error(err);
       } else {
          var jasmineReporters = require('jasmine-reporters');
          jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
            consolidateAll: true,
            savePath: folderName,
             filePrefix: 'xmloutput-'
            }));
         }
    });
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰