import { test, expect } from '@playwright/test'; test('정적 login.html 검증', async ({ page }) => { console.log('\nπŸ§ͺ /login.html 접속\n'); const response = await page.goto('http://localhost:5265/login.html', { waitUntil: 'load' }); console.log(`πŸ“ URL: ${page.url()}`); console.log(`πŸ“Š μƒνƒœ: ${response?.status()}`); console.log(`πŸ“„ 제λͺ©: ${await page.title()}`); // 둜그인 폼 확인 const form = await page.locator('#loginForm').isVisible(); console.log(`πŸ“‹ 둜그인 폼: ${form ? 'βœ…' : '❌'}`); // μž…λ ₯ ν•„λ“œ 확인 const username = await page.locator('#username').isVisible(); const password = await page.locator('#password').isVisible(); console.log(`πŸ” μž…λ ₯ ν•„λ“œ (아이디/λΉ„λ°€λ²ˆν˜Έ): ${username && password ? 'βœ…' : '❌'}`); // 제좜 λ²„νŠΌ 확인 const button = await page.locator('#loginBtn').isVisible(); console.log(`πŸ”˜ 제좜 λ²„νŠΌ: ${button ? 'βœ…' : '❌'}`); // ν…μŠ€νŠΈ 확인 const text = await page.textContent('body'); console.log(`πŸ“ "QuantEngine": ${text?.includes('QuantEngine') ? 'βœ…' : '❌'}`); console.log(`πŸ“ "둜그인": ${text?.includes('둜그인') ? 'βœ…' : '❌'}`); // 둜그인 ν…ŒμŠ€νŠΈ console.log('\nπŸ” 둜그인 μ‹œλ„...\n'); await page.fill('#username', 'admin'); await page.fill('#password', 'admin'); await page.click('#loginBtn'); // 응닡 λŒ€κΈ° await page.waitForTimeout(3000); console.log(`πŸ“ μ΅œμ’… URL: ${page.url()}`); console.log(`πŸ“„ μ΅œμ’… 제λͺ©: ${await page.title()}`); // ν™ˆνŽ˜μ΄μ§€ 확인 if (page.url().includes('/') && !page.url().includes('login')) { console.log('βœ… 둜그인 성곡! ν™ˆνŽ˜μ΄μ§€λ‘œ 이동'); } // μŠ€ν¬λ¦°μƒ· await page.screenshot({ path: 'test-results/login-html-actual.png', fullPage: true }); console.log('\nπŸ“Έ μŠ€ν¬λ¦°μƒ·: test-results/login-html-actual.png\n'); });