import { test, expect } from '@playwright/test'
import { login, STUDENT } from './helpers.js'

// 인증 경계 — "로그인 전/후"가 올바로 갈리는지 실제 브라우저로 확인.

test('비로그인으로 보호 페이지 접근 → 로그인 화면으로 보낸다', async ({ page }) => {
  await page.goto('/')
  await expect(page).toHaveURL(/\/login/)
  await expect(page.locator('#username')).toBeVisible()
})

test('잘못된 비밀번호는 로그인 실패 안내를 보여준다', async ({ page }) => {
  await page.goto('/login')
  await page.locator('#username').fill(STUDENT.username)
  await page.locator('#password').fill('wrong-password-xyz')
  await page.getByRole('button', { name: '로그인' }).click()
  await expect(page.getByText(/맞지 않아요|올바르지|너무 많/)).toBeVisible()
  // 실패했으니 여전히 로그인 화면에 남아 있어야 한다.
  await expect(page).toHaveURL(/\/login/)
})

test('학생 로그인 → 대시보드 진입', async ({ page }) => {
  await login(page, STUDENT)
  await expect(page).toHaveURL(/\/$/)
  // 로그인 화면 요소(#username)는 더 이상 없어야 한다.
  await expect(page.locator('#username')).toHaveCount(0)
})
