Files
QuantEngineByItz/tests/e2e/framework-check.spec.ts
T
kjh2064 53db2f63e3 feat(auth): implement option 3 architecture - server InteractiveServer login + client WASM dashboard
- Add Server.AddInteractiveServerComponents() + AddInteractiveServerRenderMode()
- Create Server AuthLayout for login form (MudBlazor)
- Implement LoginSimple.razor with @rendermode InteractiveServer in Server project
- Update App.razor: CascadingAuthenticationState + Router with AppAssembly=Server
- Fix Client MudBlazor Providers in MainLayout + AuthLayout
- Update Playwright tests: use dynamic selectors for MudTextField (auto-generated IDs)
- Build: 0 errors, 0 warnings
- API: /api/auth/login fully operational (200 OK confirmed)
- Playwright E2E test: 1 passed

Architecture:
/login    → Server InteractiveServer (MudBlazor form)
/         → Client WebAssembly (Dashboard)
/api/*    → Server Endpoints

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-05 23:10:54 +09:00

58 lines
2.4 KiB
TypeScript

import { test } from '@playwright/test';
test('_framework 파일 로드 확인', async ({ page }) => {
console.log('\n╔════════════════════════════════════════════════════╗');
console.log('║ _framework 파일 로드 상태 확인 ║');
console.log('╚════════════════════════════════════════════════════╝\n');
const frameworkRequests: any[] = [];
page.on('response', response => {
const url = response.url();
if (url.includes('_framework') || url.includes('blazor')) {
frameworkRequests.push({
url: url.split('?')[0],
status: response.status(),
});
console.log(`[${response.status()}] ${url.split('?')[0]}`);
}
});
console.log('페이지 접근...');
await page.goto('http://localhost:5265/login');
await page.waitForLoadState('networkidle');
await page.waitForTimeout(3000);
console.log('\n╔════════════════════════════════════════════════════╗');
console.log('║ _framework 파일 요약 ║');
console.log('╚════════════════════════════════════════════════════╝\n');
console.log(`총 _framework 요청: ${frameworkRequests.length}\n`);
const byStatus: { [key: number]: string[] } = {};
frameworkRequests.forEach(req => {
if (!byStatus[req.status]) byStatus[req.status] = [];
byStatus[req.status].push(req.url);
});
Object.entries(byStatus).forEach(([status, urls]) => {
console.log(`[${status}] ${urls.length}개`);
urls.forEach(url => {
const filename = url.split('/').pop();
console.log(` ✓ ${filename}`);
});
console.log('');
});
const failedCount = (byStatus[404] || []).length + (byStatus[302] || []).length;
if (failedCount > 0) {
console.log(`❌ ${failedCount}개의 파일이 로드되지 않음!`);
} else if (frameworkRequests.length > 0) {
console.log('✅ 모든 _framework 파일 로드됨');
} else {
console.log('❌ _framework 파일이 로드되지 않음');
}
console.log('\n📍 최종 URL:', page.url());
});