Redesign DM Dashboard (/dm/, /ru/dm/) with purple-gold theme (#534AB7 + #c8a84b): Design System: - Update dm-theme.css with 49 purple-gold tokens (transitions, shadows, hover states) - Create DmTabs.astro with ARIA, keyboard nav, URL hash sync, localStorage persistence - Create DmSidebar.astro for desktop navigation - Redesign DmHeader with gold accent - Update DmButton, DmCard, DmInput primitives - Expand i18n to 47 strings Layout: - Redesign DmLayout with 3-column dashboard grid (sidebar|main|context) - Update /dm/index.astro and /ru/dm/index.astro with named slots Feature Components: - DiceRoller: empty state, ARIA live, color-coded history, storage key fallback - InitiativeTracker: HP editing, active highlighting, storage key fallback - Open5eReference: skeletons, debounce, error retry, gold tabs - NotesPanel: cross-tab sync, copy-to-clipboard, auto-save - AuthPanel: VK/Yandex brand colors, pill buttons Tests: - Add 50 Playwright E2E tests (smoke, dice, initiative, reference, notes, data-migration) Fixes: - Document Open5e client.ts URL bugfix - Add backward-compatible storage key fallback for dice/initiative - Preserve legacy sessionStorage data on load
28 lines
807 B
JavaScript
28 lines
807 B
JavaScript
import { chromium } from "./node_modules/playwright/index.mjs";
|
|
|
|
const browser = await chromium.launch();
|
|
const page = await browser.newPage();
|
|
|
|
page.on('response', async (response) => {
|
|
const url = response.url();
|
|
if (url.includes('open5e.com')) {
|
|
console.log(`URL: ${url}`);
|
|
console.log(`Status: ${response.status()}`);
|
|
try {
|
|
const body = await response.text();
|
|
console.log(`Body preview: ${body.substring(0, 200)}`);
|
|
} catch (e) {
|
|
console.log(`Body error: ${e.message}`);
|
|
}
|
|
console.log('---');
|
|
}
|
|
});
|
|
|
|
await page.goto('http://localhost:4321/dm/#reference');
|
|
await page.waitForTimeout(3000);
|
|
|
|
const errorText = await page.locator('#o5-error-text:visible').textContent().catch(() => 'no error');
|
|
console.log('Error text:', errorText);
|
|
|
|
await browser.close();
|