매직 링크 / 비밀번호 없는 로그인 테스트하기
비밀번호 없는(매직 링크) 로그인은 사용자에게는 쾌적하지만 테스트에는 번거롭습니다. 입력할 비밀번호가 없고, 이메일로 전달되는 일회성 링크만 있기 때문이죠. 다행히 — 이것은 개발자를 위한 이메일 테스트의 다른 모든 흐름과 같은 받은편지함 읽기 패턴이며, 비밀번호 재설정 테스트와 거의 쌍둥이입니다.
흐름
- 새 일회용 받은편지함을 마련하고 그에 대한 매직 링크를 요청합니다.
- 메일을 읽고 로그인 URL을 뽑아냅니다.
- URL을 열어 인증된 세션에 도달하는지 단언합니다.
예제(Playwright)
const inbox = await createInbox()
await page.goto('/login')
await page.getByLabel('Email').fill(inbox.address)
await page.getByRole('button', { name: 'Send magic link' }).click()
const msg = await waitForMessage(inbox.id, 30000)
// first http(s) URL in the email body
const link = (msg.links && msg.links[0])
|| msg.text.split(/\s+/).find(w => w.indexOf('http') === 0)
await page.goto(link)
await expect(page.getByText('Signed in')).toBeVisible()
createInbox / waitForMessage 헬퍼는 Playwright 튜토리얼에서 가져온 것입니다. Cypress 커스텀 명령도 같은 방식으로 동작합니다.
엣지 케이스
만료된 링크, 일회성 강제(두 번째 클릭은 실패해야 합니다), 그리고 알 수 없는 주소에 대한 링크 요청(사용자 열거를 막으려면 동일하게 응답하세요)이 있습니다. 각각 위 흐름의 작은 변형입니다. 두 번째 요소가 함께 얽혀 있다면 OTP·2FA 테스트와 비교해 보세요.
시작하기
메일박스를 만들고 OpenAPI 문서를 읽어 받은편지함 호출을 스위트에 연결하세요.