콘텐츠로 이동

Playwright

playwrightProxy.before(page, testInfo, mode, options?)

섹션 제목: “playwrightProxy.before(page, testInfo, mode, options?)”

각 테스트 시작 시(또는 beforeEach / 페이지 픽스처에서) 호출하세요. 세션의 프록시 모드를 설정하고, url이 제공되면 브라우저 측 요청을 위한 HAR 기록을 설정합니다.

await playwrightProxy.before(page, testInfo, 'replay', {
// url: HAR로 기록/재생할 브라우저 측 요청의 패턴.
//
// 프록시 URL이 아니라 실제 외부 API 도메인을 사용하세요.
// 예시:
// /api\.example\.com/ — 내 API
// /x\.com/ — 모든 x.com 브라우저 트래픽 기록(Chrome 확장 프로그램 테스트)
// /cognito-.*amazonaws\.com/ — 서드파티 인증
url: /api\.example\.com/,
});

url 패턴: 브라우저가 호출하는 실제 외부 도메인과 일치합니다. 기록 모드에서는 요청이 실제 API로 가서 .har 파일에 저장됩니다. 재생 모드에서는 그 파일에서 제공되므로 네트워크가 필요 없습니다. 이 패턴은 프록시(localhost:8100)를 가리키지 않습니다.

예외 — 풀스택 앱: 프론트엔드가 프록시 URL을 API 기본값으로 사용해 브라우저도 localhost:8100을 호출하는 경우에는 /localhost:8100/을 패턴으로 사용하세요.

기록 파일 이름은 테스트 이름에서 파생됩니다("create a user"create-a-user.mock.json / .har).

e2e/global-teardown.ts
import { playwrightProxy } from 'test-proxy-recorder';
export default async function globalTeardown() {
await playwrightProxy.teardown();
}
playwright.config.ts
export default defineConfig({
globalTeardown: './e2e/global-teardown.ts',
});

teardown()은 프록시를 transparent로 재설정하고 HAR 마스킹 과정을 실행합니다. fullyParallel에서 테스트별 afterAll 훅에서 호출하지 마세요. 병렬 재생이 깨지는 이유는 FAQ를 참조하세요.

e2e/recordings/
my-test.mock.json # 서버 측(프록시) — SSR fetch
my-test.har # 클라이언트 측(HAR) — 브라우저 fetch