Cucumber-js: 7.2.0์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์™ธ๋ถ€ ๊ธฐ์ž๋ฅผ ์ค‘๋‹จ

์— ๋งŒ๋“  2021๋…„ 04์›” 21์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: cucumber/cucumber-js

์•ˆ๋…•ํ•˜์„ธ์š” @davidjgoss ์™€ @charlierudolph์ž…๋‹ˆ๋‹ค!

7.2.0 (#1589)์— ๋„์ž…๋œ ESM์— ๋Œ€ํ•œ ์ง€์›์€ ๋” ์ด์ƒ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์™ธ๋ถ€ ๋ฆฌํฌํ„ฐ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋Š” ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์˜ค๋ฅ˜๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

const TestCaseHookDefinition = require('@cucumber/cucumber/lib/models/test_case_hook_definition')

๋˜๋Š”:

import TestCaseHookDefinition from '@cucumber/cucumber/lib/models/test_case_hook_definition';

๊ฒฐ๊ณผ:

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/models/test_case_hook_definition' 
 is not defined by "exports" in /path/to/project/node_modules/@cucumber/cucumber/package.json

๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ”„๋กœ์ ํŠธ(๋” ์žˆ์„ ์ˆ˜ ์žˆ์Œ):

  • Serenity/JS - @serenity-js/cucumber ๋ชจ๋“ˆ์€ ๋‹ค์Œ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

    • @cucumber/cucumber/package.js (๋ฒ„์ „ ์ฝ๊ธฐ)

    • @cucumber/cucumber/lib/models/test_case_hook_definition - TestCaseHookDefinition ์ธ์Šคํ„ด์Šคํ™”

  • @jbpros cucumber-pretty-formatter - ๋กœ๋“œ์— ์˜์กดํ•˜๋Š” jbpros/cucumber-pretty-formatter#2๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

    • @cucumber/cucumber/lib/formatter - IFormatterOptions

    • @cucumber/cucumber/lib/formatter/helpers - formatLocation

    • @cucumber/cucumber/lib/formatter/helpers/gherkin_document_parser - getGherkinExampleRuleMap , getGherkinScenarioMap , getGherkinStepMap

    • @cucumber/cucumber/lib/formatter/helpers/pickle_parser - getPickleStepMap

  • @christian-bromann - @wdio/cucumber-framework , ๋กœ๋“œ:

    • @cucumber/cucumber/lib/support_code_library_builder/types - ITestCaseHookParameter

    • @cucumber/cucumber/lib/formatter/helpers/event_data_collector - EventDataCollector

    • @cucumber/cucumber/lib/support_code_library_builder/types - ITestCaseHookParameter

    • @cucumber/cucumber/lib/runtime - IRuntimeOptions

Cucumber.js๊ฐ€ ์œ„์˜ ํด๋ž˜์Šค, ์œ ํ˜• ๋ฐ ๊ธฐ๋Šฅ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด reporters ๋„ค์ž„์ŠคํŽ˜์ด์Šค(๋˜๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ):

import { reporters } from '@cucumber/cucumber';

reporters.TestCaseHookDefinition

๋˜๋Š” ์œ„์˜ ์ œ์•ˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ,
1์›”

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ข‹์•„, 7.2.1์€ ๋˜๋Œ๋ฆฌ๊ธฐ์™€ ํ•จ๊ป˜ ๋‚˜์™”๋‹ค. ๋‚˜๋Š” ESM์— ๋Œ€ํ•ด ๋‹ค์‹œ ํŒŒ๊ณ ๋“ค์–ด ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ๋‹ค. @jan-molak ํ‚ค์›Œ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

๋ชจ๋“  4 ๋Œ“๊ธ€

@jan-molak

7.2.0(#1589)์— ๋„์ž…๋œ ESM์— ๋Œ€ํ•œ ์ง€์›์€ ๋” ์ด์ƒ ํ•˜์œ„ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์™ธ๋ถ€ ๋ฆฌํฌํ„ฐ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด --esm ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ?

๋‚˜๋Š” ์˜ค๋Š˜์—๋„ pretty์˜ ๋ฌธ์ œ๋ฅผ ์•Œ์•„์ฐจ๋ ธ๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ถœํ•˜๋Š” ๊ฒƒ์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ์ง„์ž…์ ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์€ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ๋‚˜์ค‘์— ์‹คํ–‰ ์ทจ์†Œํ•˜๋ฉด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ API ๊ณ„์•ฝ์— ํšจ๊ณผ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @davidjgos๋‹˜!

๋นจ๋ฆฌ ๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด --esm์„ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ?

์•„๋‹ˆ์š”, ์™ธ๋ถ€ ํ”„๋กœ์ ํŠธ๊ฐ€ @cucumber/cucumber ์—์„œ ํ•˜์œ„ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ๋งˆ๋‹ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค - https://github.com/jan-molak/cucumber-js-1646

git clone https://github.com/jan-molak/cucumber-js-1646.git
cd cucumber-js-1646
npm install
npm start

์˜ค๋ฅ˜ ์ฐธ์กฐ:

> [email protected] start /path/to/jan-molak/cucumber-js-1646
> node index.js

internal/modules/cjs/loader.js:438
      throw e;
      ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/models/test_case_hook_definition' is not defined by "exports" in /path/to/jan-molak/cucumber-js-1646/node_modules/@cucumber/cucumber/package.json
    at throwExportsNotFound (internal/modules/esm/resolve.js:290:9)
    at packageExportsResolve (internal/modules/esm/resolve.js:513:3)
    at resolveExports (internal/modules/cjs/loader.js:432:36)
    at Function.Module._findPath (internal/modules/cjs/loader.js:472:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:867:27)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/path/to/jan-molak/cucumber-js-1646/index.js:1:32)

์ข‹์•„, 7.2.1์€ ๋˜๋Œ๋ฆฌ๊ธฐ์™€ ํ•จ๊ป˜ ๋‚˜์™”๋‹ค. ๋‚˜๋Š” ESM์— ๋Œ€ํ•ด ๋‹ค์‹œ ํŒŒ๊ณ ๋“ค์–ด ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ๋‹ค. @jan-molak ํ‚ค์›Œ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@davidjgoss๋‹˜, ๋น ๋ฅด๊ฒŒ ๋‹ต๋ณ€ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰