E2E Test
ํ์ต ํค์๋
E2E Test
E2E Test Tool
Puppeteer
Headless Chrome
Headless Browser
Playwright
CodeceptJS
E2E Test
๐ E2E Test
End To End ํ ์คํธ์ ์ฝ์
์ฌ์ฉ์ ์ค์ฌ์ผ๋ก ์ฒ์๋ถํฐ ๋๊น์ง ์ดํ๋ฆฌ์ผ์ด์ ํ๋ฆ์ ํ ์คํธํ๋ ์ํํธ์จ์ด ํ ์คํธ ๋ฐฉ๋ฒ
์ค์ ์ฌ์ฉ์ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์์์ ํตํฉ ๋ฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๋ ๊ฒ
โ ์ค์ ์ฌ์ฉ์์ ๊ด์ ์ผ๋ก์ ์ ํ๋ฆฌ์ผ์ด์ ๋์ ํ๋ฆ์ ํ ์คํธ
E2E Test Tool
Headless Chrome ํน์ Chromium ๋ฅผ ์ ์ดํ๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Node 6 ์ด์ ์์ ๋์ํ๋ฉฐ, Chrome ํน์ Chromium ์ DevTools ํ๋กํ ์ฝ ์ ํตํด ๊ฐ Chrome ํน์ Chromium ์ API ์ ์ดํ๋ค.
๐ค Puppeteer๋ฅผ ํตํด ํ ์ ์๋ ์์
ํ์ด์ง์ ์คํฌ๋ฆฐ์ท ๋ฐ PDF๋ฅผ ์์ฑํ๋ค.
SPA(Single-Page Application)๋ฅผ ํฌ๋กค๋งํ์ฌ ๋ฏธ๋ฆฌ ๋ ๋๋ง๋ ์ฝํ ์ธ (์ฆ, "SSR"(Server-Side Rendering).์์ ์ ์ถ, UI ํ ์คํธ, ํค๋ณด๋ ์ ๋ ฅ ๋ฑ์ ์๋ํ ํ๋ค.
์ต์ ์๋ํ๋ ํ ์คํธ ํ๊ฒฝ์ ๋ง๋ค์ ์๋ค. ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํฌ๋กฌ์ ์ต์ ๋ฒ์ ์์ ์ง์ ํ ์คํธ๋ฅผ ์คํํ๋ค.
์ฌ์ดํธ์ ํ์๋ผ์ธ ์ถ์ ์ ์บก์ฒํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ง๋จํ ์ ์๋ค.
ํฌ๋กฌ ํ์ฅ ํ๋ฌ๊ทธ์ธ์ ํ ์คํธํ ์ ์๋ค.
ํค๋๋ฆฌ์ค ํ๊ฒฝ์์ Chrome ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ
Chrome ์์ด Chrome์ ์คํํ๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
๐ Headless Browser
๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GUI)๊ฐ ์๋ ์น ๋ธ๋ผ์ฐ์
CLI(Command Line Interface)์์ ๋์ํ๋๊ฑธ ๋ปํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ E2E ํ ์คํธ ์๋ํ ๋๊ตฌ
ํ๋์ API๋ก ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ (ํฌ๋ก๋ฏธ์, ํ์ด์ดํญ์ค, ์นํท)์์ ๋น ๋ฅด๊ณ , ์์ ์ ์ธ ์๋ํ๋ฅผ ์ง์ํ๋ MS์์ ๋ง๋ ์๋ํ ๋๊ตฌ (Edge๋ IE11์ ์ง์ํ์ง ์์)
โ๏ธ ์ค์น ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ
๋ธ๋ผ์ฐ์ ๋ฐ ์๋ฒ ์คํ
Playwright ํจํค์ง ์ค์น
playwright.config.ts
ํ์ผ ์์ฑ
โ headless: !!process.env.CI CI ํ๊ฒฝ์ด ์กํ์์ ๊ฒฝ์ฐ ํค๋๋ฆฌ์ค๋ก ๋์ฐ๊ธฐ(์๋ ๊ฒฝ์ฐ ๊ทธ๋ฅ ๋์)
๐ tests/
.eslintrc.js
ํ์ผ ์์ฑ
๐ tests/
home.spec.ts
ํ์ผ ์์ฑ
.gitignore
ํ์ผ์ ์๋ฌ ์ํฉ์ ์คํฌ๋ฆฐ์ท ๋ฑ์ด ๋ด๊ธฐ๋test-results
๋๋ ํฐ๋ฆฌ ์ถ๊ฐ
๐ค ํ
์คํธ ์คํ
์ธ๊ฐ ์นํ์ ์ธ E2E ํ ์คํ ๋๊ตฌ
Playwright ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ ํ ์ ์๋ค.
โ๏ธ ์ค์น ๋ฐ ์คํ ๋ฐฉ๋ฒ
๐ ์ฐธ๊ณ
Last updated