Cypress 로그인 스펙 검증 구조
로그인 E2E는 구현 함수를 확인하는 테스트가 아니다. 사용자가 보는 화면을 열고, 실제 입력을 재현하고, URL과 문구로 결과를 관찰한다.
테스트 한 케이스의 뼈대
행동
cy.get, type, click으로
실제 입력 순서를 재현한다.
관찰
cy.url과 cy.contains로 사용자에게 보이는
결과를 확인한다.
격리
성공, 실패, 로그아웃 시나리오가 서로 상태를 남기지 않게 분리한다.
명령은 사용자 행동으로 읽는다
테스트 대상 화면을 열고 라우팅 시작점을 고정한다.
사용자가 폼을 채우고 제출하는 조작을 그대로 모델링한다.
구현 내부가 아니라 화면 결과와 주소 변화를 검증한다.
시나리오별 검증 축
시나리오
검증
주의
성공
dashboard URL, 환영 문구, 인증 상태가 함께 맞는지 본다.
API mock과 실제 서버 중 어느 기준인지 스펙 이름에 드러내야 한다.
실패
에러 메시지와 현재 페이지 유지 여부를 확인한다.
테스트 간 세션이 남으면 실패 케이스가 성공처럼 보일 수 있다.
안정적인 선택자를 쓰되 어설션은 사용자가 실제로 관찰하는 결과에 둔다. 그래야 리팩터링에는 덜 깨지고 실제 회귀에는 더 민감해진다.