E2E 코딩 컨벤션 가이드
해당 문서는 E2E 코딩 컨벤션을 다루는 문서입니다.
[폴더 구조]
폴더/파일
설명
test
테스트에 필요한 폴더 및 파일을 추가합니다.
|> issues
제너레이터로 만든 테스트 코드를 추가합니다.
|> Lgcc-520.ts
지라 이슈에 해당 하는 테스트 코드를 추가 합니다.
|> scenarios
QA팀으로부터 전달받은 사용자 시나리오를 작성한 파일을 추가합니다.
|> Life-main.spec.ts
- .spec.ts 형식으로 파일명을 작성합니다.
|> pages
시나리오에서 필요한 페이지들이 클래스 파일로 추가합니다.
|> LoginPage.ts
|> DashboardPage.ts
- Page.ts 형식으로 파일명을 작성합니다.
|> data.ts
상수 데이터값들을 추가합니다.
[페이지 폴더의 클래스 파일 구조]
필드 :해당 페이지에서 사용하는 요소를 정의합니다.
생성자 :필드에 값을 주입합니다.
메소드 :해당 페이지에서 사용하는 행동을 정리합니다.
import { Locator, Page } from '@playwright/test'; export class DashboardPage { private readonly page: Page; private readonly addProjectBtn: Locator; constructor(page: Page) { this.page = page; this.addProjectBtn = page.locator(`button[data-id="project_add_button"]`); } async clickAddProjectButton() { await this.addProjectBtn.click(); } async modifyProject(projectName: string) { const row = this.page.locator(`//tr[.//span[contains(text(), "${projectName}")]]`); const modifyBtn = row.locator(`//button[.//span[contains(text(), "수정")]]`); await modifyBtn.click(); } }
[시나리오 작성]
페이지매니저 클래스 인스턴스 생성
필요한 페이지 클래스 인스턴스를 생성
필요한 행동 메소드 호출
/** * SuperAdmin 권한 계정으로 로그인 * 1.(주)애플 의 인사 관리 시스템 개선 과제에 제안하기로 했다. * 2. 그래서 HRMS에 프로젝트를 생성한다. * 3. PM팀에 문의 하여 아래와 같은 정보를 얻는다. * - PM : 이정기hrms_pm기간 : 2024년 3월 1일 ~ 2024년 3월 14일 * 4. 투입인력은 아직 모른다 하여 PM 만 입력 하고, PM 에게 프로젝트 생성 했다고 공유한다. */ test('01 - 어드민 로그인 후 HRMS에 프로젝트 생성', async ({ page }) => { const pageManager = new PageManager(page); const loginPage = pageManager.getLoginPage(); await loginPage.go(); await loginPage.authenticate(LOGIN_EMAIL.SUPER_ADMIN, LOGIN_PASSWORD); const dashboardPage = pageManager.getDashboardPage(); await dashboardPage.clickAddProjectButton(); const projectAddPage = pageManager.getProjectAddPage(); await projectAddPage.fillProjectInfo(PROJECT_INFO); await projectAddPage.submit(); });