|
| 1 | +--- |
| 2 | +title: "Playwright 시작하기" |
| 3 | +description: "Playwright 탐구기록" |
| 4 | +thumbnail: "./thumbnail.png" |
| 5 | +category: "dev" |
| 6 | +tags: ["Playwright", "E2E", "Test"] |
| 7 | +--- |
| 8 | + |
| 9 | +안녕하세요. |
| 10 | + |
| 11 | +프론트엔드하면서 부끄럽게도 테스트코드 작성이라는걸 말만 들어봤지 해본적이 없네요. |
| 12 | + |
| 13 | +부끄럽네요 ㅋ 이 포스팅은 아마 제가 Playwright 를 탐구하는 글이 될것같네요 ㅎ |
| 14 | + |
| 15 | +# Playwright 란? |
| 16 | + |
| 17 | +**Playwright** 는 오픈소스 프레임워크로, E2E 테스트를 위한 도구입니다. |
| 18 | + |
| 19 | +다양한 언어를 지원하구요. (TypeScript, JavaScript, Python, .NET, Java) |
| 20 | + |
| 21 | +모바일 웹 테스트도 된다고합니당. 이외에 여러가지 특징들이 있지만, 우선 저는 알못이기때문에 그냥 기초적인 정도만 서술해보려고합니다. |
| 22 | + |
| 23 | +저는 일단 프로젝트를 새로 만들어서 해보기로했어요. |
| 24 | + |
| 25 | +# 프로젝트 생성 및 Playwright 설치 |
| 26 | + |
| 27 | +> 저는 pnpm을 주로 사용하고 있어서 패키지를 설치할 때 pnpm을 사용할거에요! |
| 28 | +
|
| 29 | +```bash |
| 30 | +pnpm create vite |
| 31 | +``` |
| 32 | + |
| 33 | +일단 vite react 프로젝트를 생성해용. |
| 34 | + |
| 35 | +```bash |
| 36 | +Project Name : react-playwright |
| 37 | +Select a framework : React |
| 38 | +Select a variant : TypeScript |
| 39 | +``` |
| 40 | + |
| 41 | +저는 위와같이 선택하고 프로젝트를 만들었습니당. |
| 42 | + |
| 43 | +이제 playwright도 설치해염. |
| 44 | + |
| 45 | +리액트 프로젝트 디렉토리로 이동 후 다음 명령어 입력 |
| 46 | + |
| 47 | +```bash |
| 48 | +pnpm create playwright |
| 49 | +``` |
| 50 | + |
| 51 | +위 명령어를 입력하면 나오는 프롬프트에서는 다음과 같이 선택했습니다. |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | +조금 기다리면 설치가 끝나염. |
| 56 | + |
| 57 | +설치가 끝나면 다음과 같은 파일들이 생기는데여. |
| 58 | + |
| 59 | +``` |
| 60 | +playwright.config.ts # playwright 설정파일 |
| 61 | +package.json |
| 62 | +package-lock.json # Or yarn.lock / pnpm-lock.yaml |
| 63 | +tests/ |
| 64 | + example.spec.ts # 간단한 예제 테스트 파일 |
| 65 | +tests-examples/ |
| 66 | + demo-todo-app.spec.ts # 더 복잡한 예제 테스트 파일 |
| 67 | +``` |
| 68 | + |
| 69 | +간단한 예제 테스트 파일을 한번 살펴보겠습니다. |
| 70 | + |
| 71 | +```ts |
| 72 | +import { test, expect } from "@playwright/test" |
| 73 | + |
| 74 | +test("has title", async ({ page }) => { |
| 75 | + await page.goto("https://playwright.dev/") |
| 76 | + |
| 77 | + // Expect a title "to contain" a substring. |
| 78 | + await expect(page).toHaveTitle(/Playwright/) |
| 79 | +}) |
| 80 | + |
| 81 | +test("get started link", async ({ page }) => { |
| 82 | + await page.goto("https://playwright.dev/") |
| 83 | + |
| 84 | + // Click the get started link. |
| 85 | + await page.getByRole("link", { name: "Get started" }).click() |
| 86 | + |
| 87 | + // Expects page to have a heading with the name of Installation. |
| 88 | + await expect( |
| 89 | + page.getByRole("heading", { name: "Installation" }) |
| 90 | + ).toBeVisible() |
| 91 | +}) |
| 92 | +``` |
| 93 | + |
| 94 | +`test` 와 `expect` 함수를 import 해서 사용하고있네요. |
| 95 | + |
| 96 | +아마도 `test` 함수는 테스트 케이스를 정의하고, `expect` 함수는 테스트 결과를 확인하는 함수일 것 같네요. |
| 97 | + |
| 98 | +우선 테스트를 실행하는 명령어부터 실행해보겠습니다. |
| 99 | + |
| 100 | +# 테스트 예제 실행 |
| 101 | + |
| 102 | +```bash |
| 103 | +pnpm exec playwright test |
| 104 | +``` |
| 105 | + |
| 106 | +저는 다음과 같은 결과가 나왔습니다. |
| 107 | + |
| 108 | + |
| 109 | + |
| 110 | +이미지에 적혀있는 `pnpm exec playwright show-report` 명령어를 실행해서 리포트를 확인해볼게요. |
| 111 | + |
| 112 | +# 테스트 REPORT 확인 |
| 113 | + |
| 114 | +```bash |
| 115 | +pnpm exec playwright show-report |
| 116 | +``` |
| 117 | + |
| 118 | + |
| 119 | + |
| 120 | +오.. 실행한 테스트에 대한 자세한 내용을 보여주는 웹 브라우저가 나타납니다. |
| 121 | + |
| 122 | +webkit, firefox, chromium 세 개 브라우저 환경에서 테스트를 실행했네요. |
| 123 | + |
| 124 | +목록에서 하나를 클릭해서 상세하게 내용을 확인해볼게요. |
| 125 | + |
| 126 | + |
| 127 | + |
| 128 | +테스트 절차에 대해서 자세하게 내용을 확인할 수 있습니당. |
| 129 | + |
| 130 | +# UI 모드 |
| 131 | + |
| 132 | +공식문서를 살펴보니 테스트 결과를 웹 브라우저 UI로 확인할 수 있는 모드가 있습니다? |
| 133 | + |
| 134 | +```bash |
| 135 | +pnpm exec playwright test --ui |
| 136 | +``` |
| 137 | + |
| 138 | +위 명령어를 통해 ui모드로 테스트를 할 수 있어요. |
| 139 | + |
| 140 | +ui 모드로 테스트를 실행하면, 브라우저가 하나 실행되고 다음과 같은 이미지로 나타납니당. |
| 141 | + |
| 142 | + |
| 143 | + |
| 144 | +직접 브라우저를 보면서, 테스트 코드가 어떻게 진행되는지 확인할 수 있어서 좋은것같네여. |
| 145 | + |
| 146 | +<hr /> |
| 147 | + |
| 148 | +# 마무리하며 |
| 149 | + |
| 150 | +요번 글에서는 대충 프로젝트 만들고 Playwright 깔고 playwright로 어떻게 테스트를 진행하는지 정도 확인해봤구여. |
| 151 | + |
| 152 | +앞으로도 공식문서를 따라가면서 공부하면서 기록할것같네요. |
| 153 | + |
| 154 | +감사합니당. |
0 commit comments