This commit is contained in:
@@ -28,7 +28,6 @@ export async function installAdminToken(page: Page, token: string) {
|
||||
await page.addInitScript(value => {
|
||||
localStorage.setItem('accessToken', value);
|
||||
localStorage.setItem('refreshToken', 'ci-test-refresh-token');
|
||||
// Calculate C# Ticks for 1 hour from now: (JS_ms * 10000) + 621355968000000000
|
||||
const expiryMs = Date.now() + 3600 * 1000;
|
||||
const ticks = (expiryMs * 10000) + 621355968000000000;
|
||||
localStorage.setItem('tokenExpiry', ticks.toString());
|
||||
@@ -46,36 +45,18 @@ export async function loginThroughAdminUi(
|
||||
await page.locator('form#admin-login-form').waitFor({ state: 'visible', timeout: 30_000 });
|
||||
await page.locator('#Username').fill(username);
|
||||
await page.locator('#Password').fill(password);
|
||||
await page.click('button[type="submit"]');
|
||||
await page.waitForTimeout(2000);
|
||||
await Promise.all([
|
||||
page.waitForURL(/\/admin\/dashboard$/, { timeout: 30_000 }).catch(() => {}),
|
||||
page.click('button[type="submit"]')
|
||||
]);
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
await page.waitForLoadState('networkidle').catch(() => {});
|
||||
|
||||
if (page.url().includes('/admin/login')) {
|
||||
const token = await page.evaluate(async ({ loginUrl, username, password }) => {
|
||||
const response = await fetch(loginUrl, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ username, password }),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`login failed: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
localStorage.setItem('accessToken', data.accessToken || data.token || '');
|
||||
localStorage.setItem('refreshToken', data.refreshToken || '');
|
||||
const expiryMs = Date.now() + ((data.expiresIn || 3600) * 1000);
|
||||
localStorage.setItem('tokenExpiry', ((expiryMs * 10000) + 621355968000000000).toString());
|
||||
return data.accessToken || data.token || '';
|
||||
}, { loginUrl: `${baseUrl}/api/auth/login`, username, password });
|
||||
|
||||
if (!token) {
|
||||
throw new Error('login token missing');
|
||||
}
|
||||
|
||||
const token = await getAdminToken(page.context().request, baseUrl, username, password);
|
||||
await installAdminToken(page, token);
|
||||
await page.goto(`${baseUrl}/admin/dashboard`);
|
||||
await page.waitForLoadState('domcontentloaded');
|
||||
// WASM 부팅 완료 대기
|
||||
await page.waitForLoadState('networkidle').catch(() => {});
|
||||
}
|
||||
}
|
||||
@@ -90,8 +71,7 @@ export async function navigateInBlazor(page: Page, targetUrl: string) {
|
||||
if (await spinner.count() > 0) {
|
||||
await spinner.first().waitFor({ state: 'hidden', timeout: Wait.medium });
|
||||
}
|
||||
} catch (e) {
|
||||
// Suppress timeout if the spinner was already gone or never showed up
|
||||
} catch {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user