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/fixtures/public-safety-access/browser-operation-peer.tsadded+38-0
Changes to tests/fixtures/public-safety-access/browser-operation-peer.ts
@@ -0,0 +1,38 @@
1import assert from 'node:assert/strict'
2import { writeFile } from 'node:fs/promises'
3import { basename, join } from 'node:path'
4
5// Controlled external HTTP/WebSocket peer, not a Chrome implementation.
6const root = process.cwd(), mode = process.env.BROWSER_PEER_MODE
7assert(basename(root).startsWith('drone-incident-access-browser-operation-'))
8assert(['version-fetch', 'version-json', 'target-fetch', 'target-json', 'browser-socket', 'page-socket', 'control-fetch', 'control-json', 'control-ok', 'ok'].includes(mode!))
9const profile = Bun.argv.find(value => value.startsWith('--user-data-dir='))?.slice('--user-data-dir='.length)
10assert.equal(profile, join(root, 'browser-profile'))
11const stalledBody = () => new Response(new ReadableStream({ start(controller) { controller.enqueue(new TextEncoder().encode('{')) } }), { headers: { 'content-type': 'application/json' } })
12const server = Bun.serve({
13 hostname: '127.0.0.1', port: 0,
14 fetch(request, owner): Response | Promise<Response> | undefined {
15 const path = new URL(request.url).pathname
16 if (path === '/browser' || path === '/page') {
17 if ((path === '/browser' && mode === 'browser-socket') || (path === '/page' && mode === 'page-socket')) return new Promise<Response>(() => {})
18 assert(owner.upgrade(request)); return
19 }
20 if (path === '/__fixture/status') {
21 assert.equal(request.headers.get('x-fixture-control'), 'synthetic-peer-control')
22 if (mode === 'control-fetch') return new Promise<Response>(() => {})
23 if (mode === 'control-json') return stalledBody()
24 return Response.json({ ok: true })
25 }
26 if (path === '/json/version' || path === '/json/new') {
27 const operation = path === '/json/version' ? 'version' : 'target'
28 if (mode === `${operation}-fetch`) return new Promise<Response>(() => {})
29 if (mode === `${operation}-json`) return stalledBody()
30 return Response.json({ webSocketDebuggerUrl: `ws://127.0.0.1:${server.port}/${operation === 'version' ? 'browser' : 'page'}` })
31 }
32 return new Response(null, { status: 404 })
33 },
34 websocket: { message() {} },
35})
36process.on('SIGTERM', () => { void server.stop(true).then(() => process.exit(0)) })
37await writeFile(join(root, 'peer.pid'), String(process.pid), { mode: 0o600, flag: 'wx' })
38await writeFile(join(profile!, 'DevToolsActivePort'), `${server.port}\n/browser\n`, { mode: 0o600, flag: 'wx' })