polyglot-alpha / ui /scripts /fact-check-wait.mjs
licaomeng
deploy: main@8970ffb → HF Spaces (2026-05-27T05:19Z)
88d2f2a
import { chromium } from 'playwright';
import * as fs from 'fs';
const BASE_URL = 'http://localhost:3001';
const SCREENSHOTS_DIR = '/Users/messili/codebase/polyglot-alpha/ui/screenshots/factcheck';
async function main() {
const browser = await chromium.launch();
const results = [];
try {
console.log('Checking events list after waiting...');
const eventsPage = await browser.newPage({ viewport: { width: 1920, height: 1080 } });
await eventsPage.goto(`${BASE_URL}/events`);
await eventsPage.waitForLoadState('networkidle');
// Wait for event cards to appear
const cardSelector = '[class*="card"], [role="article"], div[class*="event"]';
try {
await eventsPage.locator(cardSelector).first().waitFor({ timeout: 3000 });
} catch {}
const allText = await eventsPage.locator('body').textContent();
const eventLinks = await eventsPage.locator('a').all();
console.log(`Page has ${eventLinks.length} links`);
let realEventUrl = null;
for (let link of eventLinks) {
const href = await link.getAttribute('href').catch(() => '');
if (href && href.startsWith('/events/') && href !== '/events' && !href.includes('history') && href.length > 10) {
realEventUrl = href;
console.log(`Found event: ${href}`);
break;
}
}
if (realEventUrl) {
const fullUrl = BASE_URL + realEventUrl;
console.log(`Opening event: ${fullUrl}`);
const eventPage = await browser.newPage({ viewport: { width: 1920, height: 1080 } });
await eventPage.goto(fullUrl);
await eventPage.waitForLoadState('networkidle');
await eventPage.waitForTimeout(1000);
const bodyText = await eventPage.locator('body').textContent();
const bodyHTML = await eventPage.content();
// Count table rows (judges)
const tables = await eventPage.locator('table').all();
let maxRows = 0;
for (let tbl of tables) {
const rows = await tbl.locator('tr').all();
maxRows = Math.max(maxRows, rows.length);
}
results.push({ claim: 16, status: maxRows >= 11 ? 'TRUE' : maxRows > 0 ? 'PARTIAL' : 'FALSE', evidence: `${maxRows} rows` });
results.push({ claim: 17, status: bodyText.includes('0xsim') ? 'PARTIAL' : 'FALSE', evidence: bodyText.includes('0xsim') ? 'Found' : 'Not found' });
let hasDialog = false;
const allBtns = await eventPage.locator('button').all();
for (let btn of allBtns) {
const text = await btn.textContent().catch(() => '');
if (text && text.toLowerCase().includes('dossier')) {
hasDialog = true;
break;
}
}
results.push({ claim: 18, status: hasDialog ? 'TRUE' : 'FALSE', evidence: hasDialog ? 'Button found' : 'Button not found' });
results.push({ claim: 19, status: bodyText.includes('ipfs://sim') ? 'PARTIAL' : 'FALSE', evidence: bodyText.includes('ipfs://sim') ? 'Found' : 'Not found' });
let hasAPI = false;
for (let btn of allBtns) {
const text = await btn.textContent().catch(() => '');
if (text && text.toLowerCase().includes('api')) {
hasAPI = true;
break;
}
}
results.push({ claim: 20, status: hasAPI ? 'TRUE' : 'FALSE', evidence: hasAPI ? 'Button found' : 'Button not found' });
results.push({ claim: 21, status: bodyText.includes('fee') ? 'PARTIAL' : 'FALSE', evidence: bodyText.includes('fee') ? 'Found' : 'Not found' });
results.push({ claim: 22, status: bodyText.includes('debate') ? 'PARTIAL' : 'FALSE', evidence: bodyText.includes('debate') ? 'Found' : 'Not found' });
const eventId = realEventUrl.split('/').pop();
await eventPage.screenshot({ path: `${SCREENSHOTS_DIR}/event-${eventId}.png` });
console.log(`Saved: event-${eventId}.png`);
await eventPage.close();
} else {
console.log('No valid event found');
[16, 17, 18, 19, 20, 21, 22].forEach(n => {
results.push({ claim: n, status: 'FALSE', evidence: 'No events available' });
});
}
await eventsPage.close();
} catch (error) {
console.error('Error:', error.message);
} finally {
await browser.close();
}
console.log('\nEvent Claims:');
results.forEach(r => console.log(`${r.claim}. ${r.status} - ${r.evidence}`));
fs.writeFileSync(`${SCREENSHOTS_DIR}/event-details.json`, JSON.stringify(results, null, 2));
}
main().catch(console.error);