4. Playwright
1. E2E(End to End) Test
What is End-to-End (E2E) Testing?
End To End ํ ์คํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฆ์ ์ฒ์๋ถํฐ ๋๊น์ง ํ ์คํธํ๋ ๊ฒ
์์ฉ ํ๋ก๊ทธ๋จ ํ๋ฆ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฒ์๋ถํฐ ๋๊น์ง ์ ์ฒด ์ํํธ์จ์ด ์ ํ์ ํ ์คํธํ๋ ๋ฐฉ๋ฒ ์ ํ์ ์์คํ ์ข ์์ฑ์ ์ ์ํ๊ณ ํตํฉ๋ ๋ชจ๋ ๋ถ๋ถ์ด ์์๋๋ก ํจ๊ป ์๋ํ๋๋ก ํจ ์ฃผ์ ๋ชฉ์ ์ ์ค์ ์ฌ์ฉ์ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ณ , ํตํฉ ๋ฐ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ํด ํ ์คํธ ์ค์ธ ์์คํ ๊ณผ ํด๋น ๊ตฌ์ฑ ์์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ฌ ์ต์ข ์ฌ์ฉ์์ ๊ฒฝํ์์ ํ ์คํธํ๋ ๊ฒ
์ฅ์
ํ ์คํธ ๋ฒ์ ํ์ฅ
์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํ์ฑ์ ๋ณด์ฅ
์ถ์ ๊ธฐ๊ฐ ๋จ์ถ
๋น์ฉ ์ ๊ฐ
๋ฒ๊ทธ ๊ฐ์ง
E2E ํ
์คํธ ๋๊ตฌ
Headless Browser
PhantomJS : ํฌ๋กฌ์ ํค๋๋ฆฌ์ค ๋ธ๋ผ์ฐ์ ๋ก ํ ์คํธ (Headless Chrome์ด ๋์์ ๊ฐ๋ฐ ์ค๋จ)
Puppeteer : Headless Chrome์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ๊ธ์์ ๋ง๋ ๋๊ตฌ
Playwright : MS์์ ๋ง๋ ํ ์คํธ ์ง์ ๋๊ตฌ, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์
CodeceptJS : ๋จ์ํ๋ฉด์ ์ฝ๊ธฐ ํธํจ
2. Playwright
Playwright playwright github Playwright Configuration Ashal์ Playwright
๐ก ์น ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ E2E ํ ์คํธ ์๋ํ ๋๊ตฌ API ์ ๊ณต , ํ ์คํธ ๋ฌ๋๋ ์ง์ Headless Chrome์ ๊ธฐ๋ฐ์ผ๋ก ํ Puppeteer๋ฅผ ๊ณ์นํ๋ฉด์, ๋ ๋ง์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์
API๋ฅผ ์กฐ์ํด์ ์๋ํํ๊ฑฐ๋, ํฌ๋กค๋งํ ๋๋ ์ฌ์ฉ
๐จ ์ฃผ์์
์ง์ง ์๋ํ๋ ํ ์คํธ๋ฅผ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก๋์ ์์ ์ฌ์ฉํ๋ฉด ์ ๋จ ํ ์คํธ ํ๊ฒฝ์ ๊ตฌ์ถํด๋๊ณ ๋๋ ค์ผ ํจ
์ฌ์ฉ ๋ฐฉ๋ฒ
Playwright ํจํค์ง ์ค์น
์๋ฒ ๋์ฐ๊ธฐ
playwright.config.ts
ํ์ผ ์์ฑ
playwright.config.ts
ํ์ผ ์์ฑheadless: !!process.env.CI
: CI ํ๊ฒฝ์ด ์กํ์์ ๊ฒฝ์ฐ ํค๋๋ฆฌ์ค ๋ก ๋์ฐ๊ธฐ(์๋ ๊ฒฝ์ฐ ๊ทธ๋ฅ ๋์)์คํ ๋ฐฉ๋ฒ
tests/.eslintrc.js
ํ์ผ ์์ฑ
tests/.eslintrc.js
ํ์ผ ์์ฑtests/home.spec.ts
ํ์ผ ์์ฑ
tests/home.spec.ts
ํ์ผ ์์ฑ๐ก ๊ฐ๋ฅํ ๋จ์ํ๊ฒ ์์ฑํ๋ฉด ์ข์
ํ
์คํธ ์คํ
.gitignore
ํ์ผ์ ์๋ฌ ์ํฉ์ ์คํฌ๋ฆฐ์ท ๋ฑ์ด ๋ด๊ธฐ๋ test-results
๋๋ ํ ๋ฆฌ ์ถ๊ฐ
3. Headless Chrome
Headless Chrome headless browser
Headless Browser
๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GUI)๊ฐ ์๋ ์น ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋จ์ง ์๊ณ ๋ค์์ ์คํ๋๋ ๊ฒ โ ์๋๊ฐ ๋น ๋ฆ ํค๋๋ฆฌ์ค ๋ธ๋ผ์ฐ์ ๋ ๋์ ๋ณด์ด๋ UI ์ ธ์ด ํ์ํ์ง ์์ ์๋ํ๋ ํ ์คํธ ๋ฐ ์๋ฒ ํ๊ฒฝ์ ์ํ ๋๊ตฌ
๊ตฌ๊ธ ํฌ๋กฌ ๋ฒ์ 59๋ถํฐ ๋ธ๋ผ์ฐ์ ์ ์๊ฒฉ ์ ์ด๋ฅผ ์ํ ๋ค์ดํฐ๋ธ ์ง์์ด ์ ๊ณต, Mac ๋ฐ Linux์์ ์ฌ์ฉ ๊ฐ๋ฅ
์ฌ์ฉ ์์
์ค์ ์น ํ์ด์ง์ ๋ํด ํ ์คํธ๋ฅผ ์คํ
๋ธ๋ผ์ฐ์ ๊ฐ URL์ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ๊ฒ์ฌ
ํ ์คํธ๋ฅผ ์คํ์ํค๊ณ ๋ค๋ฅธ ์์ ์ ํ ๋ (ํค๋๋ฆฌ์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ํฌ์ปค์ค๋ฅผ ๊ฐ์ ธ๊ฐ์ ๋ค๋ฅธ ์์ ์ ํ๊ธฐ ๋ถํธํจ)
4. Puppeteer
Puppeteer ๊ณต์ ๋ฌธ์ Overview of Puppeteer Getting Started with Headless Chrome
ํฌ๋กฌ ์๋ํ๋ฅผ ์ํ Node.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ DevTools ํ๋กํ ์ฝ์ ํตํด ํค๋๋ฆฌ์ค Chrome ๋๋ Chromium์ ์ ์ดํ๊ธฐ ์ํ ๊ณ ๊ธ API๋ฅผ ์ ๊ณตํ๋ ๋ ธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํค๋๋ฆฌ์ค ๋ชจ๋์์ ์คํ๋์ง๋ง, ์ ์ฒด(non-headless) Chrome/Chromium์์ ์คํ๋๋๋ก ๊ตฌ์ฑํ ์๋ ์์
6. CodeceptJS
CodeceptJS CodeceptJS 3 ์์ํ๊ธฐ CodeceptJS ์ฌ์ฉ
์ธ๊ฐ ์นํ์ ์ธ E2E ํ ์คํ ๋๊ตฌ ๋จ์ํ๋ฉด์๋ ์ฝ๊ธฐ ํธํจ โ ํ์ ๊ณผ ์ํต์ด ํธ๋ฆฌ Playwright์ ๊ธฐ๋ณธ์ผ๋ก ์ธ ์ ์์
๐ฅ CodeceptJS vs Playwright
๊ฐ๋จํ ์๋น์ค๋ CodeceptJS, ์ข ๋ ๋ณต์กํ๊ณ ์์ธํ ๋ด์ฉ์ ์ฒ๋ฆฌํ๋ ค๋ฉด Playwright์ ์ฌ์ฉ
์ฌ์ฉ ๋ฐฉ๋ฒ
ํจํค์ง ์ค์น
package.json ํ์ผ์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋จ์ ์ฃผ์
ํ๋ก์ ํธ ์ธํ
์๋๋ฆฌ์ค ์์ฑ
์๋๋ฆฌ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํ ์ ์์
์คํํ๊ธฐ
Last updated