์ด๊ฒ์ ๋ฌผ๋ฆฐ. ์ด ๋๋ฌธ์ ์ค์ด ํ๋ก์์ 3์ผ๋ก์ ์ ๊ทธ๋ ์ด๋๊ฐ ๋ณด๋ฅ๋์์ต๋๋ค.
https://github.com/cucumber/cucumber-js/blob/fbff6b0fae54d2e341ee247addc60a9f05753f1d/src/runtime/test_case_runner.js#L109 ๊ฐ ๋ฒ์ธ์ ๋๊น?
์ด ์ค ์ ํํ ์ด๋ค ๋ถ๋ถ์ด ํ์ํฉ๋๊น? ์ํ ์ ์ด๋ง ์ฌ์ฉํฉ๋๊น? ์ด๊ฒ์ด ์ด๊ฒ์ ๋๋ฌ์ผ ๋ฌธ์์์ ์ฌ์ฉ๋ ์ ์ผํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
ํ์ฌ scenarioResult.status
, scenarioResult.scenario.uri
๋ฐ scenarioResult.scenario.line
ํฉ๋๋ค.
@jbpros ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก๋ ํ์ฌ ์ด๋ฅผ ๋๋ฌ์ผ ์์ ๋ฅผ ๋ฐ๋ฅด๊ณ ์์ต๋๊น(์๋๋ฆฌ์ค๊ฐ ์คํจํ ๋ ์คํฌ๋ฆฐ์ท ์ ์ฅ)? ๋๋ ํญ์ ์๋๋ฆฌ์ค๊ฐ ํํฌ์ ์ ๋ฌ๋๋ ๊ฒ์ด ์ ๋ง ์ด์ํ๋ค๊ณ ์๊ฐํ๊ณ ์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์ถ์์ต๋๋ค.
ํ์ฌ ํ
์คํธ ๋จ๊ณ๊ฐ ์คํจํ ๋ ํธ์ถํ ํจ์๋ฅผ ์ค์ ํ ์ ์๋ onFailedTestStep
๋ผ๋ ์๋ก์ด ์ง์ ์ฝ๋ ํจ์๋ฅผ ์ถ๊ฐํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํจํ ๋จ๊ณ์ ๋์ผํ ์ธ๊ณ ์ธ์๋ก ํธ์ถ๋๋ฏ๋ก ์ด๋ฏธ์ง ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ์ฒจ๋ถํ ์ ์์ต๋๋ค. ์ด๋ฒคํธ ํ๋กํ ์ฝ ํฌ๋งทํฐ์์ ์ฒจ๋ถ ํ์ผ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ํด๋์ ๋ณต์ฌํ๊ธฐ ์ํ ์ ์ฉ ๋ชจ๋์ ๋ง๋ค ์ ์์ต๋๋ค.
๋์ฅ์ด ์ฌ์ฉ์๋ก์ ๋๋ ๊ทธ๋ฌํ ๊ธฐ๋ฅ/์ฒ๋ฆฌ๊ธฐ/๊ฐ์ฒด๊ฐ ๊ฐ๋ฅํ ํ ๋ง์ ์ปจํ
์คํธ๋ฅผ ๊ฐ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ ์ฒด ๊ณผ๊ฑฐ ๋ฐ ๋ฏธ๋ ์คํ ํธ๋ฆฌ(https://github.com/cucumber/cucumber-js/issues/875)์ ๊ฐ์ ์
์ฅํ ๊ฒ์ด ์์ด๋ ํ์ฌ ๋จ๊ณ์ ์๋๋ฆฌ์ค๊ฐ ๋ฌด์์ธ์ง ์๋ ๊ฒ์ด ๋งค์ฐ ์ ์ฉ ํฉ๋๋ค. ๊ฐ ์คํจ.
์๋ฅผ ๋ค์ด, ํ๊ทธ์ ๋ฐ๋ผ ๋กค๋ฐฑ ์ ์ฐจ๋ฅผ ์ ์ดํ๊ฑฐ๋ ๋จ์ํ ์คํจํ ๋จ๊ณ ์ ์ ์คํ๋ ๋ค๋ฅธ ๋จ๊ณ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋น์ ์ด ์ถ๊ตฌํ๋ ์๋ฃจ์
์ด๋ผ๋ฉด onFailedTestStep
์ ๋ฌํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
Hook Docs ๋ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ScenarioResult
๋ํ ์ฒซ ๋ฒ์งธ ๋จ๋ฝ์ ๋งํฌ๋ 404์
๋๋ค.
onFailedTestStep
๋์ AfterStep
๋ผ๋ ํํฌ๋ฅผ ์ ์ํ์ง ์๊ฒ ์ต๋๊น? Cucumber-Ruby๋ ์ค๋ซ๋์ ์ด๊ฒ์ ์ฌ์ฉํด ์์ผ๋ฉฐ ์์๋ค์ํผ ์ผ๊ด์ฑ์ด ์ค์ํฉ๋๋ค.
@aslakhellesoy ์ฌ์ฉ ์ฌ๋ก์ ์ง์คํ๊ณ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๊ณ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
์ผ๊ด์ฑ์ด ์ค์ํ์ง๋ง ๋ค๋ฅธ ๊ณณ์ ์๋ค๊ณ ํด์ ๋ชจ๋ ๊ฒ์ ๋ณต์ฌํด์ผ ํ๋ ๊ฒ์ ์๋๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋ฌผ์ ์ฒ๋ฆฌํ๋ ๋ ๋์ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํจ์ ๋ฐ๋ผ ์งํํด์ผ ํฉ๋๋ค.
๋น์ ์ด๋ @mattwynne ๋๋ ๋ฃจ๋น ํ์ ๋๊ตฐ๊ฐ๊ฐ AfterStep์ด ๋ฌด์์ ์ํด ๊ตฌ์ถ๋์์ผ๋ฉฐ ๋ฌด์์ ์ํด ์ฌ์ฉ๋๋์ง์ ๋ํด ๋ฐํ ์ ์์ต๋๊น?
์ ๋ ๋ฃจ๋น ํ ์ถ์ ์ด ์๋๋ผ์ AfterStep
๊ฐ ๋ฌด์์ ์ํด ๋ง๋ค์ด์ก๋์ง ๋ชจ๋ฅด์ง๋ง ๊ฐ์ธ์ ์ผ๋ก AfterStep
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์
์ ์ํํฉ๋๋ค. ์ฌ๊ธฐ ๋ช ๊ฐ์ง ์๊ฐ ์์ด์.
์ฐ๋ฆฌ์๊ฒ๋ ์ถ๊ฐ ๋ก๊น
์ ์ํํ๊ธฐ ์ํด ์๋๋ฆฌ์ค์ ๊ฒฐ๊ณผ๊ฐ ์ด์จ๋ AfterStep
์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. AfterStep
์์ ํ์๋ก ํ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํ์ง๋ ์์์ต๋๋ค.
์ด๊ฒ์ onFailedTestStep
์ ๊ฐ์ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ ๋์ผํ ๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์ด์ ์์์ ์๋ฏธํฉ๋๋ค. ํ๋๋ AfterStep
๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํ๋๋ onFailedTestStep
ํฉ๋๋ค.
์ด๊ฒ์ ํํฌ๋ฅผ ๊ตฌํํ ์ฌ๋์ ๋ฐ๋ผ ํ๋ก์ ํธ ๋ด์์๋ ๋ถ์ผ์น๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ์ผ๋ถ๋ AfterStep
๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ์ผ๋ถ๋ onFailedTestStep
์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ๋ค ๋ฐ๋์งํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@charlierudolph
๋๋ ๋น์ ์ด ์ด๋์์ ์๋์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ๋ ์ด์ ๋ฅผ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋๋ฆฌ์ค๊ฐ ํํฌ๋ก ๋์ด๊ฐ๋ ๊ฒ ์ ๋ง ์ด์ํ๋ค๊ณ ์๊ฐํ๋๋ฐ
๋๋ ๋ ํจ๋ฌ๋ค์์ ํผํฉ์ ๊ฒฐ์ฝ ์ข์ํ์ง ์์์ต๋๋ค. Before/After ํํฌ๋ ์ค์ ๋ก ํ ์คํธ๋ฅผ ์คํํ๋ ์ค์ /ํด์ ์ ๊ด๋ จ์ด ์์ต๋๋ค. ๋ณด๊ณ ์ฉ์ผ๋ก๋ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๋ก ์ ๊ฒฝ์จ์ผ ํ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์คํจํ ์๋๋ฆฌ์ค์์ ์คํฌ๋ฆฐ์ท์ ์ฐ๊ณ ๋ธ๋ผ์ฐ์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
AfterStep์์ ์ด ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ ์คํจํ ์๋๋ฆฌ์ค๊ฐ ์๋ ์คํจํ ๋จ๊ณ์ ๋ํด ์ํ๋ฉ๋๋ค. ์ด๊ฒ์ด repo์ ๋ชจ๋ ์์ ๊ฐ ์๋๋ฆฌ์ค ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ด๋ฉฐ ์ด ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์๋ก์ด ํํฌ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ ์ด์ ์ ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค.
์คํจ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ผ๋ถ ํ๋ก์ ํธ์ ๋ํด ์ถ๊ฐ ๋ก๊น ์ํ
์ด๋ค ์ ํ์ ์ถ๊ฐ ๋ก๊น ์ ์ํํฉ๋๊น?
์ฒญ์
๋จ๊ณ ํ ์ ๋ฆฌํ ๊ฒ์ ๋ฌด์์ ๋๊น?
์ถ๊ฐ ๋ก๊น ์ ์ํํ๋ ค๋ฉด ์๋๋ฆฌ์ค์ ๊ฒฐ๊ณผ๊ฐ AfterStep์ผ๋ก ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ ค์กฐ์ฐจ ํ์ง ์์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ AfterStep์์๋ ํ์ํ๋ค๊ณ ํ์ ํฉ๋๋ค.
๋๋ ๊ทธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์งํ๋ ค๊ณ ํฉ๋๋ค. ๋๋๋ก ์ฌ๋๋ค์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ ๋ ๋๋ ๋ ๋์ ์ง์์ ์ํด ๊ตฌ์ถํ ์ ์๋ ๊ฒ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฆ, onFailedTestStep๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ํ๋ ์ด์์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ๋๋ AfterStep์ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํ๋๋ onFailedTestStep์ ์ฌ์ฉํฉ๋๋ค.
Cucumber-js์๋ ํ์ฌ AfterStep
๊ฐ ์์ผ๋ฉฐ ๋ ๋ค ๊ตฌํํ ๊ณํ์ด ์์ต๋๋ค.
๋๋ protractor-cucumber-framework ์์ ์ค์ด 3 ์ง์์ ์ป์ผ๋ ค๊ณ ๋
ธ๋ ฅ ์ค์ด๋ฉฐ ์ค์ ๋ก AfterStep
์์ต๋๋ค. ๋ ๊ฐ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ์ฐ๊ฒฐํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์๋์ง๋ง ํจ์ฌ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์๋ก์ด ์ด๋ฒคํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ด๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ง๋ง *-finished
์ด๋ฒคํธ์์ ๊ธฐ๋ฅ/์๋๋ฆฌ์ค/๋จ๊ณ ์ปจํ
์คํธ๋ฅผ ์ป์ง ๋ชปํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ธฐ๋ฅ, ์๋๋ฆฌ์ค ๋ฐ ๋จ๊ณ์ ์ด๋ฆ, URI ๋ฐ ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋๊ธฐ์ ๋ค์ ๋ณด๊ณ ํ๊ณ IDE ํตํฉ(Intellij)์ ํธ๋ฆฌ์์ ํ์ํ๊ณ ํ์ํ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด์จ๋ ๋ด $0.02.
๋
ผ์๋ ๋ชจ๋ ๊ธฐ๋ฅ(๋ฐ ํจ์ฌ ๋ ๋ง์ ๊ฒ)์ setDefinitionFunctionWrapper
์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
๋ชจ๋ ๋จ๊ณ๋ฅผ ์ฌ์ /์ฌํ ์์
์ผ๋ก ๋ํํ์ฌ ๋จ๊ณ์ ์
๋ ฅ ๋ฐ ์ถ๋ ฅ์ ๋ฐ์ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ๋ณํํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "๋ค์ ๋จ๊ณ๋ ์ค๋ฅ XYZ๋ก ์คํจํด์ผ ํฉ๋๋ค" ๋จ๊ณ๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ์ด ๋จ๊ณ๋ฅผ ํตํด ๊ฐ ๋จ๊ณ์์ ์ค๋ณต๋ ๋ถ์ ์ ์ธ ๋จ๊ณ๋ ๋ค์ง์ ์ ์๋ ํน์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ์ง ์๊ณ ๋ ๊น์ ๋ถ์ ์ ์ธ ๊ฒ์ฌ ๋ฐ ์ค๋ฅ ์๋ฎฌ๋ ์ด์ ์ ์ ์ํ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. .
AfterStep
ํํฌ๊ฐ setDefinitionFunctionWrapper
ํ ์ ์๋ ๊ฒ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ง์ฅ์์ 2.0.0์์ 3.0.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌ์ ํ ์๋๋ฆฌ์ค ๊ฒฐ๊ณผ์ ๋ํด ์ ์๋์ง ์์
@paul-phillips-ark ์, #905๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์์ผ๋ก ๋์๊ฐ๋ ๋ฐ ๋์์ด ๋๊ณ ์ถ๋ค๋ฉด @charlierudolph ์ ์๊ฒฌ์ ๋ค๋ฃจ๋ ์ ํ๋ณด๋ฅผ ๋ถ๊ธฐํ์ฌ ์ ์ถํ ์ ์์ต๋๋ค.
๋ด๊ฐ console.log(scenarioResult)ํ ๋ Before ๋ฐ After ๊ธฐ๋ฅ ๋ชจ๋์์ ์ฌ์ ํ ์ ์๋์ง ์๊ณ ์์ต๋๊น? ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น? ์์ ๋๊ธ์ด ์กฐ๋ฐํ๊ฒ ๋ค๋ฆฐ๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
ํ์ฌ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ์๋๋ฆฌ์ค ์ ์ ํ
์คํธ๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฑ์ฐ๋ ๊ณ ์ ์ฅ์น๋ฅผ ์์ฒญํฉ๋๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์๋ ํ์ํ ๊ณ ์ ์ฅ์น ์ธํธ๊ฐ ์์ต๋๋ค. ์๋ฒ์ Fixture ๊ฒฝ๋ก๋ ๊ธฐ๋ฅ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ณตํ๋ฏ๋ก uri
์ต์
๋ ํ์ํฉ๋๋ค.
Before({ timeout: 60 * 1000 }, scenarioResult => {
...
const file = scenarioResult.scenario.feature.uri;
...
});
After
ํํฌ์์ ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด ์คํฌ๋ฆฐ์ท์ ๋ง๋ญ๋๋ค.
After(scenarioResult => {
if (scenarioResult.status === 'failed') {
driverUtils.takeScreenShot(scenarioResult.scenario.name);
}
});
@charlierudolph ์ ์ ์๋ฃจ์ ์ผ๋ก pull request #905๊ฐ ํฌํจ๋ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค๋จํ ์ ์์ต๋๊น? ์ด๋ฅผ ํตํด v2์์ v3์ผ๋ก์ ์ ํ์ ์๋ฃํ ์ ์์ต๋๋ค. ์ด๋ ํ์ฌ ์ด ํ๊ท/๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ค๋จ๋์์ต๋๋ค. ์ ์๋ ๋ฆฌํฉํ ๋ง์ ๋ค๋ฅธ ํ ๋ฆฌํ์คํธ์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
#905์ ๋ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด๋ฒ ์ฃผ๋ง์ ์์ ์ฌํญ์ ํ์ธํ๊ณ ๋ฆด๋ฆฌ์คํ๋ ค๊ณ ํฉ๋๋ค.
์ด ์ค๋ ๋๋ ๋ซํ ํ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ด๋ จ ๋ฒ๊ทธ์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
onFailedTestStep
๋์AfterStep
๋ผ๋ ํํฌ๋ฅผ ์ ์ํ์ง ์๊ฒ ์ต๋๊น? Cucumber-Ruby๋ ์ค๋ซ๋์ ์ด๊ฒ์ ์ฌ์ฉํด ์์ผ๋ฉฐ ์์๋ค์ํผ ์ผ๊ด์ฑ์ด ์ค์ํฉ๋๋ค.