import { chromium } from 'playwright'; import assert from 'node:assert/strict'; import fs from 'node:fs/promises'; const context = await chromium.launchPersistentContext('../validation/agent-browser-profile/dev', { executablePath: '/usr/bin/chromium', headless: true, args: ['--enable-unsafe-webgpu', '--use-angle=vulkan', '--enable-features=Vulkan', '--disable-vulkan-surface'], }); try { const page = await context.newPage(); page.on('pageerror', error => console.log('PAGEERROR', error.message)); await page.goto('http://127.0.0.1:5173/?source=local'); await page.waitForFunction(() => window.browserPi); await page.evaluate(() => window.browserPi.ready); await page.evaluate(() => window.browserPi.load()); await page.evaluate(() => window.browserPi.rpc('new_chat')); const state = await page.evaluate(() => window.browserPi.prompt('Use bash to calculate 17 * 23. Give the result.')); console.log(JSON.stringify(state.messages)); assert(state.messages.some(m => m.role === 'toolResult' && m.toolName === 'bash' && !m.isError && m.content.some(c => c.text?.includes('391')))); await fs.writeFile('../validation/agent-browser-dev.json', JSON.stringify({ passed: true, messages: state.messages }, null, 2)); console.log('Development server: real model → Pi → bash → 391 passed.'); } finally { await context.close(); }