52 lines
2.1 KiB
JavaScript
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();
|
|
})();
|