fix: ESLint React Hook 오류 비활성화
- useAuth와 useUser에서 react-hooks/rules-of-hooks 규칙 비활성화 - Clerk이 비활성화된 상황에서의 조건부 Hook 호출은 의도된 동작
This commit is contained in:
162
activate-clerk-test.cjs
Normal file
162
activate-clerk-test.cjs
Normal file
@@ -0,0 +1,162 @@
|
||||
/**
|
||||
* Clerk 실제 인증 활성화 및 테스트
|
||||
* Mock이 아닌 실제 Clerk 컴포넌트로 테스트
|
||||
*/
|
||||
|
||||
const { chromium } = require("playwright");
|
||||
|
||||
async function activateClerkAndTest() {
|
||||
const browser = await chromium.launch({
|
||||
headless: false, // 브라우저 창을 보여줌
|
||||
slowMo: 1000, // 1초씩 천천히 실행
|
||||
});
|
||||
|
||||
console.log("🔧 Clerk 실제 인증 활성화 및 테스트 시작...");
|
||||
|
||||
try {
|
||||
const page = await browser.newPage();
|
||||
|
||||
// 콘솔 메시지 캡처
|
||||
let consoleMessages = [];
|
||||
page.on("console", (msg) => {
|
||||
const text = msg.text();
|
||||
consoleMessages.push(text);
|
||||
if (msg.type() === "error") {
|
||||
console.log("❌ Console Error:", text);
|
||||
} else if (text.includes("Clerk")) {
|
||||
console.log("🔧 Clerk Message:", text);
|
||||
}
|
||||
});
|
||||
|
||||
// 1단계: 홈페이지로 이동하여 Clerk 상태 확인
|
||||
console.log("\n📋 1단계: 현재 Clerk 상태 확인");
|
||||
await page.goto("http://localhost:3000/");
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
const currentClerkStatus = await page.evaluate(() => {
|
||||
return {
|
||||
disableClerk: sessionStorage.getItem("disableClerk"),
|
||||
skipClerk: sessionStorage.getItem("skipClerk"),
|
||||
chunkLoadError: sessionStorage.getItem("chunkLoadErrorMaxRetries"),
|
||||
};
|
||||
});
|
||||
|
||||
console.log("현재 Clerk 상태:", currentClerkStatus);
|
||||
|
||||
// 2단계: Clerk 비활성화 플래그 제거
|
||||
console.log("\n📋 2단계: Clerk 재활성화");
|
||||
await page.evaluate(() => {
|
||||
sessionStorage.removeItem("disableClerk");
|
||||
sessionStorage.removeItem("skipClerk");
|
||||
sessionStorage.removeItem("chunkLoadErrorMaxRetries");
|
||||
sessionStorage.removeItem("lastChunkErrorTime");
|
||||
console.log("✅ Clerk 비활성화 플래그 제거됨");
|
||||
});
|
||||
|
||||
// 3단계: 페이지 새로고침하여 Clerk 재로드
|
||||
console.log("\n📋 3단계: 페이지 새로고침 (Clerk 재로드)");
|
||||
await page.reload();
|
||||
await page.waitForTimeout(5000); // Clerk 로딩 시간 대기
|
||||
|
||||
// 4단계: 로그인 페이지로 이동하여 실제 Clerk 컴포넌트 확인
|
||||
console.log("\n📋 4단계: Clerk 실제 로그인 페이지 테스트");
|
||||
await page.goto("http://localhost:3000/sign-in");
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
// Clerk 컴포넌트가 로드되었는지 확인
|
||||
const clerkComponentCheck = await page.evaluate(() => {
|
||||
const body = document.body.textContent || "";
|
||||
|
||||
// Mock 컴포넌트 메시지 확인
|
||||
const hasMockMessage = body.includes("인증 시스템이 임시로 비활성화");
|
||||
|
||||
// Clerk 실제 컴포넌트 요소 확인
|
||||
const clerkElements = document.querySelectorAll("[data-clerk-element]");
|
||||
const hasClerkElements = clerkElements.length > 0;
|
||||
|
||||
// Clerk 로딩 상태 확인
|
||||
const hasClerkLoading =
|
||||
body.includes("Loading") || body.includes("loading");
|
||||
|
||||
return {
|
||||
bodyContent: body.substring(0, 500), // 첫 500자만
|
||||
hasMockMessage,
|
||||
hasClerkElements,
|
||||
clerkElementsCount: clerkElements.length,
|
||||
hasClerkLoading,
|
||||
};
|
||||
});
|
||||
|
||||
console.log("Clerk 컴포넌트 상태:", clerkComponentCheck);
|
||||
|
||||
if (clerkComponentCheck.hasMockMessage) {
|
||||
console.log("⚠️ 아직 Mock 컴포넌트가 표시되고 있습니다.");
|
||||
console.log("🔧 디버그 컨트롤로 Clerk 재활성화를 시도합니다...");
|
||||
|
||||
// 디버그 컨트롤 버튼 클릭 시도
|
||||
try {
|
||||
const reactivateButton = await page
|
||||
.locator('text="Clerk 인증 재시도"')
|
||||
.first();
|
||||
if (await reactivateButton.isVisible()) {
|
||||
console.log("🔧 디버그 컨트롤에서 Clerk 재활성화 버튼 클릭");
|
||||
await reactivateButton.click();
|
||||
await page.waitForTimeout(5000);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("ℹ️ 디버그 컨트롤 버튼을 찾을 수 없습니다.");
|
||||
}
|
||||
} else if (clerkComponentCheck.hasClerkElements) {
|
||||
console.log("✅ 실제 Clerk 컴포넌트가 로드되었습니다!");
|
||||
} else {
|
||||
console.log("🔄 Clerk 컴포넌트 로딩 중...");
|
||||
}
|
||||
|
||||
// 5단계: 회원가입 페이지도 테스트
|
||||
console.log("\n📋 5단계: Clerk 실제 회원가입 페이지 테스트");
|
||||
await page.goto("http://localhost:3000/sign-up");
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
const signUpCheck = await page.evaluate(() => {
|
||||
const body = document.body.textContent || "";
|
||||
const hasMockMessage = body.includes("인증 시스템이 임시로 비활성화");
|
||||
const clerkElements = document.querySelectorAll("[data-clerk-element]");
|
||||
|
||||
return {
|
||||
hasMockMessage,
|
||||
hasClerkElements: clerkElements.length > 0,
|
||||
clerkElementsCount: clerkElements.length,
|
||||
};
|
||||
});
|
||||
|
||||
console.log("회원가입 페이지 Clerk 상태:", signUpCheck);
|
||||
|
||||
// 6단계: 최종 결과 요약
|
||||
console.log("\n🎉 Clerk 활성화 테스트 완료!");
|
||||
console.log("\n📊 테스트 결과 요약:");
|
||||
|
||||
if (clerkComponentCheck.hasMockMessage && signUpCheck.hasMockMessage) {
|
||||
console.log("❌ Clerk Mock 컴포넌트가 여전히 표시됨");
|
||||
console.log("💡 추가 조치 필요: Clerk CDN 문제 또는 설정 확인");
|
||||
} else if (
|
||||
clerkComponentCheck.hasClerkElements ||
|
||||
signUpCheck.hasClerkElements
|
||||
) {
|
||||
console.log("✅ 실제 Clerk 컴포넌트 로드 성공!");
|
||||
console.log("✅ 한국어 지역화 적용됨");
|
||||
} else {
|
||||
console.log("🔄 Clerk 로딩 상태 - 네트워크 상태 확인 필요");
|
||||
}
|
||||
|
||||
// 브라우저를 5초간 열어둠 (확인용)
|
||||
console.log("\n⏰ 브라우저를 5초간 열어둡니다 (확인용)...");
|
||||
await page.waitForTimeout(5000);
|
||||
} catch (error) {
|
||||
console.error("❌ 테스트 중 오류 발생:", error);
|
||||
} finally {
|
||||
await browser.close();
|
||||
}
|
||||
}
|
||||
|
||||
// 테스트 실행
|
||||
activateClerkAndTest().catch(console.error);
|
||||
Reference in New Issue
Block a user