Cucumber-js: ์š”๊ตฌ ๋ชจ๋“ˆ์—์„œ ์˜ค์ด ์‚ฌ์ „ ์„ค์ • ๋ชจ๋“ˆ ํ—ˆ์šฉ

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

์˜ค์ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์ „ ์„ค์ •์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด ์™ธ๋ถ€ ๋ชจ๋“ˆ์—๋Š” peerDependency๋กœ @cucumber/cucumber ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ง์ ‘ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ข…์†์„ฑ์„ ํ†ตํ•ด ์‚ฌ์ „ ์„ค์ •์€ World ์ƒ์„ฑ์ž๋ฅผ ์„ค์ •ํ•˜๊ณ  Given , When , Then ๋ฅผ ์ „์—ญ ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๊นจ๋—ํ•œ ๋‹จ๊ณ„ ์ •์˜.

๋กœ์ปฌ ํŒŒ์ผ์— cucumber-js --require ./test-preset.setup.js ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์˜ค์ด-js ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์„ ๋•Œ ๋ชจ๋‘ ์ž‘๋™ํ•˜์ง€๋งŒ, ๋™์ผํ•œ ์‚ฌ์ „ ์„ค์ •์œผ๋กœ ์™ธ๋ถ€ ๋ชจ๋“ˆ๋กœ ์ด๋™ํ•˜๊ณ  ์ด๋ฅผ cucumber-js --require-module cucumber-preset-foo ๋กœ ์š”๊ตฌํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค #1326์— ํ‘œ์‹œ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

supportCodeRequiredModules ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์™ธ๋ถ€ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•œ ์งํ›„ supportCodeLibraryBuilder.reset ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” cli ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žฌ์„ค์ •๋˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ์˜ค์ด ์ธ์Šคํ„ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์งํ›„.

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/cli/index.ts#L160 -L161

https://github.com/cucumber/cucumber-js/blob/e2fd32a4fe411484275307e2a4b59605a8ded165/src/support_code_library_builder/index.ts#L402 -L417

์•„๋งˆ๋„ ์ด ๋””์ž์ธ์— ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“ˆ์„ ์š”๊ตฌํ•˜๊ธฐ ์ „์— reset ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ ํœด๋Œ€์šฉ ์‚ฌ์ „ ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด react e2e์™€ ๊ฐ™์€ ํŠน์ • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์‚ฌ์ „ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

node: v15.8.0
@cucumber/cucumber: 7.1.0
os: Linux
bug help wanted accepted

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

์•ˆ๋…•ํ•˜์„ธ์š” @zanona

๋ชจ๋“ˆ์ด ์žฌ๋ฏธ์žˆ์–ด ๋ณด์ž…๋‹ˆ๋‹ค.
๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์กฐ์‚ฌ๋„

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ด๋ฏธ ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ PR์„ ์—ด๊ณ  ์ด์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

ํ , ๋ฆฌ์…‹์„ require-module ๋ฐ”๋กœ ์ง์ „์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋Š” ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ(typescript/babel)๋ฅผ ์„ค์ •ํ•˜๋Š” ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์—ˆ๋˜ ๊ณผ๊ฑฐ์— require-module์ด ์‚ฌ์šฉ๋œ ์ œํ’ˆ์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์ž˜ ๋“ค๋ฆฐ๋‹ค.
๋‚˜๋Š” ํ™•์‹คํžˆ PR์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹Œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ์‚ฌ์ „ ์„ค์ •์„ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธ ์‹คํ–‰์ž๊ฐ€ ์ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ๋ฒ”์œ„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜๋Š” ๋‹จ์ˆœํžˆ ๋‘ ์ค„์„ ๋ฐ”๊พธ๊ณ  ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”?

์˜ค์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ •์ƒ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋™์•ˆ ์‹ค์ œ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋ฒ„๊ทธ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜๊ฐ€ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๋ฒ”์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด PR์˜ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ๋„ ์ด์ ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋‚˜์š”?

๋‘ ์ค„์„ ๋ฐ”๊ฟ€ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ IMO์˜ ์ฒซ ๋ฒˆ์งธ ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

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