çŸåšãcucumber-jsãããã°ã©ã ã§å®è¡ããè¯ãæ¹æ³ã¯ãããŸããã å¿ èŠæ§ã¯2ã€ã®è§åºŠããã§ãïŒ
çŸæç¹ã§çºçããåŸåãããã®ã¯ã Cli
æ°ããã€ã³ã¹ã¿ã³ã¹ãäžç·ã«åŒµãããargvå
¥åã§äœæãããããªãã¯APIã«ã
æã ïŒããããäžèšã®èªèãããè匱æ§ã®ããã«ïŒãã¬ãŒã ã¯ãŒã¯ã¯cucumber-js CLIã«äŸåããã ãã§ãããçµ±åããŠç¬èªã®ãªãã·ã§ã³ãæã€æ¹æ³ãèŠã€ããã®ã«èŠåŽããŸãã
Runtime
ã¯ã©ã¹ã¯çŸåšãããªãã¯APIã®äžéšã§ãããåŒã³åºãå
ããæäŸããããã¯ã«ã¹ãšãµããŒãã³ãŒãã«ãã£ãŠã¯ããããã®ã³ã³ããã¹ãã§ã¯åœ¹ã«ç«ã¡ãŸããã
ãããžã§ã¯ãã®2ã€ã®ã³ã³ããŒãã³ãïŒ
runCucumber
ã€ã³ããã»ã¹ã§ãã¹ãå®è¡ãå®è¡ããæ°ããéåæé¢æ°ã 責任ïŒ
ããã¯ãããªãã¯APIã®äžéšã§ããããã¬ãŒã ã¯ãŒã¯ã®ã¡ã³ãããcucumber-jsããã©ããããããšãã«äœ¿çšããããšããå§ãããŸãã ãŸããç¬èªã®ãã¹ãã«ã䜿çšããŸãã
å¯èœãªéãã process
ãšã®çŽæ¥ã®å¯Ÿè©±ãé¿ãã代ããã«ãåºåçšã«æ£èŠåããããªãã·ã§ã³ãšã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ãåãå
¥ããçµæãŸãã¯æªåŠçã®ãšã©ãŒã«åºã¥ããŠçµäºããæ¹æ³ã決å®ããã®ã¯åŒã³åºãå
ã«ä»»ããŸãã
ãŸãã Runtime
ã¯å®éã«ã¯å
éšçãªãã®ã§ããããããããªãã¯APIãã
äºå®äžã runCucumber
ãã¯ã©ã€ã¢ã³ããã 責任ïŒ
runCucumber
ãåŒã³åºããŸãããã¯åŒãç¶ããããªãã¯APIã«ã¯å«ãŸããŸããã ãŸããããã¯å¯äžã®å ±éã®ãã¿ãŒã³ã®ãããªãããžã§ã¯ãã§ä»ãããšããŠãæã ã¯ç°¡åã«ãããã€ãã®ç¹ã§ãç¬èªã®ããã±ãŒãžã«ãããç Žãããšãã§ãããã®ãããªããšããå ¬å ±ã®APIäžã«ããæ©èœ/ã€ã³ã¿ãã§ãŒã¹ã䜿çšããŸãåè«ã
ãã®ãã«ãããªã³ã°ã¯ãå éšã«ããªãŒãããããšãªããããã€ãã®èå³æ·±ãæ°ããCLIæ©èœãžã®éãéããŸãã
--gui
--interactive
ã¯ãTDDãå®è¡ããéã®ã¿ãŒã²ããããã°ããåå®è¡ããŸããŸãã次ã®é¢æ°ïŒCLIãä»ã®ãŠãŒã¶ãŒã䜿çšã§ããïŒãå ¬éããŸãã
i18nKeywords
ãši18nLanguages
ããã¯ã次ã®8.0.0ãªãªãŒã¹ã§ã¿ãŒã²ããã«ããŠããŸãã ä»æ¥ãããããå§ããæºåãã§ããŠããŸãã
åæãã£ãŒãããã¯ã®ããŒãžã³ã°ïŒ @aslakhellesoy @charlierudolph @ aurelien- reeves @mattwynne @nicojs @ jan-molak
ç§ã¯ãã®ææ¡ã倧奜ãã§ãïŒ åœã®ãã¥ãŠãªã®runCucumberã«ã¯ãã§ã«ãã®ãããªAPIããããŸã
@ davidjgoss-çŽ æŽãããã§ããïŒ
åèãŸã§ã«ãSerenity / JSãçŸæç¹ã§CucumberãåŒã³åºãæ¹æ³ã¯æ¬¡ã®ãšããã§ã- CucumberCLIAdapter
ãããŠããããæ§æãã©ã¡ãŒã¿ãŒãargvã«å€æããããžãã¯ã§ã- CucumberOptions
ã
argvã®ä»£ããã«ãªãã·ã§ã³ãªããžã§ã¯ããæäŸã§ããæ¹ãã¯ããã«è¯ãã§ãããðð»
倧奜ãã§ãïŒ
ãã®æ°ãããããªãã¯APIãæå®ããäžæ¹ã§ãåé¡ïŒ1489ã§æè¿äœãèµ·ãã£ãã®ããæ€èšãããããªãã¯APIãæäŸããŠããã£ã«ã¿ãŒãšãã¹ãäžã®çµæã®æ©èœãšã®çžäºäœçšãããè¯ãããããšãæ€èšããããšãã§ããŸãã
ããã«å ããŠãCucumber-Electronã«ãšã£ãŠãç°¡åã«ãªããããªãã®ãäœããŸãããã
ãããªãã¯APIã䜿çšããæ¹ããäœããªããããåªããŠããã®ã§ãå ã«é²ãã§ãã ããðïŒ
ã§ããã°ã cucumber-js
ãšåãã«ãŒã«ã䜿çšããŠãããã¡ã€ã«ãããŒãããAPIãããã®ã§ãéåžžã®cucumber-jsåŒã³åºãã®æ£ç¢ºãªåäœãæš¡å£ã§ããŸãã
loadProfiles(directory = process.cwd()): Record<string, Profile>
StrykerJSã¯ã custom_formatters APIãševentBroadcaster
ã«ãã£ãŠå
¬éãããã€ãã³ãã«ã倧ããäŸåããŸãã ãããããããªãã¯APIã«ãè¿œå ã§ããŸããïŒ åç
§ïŒ https ïŒ
ã§ããã°ãcucumber-jsãšåãã«ãŒã«ã䜿çšããŠãããã¡ã€ã«ãããŒãããAPIãããã®ã§ãéåžžã®cucumber-jsåŒã³åºãã®æ£ç¢ºãªåäœãæš¡å£ã§ããŸãã
ããã¯è¯ãç¹ã§ãã ãããã¡ã€ã«ïŒå°ãªããšãçŸåšã®åœ¢åŒã§ã¯ïŒã¯åºæ¬çã«CLIã«çµåãããŠããããããããã¡ã€ã«ãå¢çã®ãã®åŽã«ä¿æããã®ã¯æ£ãããšæããŸããããããã¡ã€ã«ãããŒãããŠéšåçãªãªãã·ã§ã³ãªããžã§ã¯ããçæããé¢æ°ãå ¬éããããšãã§ããŸãã
ãã®æ°ãããããªãã¯APIãæå®ããéã«ãåé¡ïŒ1489ã§æè¿äœãèµ·ãã£ãã®ããæ€èšãããã¹ãäžã®ãã£ã«ã¿ãŒãšçµæã®æ©èœãšã®çžäºäœçšãããè¯ãããããã«ãããªãã¯APIãæäŸããããšãæ€èšããããšãã§ããŸãã
APIãåŒã³åºããšãã«ã«ã¹ã¿ã ãã¯ã«ã¹ãã£ã«ã¿ãŒãæäŸãããªãã·ã§ã³ãå«ããããšãã§ãããšæããŸãïŒçµã¿èŸŒã¿ã®ãã£ã«ã¿ãŒãé§åããååãã¿ã°ãªã©ã«å ããŠïŒã
éåžžã«ã³ãã³ãã©ã€ã³-yã®å Žåã®ãããã¡ã€ã«ã®çŸåšã®æ§æã
JSONãJavaScriptãYAMLãç°å¢å€æ°ãªã©ãããäžè¬çãªåœ¢åŒã§ãããã¡ã€ã«ãæå®ã§ããããã«ããã«ã¯ãâ€ïžâ€ïžâ€ïžãšæããŸãã JSONã§ã¯ã次ã®ããã«ãªããŸãã
.cucumber.json
{
"default": {
"requireModule": ["ts-node/register"],
"require": ["support/**/*./ts"],
"worldParameters": {
"appUrl": "http://localhost:3000/",
},
"format": ["progress-bar", "html:./cucumber-report.html"]
},
"ci": {
"requireModule": ["ts-node/register"],
"require": ["support/**/*./ts"],
"worldParameters": {
"appUrl": "http://localhost:3000/",
},
"format": ["html:./cucumber-report.html"],
"publish": true
}
}
ãŸãã¯ãJavaScriptã䜿çšãã
.cucumber.js
const common = {
"requireModule": ["ts-node/register"],
"require": ["support/**/*./ts"],
"worldParameters": {
"appUrl": "http://localhost:3000/",
}
}
module.exports = {
default: {
...common,
"format": ["progress-bar", "html:./cucumber-report.html"]
},
ci: {
...common,
"format": ["html:./cucumber-report.html"],
"publish": true
}
}
ãŸãã¯ãç°å¢å€æ°ïŒããšãã°ãdotenvãªã©ã®ããŒã«ã䜿çšããŠããŒãããããã®ïŒã䜿çšããå Žåã§ãã次ã®ããã«ãªããŸãã
.cucumber.env
CUCUMBER_PROFILE_DEFAULT_REQUIREMODULE=ts-node/register
CUCUMBER_PROFILE_DEFAULT_REQUIRE=ts-node/register
CUCUMBER_PROFILE_DEFAULT_WORLDPARAMETERS_APPURL=http://localhost:3000/
CUCUMBER_PROFILE_DEFAULT_FORMAT=progress-bar,html:./cucumber-report.html
CUCUMBER_PROFILE_CI_REQUIREMODULE=ts-node/register
CUCUMBER_PROFILE_CI_REQUIRE=ts-node/register
CUCUMBER_PROFILE_CI_WORLDPARAMETERS_APPURL=http://localhost:3000/
CUCUMBER_PROFILE_CI_FORMAT=progress-bar,html:./cucumber-report.html
CUCUMBER_PROFILE_CI_PUBLISH=true
å®éã«ã¯ãã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã©ã€ãã©ãªãŒã¯ããŸãã«ãããè¡ããŸãã ä»ã®ãã®ãéªéã«ãªã£ããããCucumber-JVMã«çµ±åããããšã¯æ±ºããŠãããŸããã§ããããJavaScriptã®å®è£ ã§è©ŠããŠã¿ãããšãã§ããã§ããããïŒ
@aslakhellesoyã¯ãããçŽ æŽãããã ãããšåæããŸãïŒ ãã®ææ¡ã«POCãå°å ¥ããŠãããå°ãå ·äœçã«è©±ãåãããšãã§ããããã«ããŸãããã®äžç°ãšããŠãããã¡ã€ã«ãäœæããããšæããŸãïŒ4ã5幎ãïŒ751ãé Œãã«ðïŒ
åç §ã ïŒ1004
ããã¯è¯ãç¹ã§ãã ãããã¡ã€ã«ïŒå°ãªããšãçŸåšã®åœ¢åŒã§ã¯ïŒã¯åºæ¬çã«CLIã«çµåãããŠããããããããã¡ã€ã«ãå¢çã®ãã®åŽã«ä¿æããã®ã¯æ£ãããšæããŸããããããã¡ã€ã«ãããŒãããŠéšåçãªãªãã·ã§ã³ãªããžã§ã¯ããçæããé¢æ°ãå ¬éããããšãã§ããŸãã
ã¯ãããã©ã°ã€ã³äœæè ã®èŠ³ç¹ããããã°ãããã¯çŽ æŽãããããšã§ãããéåžžã«ãããããããšã§ãã
JSONãJavaScriptãYAMLãç°å¢å€æ°ãªã©ãããäžè¬çãªåœ¢åŒã§ãããã¡ã€ã«ãæå®ã§ããããã«ããã«ã¯ãâ€ïžâ€ïžâ€ïžãšæããŸãã JSONã§ã¯ã次ã®ããã«ãªããŸãã
ããã¯ããã§ãïŒ ãŸããcucumberJSãšåãæ¹æ³ã§APIãããŒãããŠããã ããã°å¹žãã§ãã åäžã®cucumber.js
ãã¡ã€ã«ãããŒãããã®ã¯ç°¡åã§ãã åªå
é äœããã¡ã€ã«åœ¢åŒãªã©ãå«ãæ§æãã¡ã€ã«ã®èªã¿èŸŒã¿ã¢ã«ãŽãªãºã ãè€è£œãããããç¶æããããšã¯ãŸã£ããå¥ã®ããšã§ãð
ã
QïŒå¿
èŠãªãã£ãã·ã¥ãã¯ãªã¢ããã«runCucumber
2åç¶ããŠå®è¡ã§ããŸããïŒ ããã¯ããã¥ãŒããŒã·ã§ã³ãã¹ãã®ãŠãŒã¹ã±ãŒã¹ã«ãšã£ãŠéèŠã§ãã
ã¢ã¯ãã£ããªãã¥ãŒã¿ã³ããåãæ¿ããããã«ãã°ããŒãã«å€æ°ãå€æŽããªãããç°å¢ãããŒããããã¹ãããã°ããé£ç¶ããŠè€æ°åå®è¡ããããšèããŠããŸãã
çŸåšã cli
ãã©ã€ããŒãAPIã䜿çšããŠãããåãã¹ãå®è¡ã®éã«require.cache
ããã¹ãããå®çŸ©ãã¡ã€ã«ãã¯ãªã¢ããå¿
èŠããããŸãã ããã¯CommonJSã«ã¯çæ³çã§ã¯ãªããesmã§ã¯ãŸã£ããæ©èœããŸããã
ãŠãŒã¹ã±ãŒã¹ã®æ¬äŒŒã³ãŒãïŒ
const profiles = await loadProfiles();
const options = {
...profiles.default,
formatter: require.resolve('./our-awesomely-crafted-formatter'),
some: 'other options we want to override',
}
const cucumber = new Cucumber(options);
// Allow cucumber to load the step definitions once.
// This is `async`, so support for esm can be added without a breaking change
await cucumber.initialize();
// Initial test run ("dry run"), without mutants active
await cucumber.run();
collectMutantCoveragePerTestFromFormatter();
// Start mutation testing:
global.activeMutant = 1;
await cucumber.run({ features: ['features/a.feature:24']);
collectResultsFromFormatterToDetermineKilledOrSurvivedMutant()
global.activeMutant = 2;
await cucumber.run({ features: ['features/b.feature:24:25:26', 'features/c.feature:12']);
collectResultsFromFormatterToDetermineKilledOrSurvivedMutant()
// etc
@nicojsã¯ééããªããããå¿ èŠã§ããããšã«åæããŸããããšãã°ãã©ã ãã§ãã¥ãŠãªãå®è¡ããã人ãæ°åç»å ŽããŸãããŸãããããå¿ èŠã«ãªãã€ã³ã¿ã©ã¯ãã£ãã¢ãŒããè¿œå ããããšæããŸãã
ç§ããããŸã§ã«ã¹ã±ããããã®ã¯ãããæ©èœçãªã¹ã¿ã€ã«ã§ããããç§ãæãã®ãšåãåºæ¬çãªæŠå¿µã§ããã
const runnerOptions = {
support: {
require: ['features/support/**/*.js']
}
}
// initial run returns support code library
const { support } = await runCucumber(runnerOptions)
// subsequent run reuses support code library
await runCucumber({
...runnerOptions,
support
})
ããã¯ç§ãã¡ã®ããã«åããŸãð
ç§ãã¡ã«ã圹ç«ã¡ãŸãðð»
ãã®ãããªãã®ã¯ããã¹ãããŒã«ã®çµ±åïŒJestãCypressïŒã§ä»æ¥çºçããŠãã倧ããªæ··ä¹±ã®ä»£æ¿æ段ãšããŠéåžžã«åœ¹ç«ã€ãšæããŸããããšãã°ããããã®åé¡ãïŒéèŠåºŠã®é«ãé ã«ïŒèŠã€ããŸããã
cypress-cucumber-preprocessor
ã¯ãäŸã®ã¿ã°ããµããŒãããŠããŸããïŒhttps://github.com/TheBrainFamily/cypress-cucumber-preprocessor/issues/196ïŒjest-cucumber
ã¯Cucumber JSONã¬ããŒãããµããŒãããŠããŸããïŒhttps://github.com/bencompton/jest-cucumber/issues/27ïŒcypress-cucumber-preprocessor
ã¯ãéèšãå
¬åŒã«ãµããŒãããŠããªãè€æ°ã®Cucumber JSONã¬ããŒããçæããŸãïŒhttps://github.com/TheBrainFamily/cypress-cucumber-preprocessor/issues/423ïŒjest-cucumber
ã¯jest-cucumber-fusion
ã»ã©äŸ¿å©ã§ã¯ãããŸããcucumber-jest
ãŸã...Jest / Karma / Cypress /ãªã©ã®éã«æå°éã®ã°ã«ãŒã³ãŒãã衚瀺ãããŸãã ãšcucumber-jsãªã®ã§ã䜿çšããå¿ èŠã®ãã
çŽ æŽãããææ¡@davidjgossð
ã³ãã³ãã©ã€ã³ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšããã¹ããšããŠã·ããªãªã解æããã³å®è¡ãããããžãã¹ããžãã¯ããšã®éã®é¢å¿ã®åé¢ã¯ããããµãŽãã«ã¢ãŒããã¯ãã£ãã¿ãŒã³ãæãåºãããŸãã
cucumber-rubyã§ã¯ããã¯ãªãŒã³ã«ãŒã ãã§ãŒãããåæ§ç¯ããŠãããããå®éã«ã¯ã³ã¢ãã¡ã€ã³ããžãã¯ïŒãŸãã¯ãå éšå è§åœ¢ãïŒãå¥ã®gemããã±ãŒãžã«åå²ããŸããã ããã¯ããã§ã®ã³ã³ããã¹ãã§ã¯ãªãããšã¯ç解ããŠããŸããããã®èšèšããã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãããRubyAPIã«ã€ãããŒã·ã§ã³ããã£ãŒãããã¯ããããã䟡å€ããããããããŸããã cucumber-ruby-core gemã®READMEã«ããã®APIã®äœ¿çšæ¹æ³ã®äŸããããŸãã
ããŠãããããå®è¡ããããã®API眲åã®æåã®ãã¹ã§ãã ããã¯ãå
éšã«ããIConfiguration
ãªããžã§ã¯ãã«å€§ããåºã¥ããŠããŸããïŒãããã£ãŠãäžã®æ¹ã«ãªãã¡ã¯ã¿ãªã³ã°ãããŸãåŒãèµ·ãããªãããã«ããå¿
èŠããããŸãïŒãããã©ãããã¯å°ãå°ãªããªããŸãã
export interface IRunCucumberOptions {
cwd: string
features: {
defaultDialect?: string
paths: string[]
}
filters: {
name?: string[]
tagExpression?: string
}
support:
| {
transpileWith?: string[]
paths: string[]
}
| ISupportCodeLibrary
runtime: {
dryRun?: boolean
failFast?: boolean
filterStacktraces?: boolean
parallel?: {
count: number
}
retry?: {
count: number
tagExpression?: string
}
strict: boolean
worldParameters?: any
}
formats: {
stdout: string
files: Record<string, string>
options: IParsedArgvFormatOptions
}
}
export interface IRunResult {
success: boolean
support: ISupportCodeLibrary
}
export async function runCucumber(
options: IRunCucumberOptions
): Promise<IRunResult> {
// do stuff
}
ãããŠãéåžžã«å·¥å€«ããã䜿çšäŸïŒ
const result = await runCucumber({
cwd: process.cwd(),
features: {
paths: ['features/**/*.feature'],
},
filters: {
name: ['Acme'],
tagExpression: '<strong i="10">@interesting</strong>',
},
support: {
transpileWith: ['ts-node'],
paths: ['features/support/**/*.ts'],
},
runtime: {
failFast: true,
retry: {
count: 1,
tagExpression: '<strong i="11">@flaky</strong>',
},
strict: true,
worldParameters: {
foo: 'bar',
},
},
formats: {
stdout: '@cucumber/pretty-formatter',
files: {
'report.html': 'html',
'TEST-cucumber.xml': 'junit',
},
options: {
printAttachments: false,
},
},
})
ãã£ãŒãããã¯ãæè¿ããŸãïŒ ããã¯ãå¥ã®æ©èœãšãªããããã¡ã€ã«/æ§æã®ããŒãã«é¢ãããã®ãã«ããŒããŠããªãããšã«æ³šæããŠãã ããã
ããã¯ããããã ãšæããŸãã 質åïŒã«ã¹ã¿ã ãã©ãŒããã¿ãŒãã©ã®ããã«æ§æããŸããïŒ
@nicojsã¯CLIã®ãããªãã®ã§ã
formats: {
files: {
'report.html': './my/fancy-reporter.js',
'other-report.html': '@me/reporter-package',
}
},
ãã®@davidjgossã®é²æç¶æ³ã確èªã§ããŠããããã§ãã
ããã®é²è¡ãé ããããã¯ãããŸããããåæã«ãä»ã®Cucumberå®è£ ã§ãæ©èœãã圢åŒãæ¡çšããããã«ãããã§ãã
æçµçã«ã¯JSONã¹ããŒãã§ãããããã«ã€ããŠèª¬æããŠããéãTypeScriptã¿ã€ãã¯äººéã解æãããããšæããŸãã
cucumber/common
ã¢ãã¬ãã§ææ¡ããããã©ãŒãããã«é¢ããæ°ããåé¡ãäœæããã³ã¢ããŒã ã«ããã§è°è«ããããæåŸ
ããããšããå§ãããŸãã
@aslakhellesoyãè¡ããŸãã
ããã°ã©ããã£ãã¯APIãå
±éã®ãªãã·ã§ã³æ§é ã«é¢é£ä»ããããŠããªãããšã«ã€ããŠã©ãæããŸããïŒ ããããrunCucumber
ãªãã·ã§ã³ã«ãããããããã«ã å°ãè€éã«ãªããããããŸããããããŒããããã©ã¡ãŒã¿ã§ããsupport
ãããã¯ããŸãã¯ä»¥åã«ããŒãããããµããŒãã³ãŒãã©ã€ãã©ãªããããªã©ã®çç±ã§é
åçã§ãã æ©èœ+ãã¯ã«ã¹ã«ã€ããŠãåæ§ã®ããšãã§ããŸãã ãŸããCLIã§ãµããŒãããããŸããŸãªãªãã·ã§ã³ïŒäŸïŒ --exit
ïŒããããŸãããããã°ã©ããã£ãã¯APIã§ã¯é©åã§ã¯ãããŸããã
ããã°ã©ããã£ãã¯APIãå ±éã®ãªãã·ã§ã³æ§é ã«é¢é£ä»ããããŠããªãããšã«ã€ããŠã©ãæããŸããïŒ
ãªãã·ã§ã³ãã¡ã€ã«ã®å
容ããrunCucumber
ãå¿
èŠãšããããŒã¿æ§é ã«å€æããé¢æ°ãæäŸããéããããã¯åé¡ãªããšæããŸãã
æçµçã«ã¯JSONã¹ããŒãã§ãããããã«ã€ããŠèª¬æããŠããéãTypeScriptã¿ã€ãã¯äººéã解æãããããšæããŸãã
ãªãéžæããå¿
èŠãããã®ã§ããïŒ StrykerJSã§JSONã¹ããŒãã䜿çšããŠã json-schema-to-typescriptã䜿çšããŠtypescriptãçæããŠãprebuild
ã¹ãããã䜿çšããŠãªã³ã¶ãã©ã€ã§çæããŸãã
JSONã¹ããŒãã¯ã人éã®IMOã«ãšã£ãŠã¯ãŸã ããçšåºŠèªã¿ããããã®ã§ãã ã¹ãã©ã€ã«ãŒã¬ãã«ã¯ãã§ã«PRãããã人ã ã¯äœããã¹ããç¥ã£ãŠããããã§ãð€·ââïž
CLIã®ããã«
formats: { files: { 'report.html': './my/fancy-reporter.js', 'other-report.html': '@me/reporter-package', } },
ããã¯ãåºåãã¡ã€ã«åãå¿ èŠãšããªãã¬ããŒã¿ãŒã«å¯ŸããŠã©ã®ããã«æ©èœããŸããïŒ ãã®ããã§ãïŒ
formats: {
files: {
'': require.resolve('./my-awesome-stryker-formatter')
}
}
ãªãéžæããå¿ èŠãããã®ã§ããïŒ
æ§æã®æ§é ã®ä¿¡é Œã§ããå¯äžã®æ å ±æºãšããŠJSONã¹ããŒãã䜿çšããå¿ èŠããããšæããŸãã -次ã«ããã®ã¹ããŒãããTypeScript / Java / Whateverã³ãŒããçæããŸãã
ããããJSONã¹ããŒãã¯äººéã«ãšã£ãŠã¯å°ãèªã¿ã«ããã®ã§ã cucumber/common
GitHubã®åé¡ã§ã¹ããŒãã«ã€ããŠè°è«ããŠããéãç§ã¯
ç§ãäœãæå³ããã®ãåãããŸããïŒ
JSONã¹ããŒãã¯ã人éã®IMOã«ãšã£ãŠã¯ãŸã ããçšåºŠèªã¿ãããã§ãã
ç§ã«ã¯ããããŸãã:-)åé·ãããŸãã
ããã¯ãåºåãã¡ã€ã«åãå¿ èŠãšããªãã¬ããŒã¿ãŒã«å¯ŸããŠã©ã®ããã«æ©èœããŸããïŒ
formats: {
stdout: './my-awesome-stryker-formatter',
files: {
'report.html': './my/fancy-reporter.js',
'other-report.html': '@me/reporter-package',
}
},
ïŒstdoutã¹ããªãŒã ã䜿çšã§ãããã©ãŒããã¿ãŒã¯1ã€ã ãã§ãïŒ
æãåèã«ãªãã³ã¡ã³ã
ïŒstdoutã¹ããªãŒã ã䜿çšã§ãããã©ãŒããã¿ãŒã¯1ã€ã ãã§ãïŒ