test(guide): Add/update E2E diagnostic tests and adjust test environment configuration for the guide module

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-04-01 06:47:24 -07:00
parent f58ee4d2b1
commit f2656f1445
2 changed files with 28 additions and 29 deletions

View file

@ -2,42 +2,41 @@ import { test, expect } from '@playwright/test'
const BASE_URL = '/climate/simulation?noGui=true&skip=welcome&totalTurns=50&buffer=0'
test('diagnose simulation - find 404s and worker failures', async ({ page }) => {
const messages: string[] = []
const errors: string[] = []
const notFoundResources: string[] = []
test('diagnose - timing of events', async ({ page }) => {
const t0 = Date.now()
const log = (label: string): void => console.log(`[+${((Date.now() - t0) / 1000).toFixed(1)}s] ${label}`)
page.on('console', msg => {
const text = msg.text()
if (msg.type() === 'error' || text.includes('404') || text.includes('failed') || text.includes('error')) {
messages.push(`[page:${msg.type()}] ${text}`)
}
})
page.on('pageerror', err => errors.push(`[pageerror] ${err.message}`))
page.on('response', res => {
if (res.status() === 404 || res.status() >= 400) {
notFoundResources.push(`${res.status()} ${res.url()}`)
}
})
page.on('requestfailed', req => {
notFoundResources.push(`FAILED: ${req.url()}${req.failure()?.errorText}`)
if (msg.type() === 'error') log(`ERROR: ${msg.text()}`)
})
page.on('pageerror', err => log(`PAGE_ERROR: ${err.message}`))
page.on('worker', (worker) => {
messages.push(`[WORKER CREATED] ${worker.url()}`)
log(`WORKER CREATED: ${worker.url().slice(-40)}`)
})
page.on('response', res => {
if (res.url().includes('sim-cache')) {
log(`SIM-CACHE RESPONSE: ${res.status()} ${res.url().slice(-50)}`)
}
})
await page.goto(BASE_URL)
await page.waitForTimeout(15000)
log('page loaded')
console.log('=== ERROR/RELEVANT CONSOLE MESSAGES ===')
for (const m of messages) console.log(m)
console.log('=== PAGE ERRORS ===')
for (const e of errors) console.log(e)
console.log('=== 404 / FAILED RESOURCES ===')
for (const r of notFoundResources) console.log(r)
// Poll for canvas every 5 seconds, up to 180 seconds
for (let i = 0; i < 36; i++) {
await page.waitForTimeout(5000)
const canvasVisible = await page.locator('canvas').first().isVisible().catch(() => false)
const loadingSteps = await page.locator('.sc-bzBgWJ').count().catch(() => 0)
const checkmarks = await page.locator(':text-is("✓")').count().catch(() => 0)
const active = await page.locator(':text-is("◉")').count().catch(() => 0)
log(`poll ${i + 1}: canvas=${canvasVisible}, steps=${loadingSteps}, ✓=${checkmarks}, ◉=${active}`)
if (canvasVisible) {
log('CANVAS VISIBLE — SIMULATION COMPLETE')
break
}
}
expect(true).toBe(true)
})
}, { timeout: 210_000 })

View file

@ -1,6 +1,6 @@
{
"status": "failed",
"failedTests": [
"620c61f0a0b21e7686ea-28292657752f1295456f"
"dc16e76570d2ea8d5f4a-0a10752f0734d5e9ffbc"
]
}