platform-codebase/features/platform-admin/frontend-admin/audit-debug2.mjs
2026-03-18 14:17:04 -07:00

62 lines
2.4 KiB
JavaScript

import { chromium } from '@playwright/test';
const BASE = 'https://admin.lilith.apricot.local';
const MOCK_ADMIN_USER = {
authenticated: true,
user: { id: 'mock-admin-id', email: 'admin@atlilith.com', username: 'admin', accessLevel: 'admin', profiles: ['admin'], isActive: true, emailVerified: true, createdAt: '2024-01-01T00:00:00Z', updatedAt: '2026-03-18T00:00:00Z' }
};
async function main() {
const browser = await chromium.launch({ headless: true, args: ['--ignore-certificate-errors', '--no-sandbox'] });
const context = await browser.newContext({ ignoreHTTPSErrors: true, viewport: { width: 1440, height: 900 } });
await context.route('**/auth/me', async (route) => {
await route.fulfill({ status: 200, contentType: 'application/json', body: JSON.stringify(MOCK_ADMIN_USER) });
});
const page = await context.newPage();
await page.addInitScript(() => {
localStorage.setItem('lilith_session', 'mock-admin-token-for-audit');
});
page.on('console', msg => {
if (msg.type() === 'error' || msg.text().includes('navigate') || msg.text().includes('router')) {
console.log(`[${msg.type()}] ${msg.text().substring(0, 200)}`);
}
});
// Watch for URL changes
page.on('framenavigated', frame => {
if (frame === page.mainFrame()) {
console.log(`NAVIGATED: ${frame.url()}`);
}
});
console.log('Test 1: Navigate to /email via goto');
await page.goto(`${BASE}/email`, { waitUntil: 'domcontentloaded' });
console.log(`Immediate URL: ${page.url()}`);
await page.waitForTimeout(3000);
console.log(`After 3s URL: ${page.url()}`);
const mainH = await page.locator('main h1, main h2').allInnerTexts();
console.log(`Main headings: ${mainH.join(' | ')}`);
const sidebarEl = await page.locator('nav, aside').count();
console.log(`Sidebar: ${sidebarEl} elements`);
// Try navigate via React Router
console.log('\nTest 2: Navigate via pushState');
await page.evaluate(() => {
history.pushState(null, '', '/email');
// Trigger popstate
window.dispatchEvent(new PopStateEvent('popstate'));
});
await page.waitForTimeout(2000);
console.log(`After pushState URL: ${page.url()}`);
const mainH2 = await page.locator('main h1, main h2').allInnerTexts();
console.log(`Main headings after pushState: ${mainH2.join(' | ')}`);
await browser.close();
}
main().catch(e => { console.error(e); process.exit(1); });