79 lines
3.0 KiB
TypeScript
79 lines
3.0 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
const adminId = process.env.TEST_ADMIN_ID || "admin1gmail";
|
|
const adminPassword = process.env.TEST_ADMIN_PW || "test1234!";
|
|
|
|
test.describe("로그인 페이지 E2E 테스트", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
// 각 테스트 시작 전 로그인 페이지로 이동
|
|
await page.goto("/auth/login");
|
|
});
|
|
|
|
test("1. 로그인 화면 UI 요소가 올바르게 렌더링되는지 확인", async ({ page }) => {
|
|
// 메인 제목 및 하부 제목 검증
|
|
await expect(page.locator("h1")).toContainText("유역하수도통합플랫폼");
|
|
await expect(page.locator("h1 span")).toContainText("하수도플랫폼 통합관리(CMS)시스템");
|
|
|
|
// 입력 필드 및 버튼 검증
|
|
await expect(page.locator("input#id")).toBeVisible();
|
|
await expect(page.locator("input#password")).toBeVisible();
|
|
await expect(page.locator("button.login_btn")).toBeVisible();
|
|
await expect(page.locator("input#checkId")).toBeVisible();
|
|
});
|
|
|
|
test("2. 빈 입력으로 로그인 시도 시 에러 메시지 검증", async ({ page }) => {
|
|
// 값을 입력하지 않고 로그인 클릭
|
|
await page.click("button.login_btn");
|
|
|
|
// 에러 메시지 영역 표시 여부 및 텍스트 검증
|
|
const errorMessage = page.locator(".error_message");
|
|
await expect(errorMessage).toBeVisible();
|
|
await expect(errorMessage).not.toBeEmpty();
|
|
});
|
|
|
|
test("3. 잘못된 비밀번호로 로그인 시도 시 로그인 실패 검증", async ({ page }) => {
|
|
// 잘못된 자격 증명 입력
|
|
await page.fill("input#id", adminId);
|
|
await page.fill("input#password", "wrong_password_123");
|
|
|
|
// 로그인 시도
|
|
await page.click("button.login_btn");
|
|
|
|
// 에러 메시지가 화면에 노출되는지 확인
|
|
const errorMessage = page.locator(".error_message");
|
|
await expect(errorMessage).toBeVisible();
|
|
await expect(errorMessage).toContainText("아이디와 비밀번호가 일치하지 않습니다.");
|
|
|
|
// URL이 로그인 페이지에 그대로 머물러 있는지 확인
|
|
await expect(page).toHaveURL(/\/auth\/login/);
|
|
});
|
|
|
|
test("4. 올바른 계정 정보로 로그인 성공 시 대시보드로 이동", async ({ page }) => {
|
|
// 올바른 자격 증명 입력
|
|
await page.fill("input#id", adminId);
|
|
await page.fill("input#password", adminPassword);
|
|
|
|
// 로그인 시도
|
|
await page.click("button.login_btn");
|
|
|
|
// 대시보드 페이지로 리다이렉트 되는지 확인
|
|
await page.waitForURL("**/dashboard");
|
|
await expect(page).toHaveURL(/.*dashboard/);
|
|
});
|
|
|
|
test("5. 아이디 저장 체크박스 상태 전환 확인", async ({ page }) => {
|
|
const checkbox = page.locator("input#checkId");
|
|
|
|
// 기본적으로 체크되지 않은 상태인지 확인
|
|
await expect(checkbox).not.toBeChecked();
|
|
|
|
// 체크박스 클릭
|
|
await checkbox.check();
|
|
await expect(checkbox).toBeChecked();
|
|
|
|
// 체크박스 해제 클릭
|
|
await checkbox.uncheck();
|
|
await expect(checkbox).not.toBeChecked();
|
|
});
|
|
});
|