ReviewOS

also looking at this

stacks/drone

test: label native browser transport failures

#66
Merged chris wants to merge codex/browser-operation-observations into main
7 files +177 -11
tests/helpers/workspace-browser-driver.tsmodified+3-5
Changes to tests/helpers/workspace-browser-driver.ts
@@ -2,17 +2,15 @@ import assert from 'node:assert/strict'
22import { mkdir, readFile, writeFile } from 'node:fs/promises'
33import { basename, join } from 'node:path'
44import { startWorkspaceBrowser } from './workspace-browser'
5import type { BrowserControlAction } from './browser-operation'
6import { requestWorkspaceControl } from './workspace-control'
57
68// Controller is isolated from native Auth/SQLite and reads owner-only fixture credentials.
79const root = process.cwd()
810assert(basename(root).startsWith('drone-incident-access-'))
911const data = JSON.parse(await readFile(join(root, 'credentials.json'), 'utf8')) as { url: string, key: string, sourceDigest: string, senderToken: string, recipientToken: string, recipientId: number, control: string, capture: { id: string, width: number }, pixel: number }
1012assert(/^http:\/\/127\.0\.0\.1:\d+$/.test(data.url))
11const control = async (action: string): Promise<any> => {
12 const response = await fetch(`${data.url}/__fixture/${action}`, { method: 'GET', headers: { 'x-fixture-control': data.control }, signal: AbortSignal.timeout(5000) })
13 assert(response.ok, `Private fixture control must succeed: ${action}, ${response.status}`)
14 return response.json()
15}
13const control = async (action: BrowserControlAction): Promise<any> => requestWorkspaceControl(data, action)
1614const browser = await startWorkspaceBrowser(root)
1715const evidence = process.env.WORKSPACE_BROWSER_EVIDENCE ?? join(root, 'evidence')
1816await mkdir(evidence, { recursive: true })