317cd98713
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 7s
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 11s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Build & Deploy to Production (push) Failing after 2m12s
Changes: - Dashboard.razor: Add [AllowAnonymous] to allow page load before auth check - CustomAuthenticationStateProvider: Use absolute URIs for HttpClient calls - Fix JSON parsing: Use ReadAsStringAsync instead of ReadAsAsync - Implement cookie-first auth strategy with localStorage fallback Status: /dashboard still not loading after login Issues to investigate: - window.location.href redirect not working in Playwright - Set-Cookie headers not appearing in responses - JavaScript interop not available during static rendering Next: Direct browser testing vs Playwright environment issue Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
import { chromium } from "@playwright/test";
|
|
|
|
(async () => {
|
|
console.log("════════════════════════════════════════════════════════");
|
|
console.log(" 🔐 COOKIE-BASED AUTHENTICATION TEST");
|
|
console.log("════════════════════════════════════════════════════════\n");
|
|
|
|
const b = await chromium.launch({ headless: false });
|
|
const p = await b.newPage();
|
|
|
|
p.on("console", msg => {
|
|
const text = msg.text();
|
|
if (text.includes("[Login]") || text.includes("[Auth]") || text.includes("[Dashboard]")) {
|
|
console.log(" 📝 " + text);
|
|
}
|
|
});
|
|
|
|
try {
|
|
console.log("1️⃣ 로그인 페이지 로드");
|
|
await p.goto("http://localhost:5265/login.html", { waitUntil: "networkidle" });
|
|
|
|
console.log("2️⃣ 로그인 (admin/admin)");
|
|
await p.fill("input[name='username']", "admin");
|
|
await p.fill("input[name='password']", "admin");
|
|
await p.click("button[type='submit']");
|
|
|
|
console.log("3️⃣ 15초 모니터링\n");
|
|
for (let i = 1; i <= 15; i++) {
|
|
await new Promise(r => setTimeout(r, 1000));
|
|
const url = p.url();
|
|
if (!url.includes("login")) {
|
|
console.log(`\n ✅ [${i}s] 리다이렉트됨: ${url}`);
|
|
break;
|
|
}
|
|
}
|
|
|
|
const finalUrl = p.url();
|
|
console.log(`\n4️⃣ 최종 결과:`);
|
|
console.log(` URL: ${finalUrl}`);
|
|
|
|
if (finalUrl.includes("/dashboard")) {
|
|
console.log(" ✅ 대시보드 도착!");
|
|
|
|
// 콘텐츠 확인
|
|
await new Promise(r => setTimeout(r, 3000));
|
|
const content = await p.content();
|
|
|
|
if (content.includes("관리자 대시보드")) {
|
|
console.log(" ✅ 대시보드 콘텐츠 확인됨!");
|
|
console.log("\n🎉🎉🎉 쿠키 기반 인증 성공!\n");
|
|
}
|
|
} else if (finalUrl.includes("/login")) {
|
|
console.log(" ❌ 다시 로그인으로 돌아옴");
|
|
}
|
|
|
|
await p.screenshot({ path: "./cookie-auth-test.png", fullPage: true });
|
|
|
|
} catch (e) {
|
|
console.error("Error:", e.message);
|
|
}
|
|
|
|
await b.close();
|
|
})();
|