Files
frontend/apps/cs/tests/login.spec.ts
T

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();
});
});