개념
Playwright가 하는 일
Playwright는 실제 브라우저(Chromium, Firefox, WebKit)를 코드로 제어하는 도구다. 사람이 하는 클릭·입력·스크롤 같은 행동을 코드로 표현하고, 그 결과 화면에 무엇이 나타나는지 검증한다.
AAA 패턴 그대로, 도구만 다르다
모듈 10(레슨 1)에서 배운 AAA(Arrange-Act-Assert) 패턴이 여기서도 그대로 적용된다.
test("로그인에 성공하면 대시보드로 이동한다", async ({ page }) => {
// Arrange — 페이지 접속
await page.goto("https://example.com/login")
// Act — 로그인 정보 입력 후 제출
await page.getByLabel("이메일").fill("user@example.com")
await page.getByLabel("비밀번호").fill("password123")
await page.getByRole("button", { name: "로그인" }).click()
// Assert — 대시보드 화면으로 이동했는지 확인
await expect(page).toHaveURL(/.*dashboard/)
await expect(page.getByText("환영합니다")).toBeVisible()
})page는 브라우저의 한 탭을 가리키는 객체다. goto로 페이지를
열고, getByLabel·getByRole(레슨 3에서 자세히 다룬다)로 요소를
찾아 fill·click으로 행동을 흉내 내고, expect로 결과를
확인한다.
요소를 찾는 방법들
page.getByRole("button", { name: "구매하기" }) // 접근성 역할 기준
page.getByLabel("이메일") // 폼 라벨 기준
page.getByText("환영합니다") // 화면 텍스트 기준
page.getByTestId("submit-button") // 테스트 전용 속성 기준모듈 10(레슨 6)에서 배운 "구현 세부사항이 아니라 사용자 관점으로 테스트한다"는 원칙이 여기서도 핵심이다 — 이 네 가지 방법 중 어느 것을 선택할지가 레슨 3의 주제다.
자동 대기(Auto-waiting)
Playwright는 요소를 클릭하기 전에, 그 요소가 화면에 나타나고 클릭 가능한 상태가 될 때까지 자동으로 기다린다. 이건 레슨 5에서 자세히 다룰 대기 전략의 핵심 개념으로, 옛날 도구들(Selenium 초기 버전 등)에서 흔했던 "요소를 못 찾아서 실패하는" 문제를 상당 부분 줄여준다.
디버깅 도구
Playwright는 테스트가 실패했을 때 무슨 일이 있었는지 확인할 수 있는 도구를 제공한다.
- 스크린샷 — 실패 시점의 화면을 자동으로 저장
- 트레이스(Trace) — 테스트 실행 전체 과정을 녹화해, 각 단계에서 화면이 어땠는지 재생해볼 수 있음
- 비디오 — 테스트 실행 전체를 영상으로 기록
이 도구들은 모듈 6(레슨 2)에서 배운 "증거자료"를 자동으로 만들어 주는 셈이다 — 자동화 테스트가 실패했을 때, 사람이 직접 재현하지 않아도 무엇이 잘못됐는지 확인할 수 있다.
실무에서 왜 필요한가
Playwright로 작성된 테스트 코드를 읽을 줄 알면, 개발자가 "이 흐름은 자동화로 커버돼 있어요"라고 할 때 실제로 어떤 요소를, 어떤 방식으로 찾아서 검증하는지 확인할 수 있다. 트레이스나 스크린샷을 활용하면, CI에서 자동화 테스트가 실패했을 때 QA가 직접 재현하지 않고도 1차 원인 파악을 할 수 있어 왕복 시간이 크게 줄어든다.