Files
IGP-Fan-Reference/Playwright/debug_initial_state.js
T
2026-05-31 14:33:58 -04:00

52 lines
2.1 KiB
JavaScript

const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
page.on('console', msg => {
if (msg.type() === 'error' || msg.type() === 'warning')
console.log(msg.type().toUpperCase() + ':', msg.text().substring(0, 300));
});
page.on('pageerror', err => console.log('PAGE_ERR:', err.message));
await page.goto('http://localhost:5111/build-calculator', { timeout: 30000, waitUntil: 'load' });
console.log('Page load event fired');
// Read button text immediately
let buttons = page.locator('.keyContainer > div > div');
let count = await buttons.count();
console.log('Button count:', count);
let qBtn = buttons.filter({ hasText: /^Q/ }).first();
console.log('Immediate Q button text:', JSON.stringify(await qBtn.textContent()));
// Wait for Blazor to finish initializing - look for .blazor-error-boundary or just wait
// Actually, let's poll for the button text changing from what it is now
for (let i = 0; i < 15; i++) {
await page.waitForTimeout(1000);
const text = (await buttons.nth(0).textContent() || '').trim();
// Check all 19 buttons for Q and F keys
const allTexts = [];
for (let j = 0; j < count; j++) {
const t = (await buttons.nth(j).textContent() || '').trim();
if (t.toUpperCase().startsWith('Q') || t.toUpperCase().startsWith('F') || t.toUpperCase().startsWith('W') || t.toUpperCase().startsWith('E')) {
allTexts.push(` B${j}: "${t.substring(0,30)}"`);
}
}
console.log(`After ${i+1}s:`);
allTexts.forEach(t => console.log(t));
}
// Now check what the filter is currently showing
const selects = page.locator('select');
console.log('\nSelect values:');
for (let s = 0; s < await selects.count(); s++) {
const val = await selects.nth(s).inputValue();
const opts = await selects.nth(s).locator('option').allTextContents();
const selectedIdx = await selects.nth(s).evaluate(el => el.selectedIndex);
console.log(` Select ${s}: value=${val}, selectedIndex=${selectedIdx}, options=${JSON.stringify(opts.map(o=>o.trim()))}`);
}
await browser.close();
})();