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-probe.tsadded+41-0
Changes to tests/fixtures/public-safety-access/browser-operation-probe.ts
@@ -0,0 +1,41 @@
1import assert from 'node:assert/strict'
2import { closeSync, openSync, writeSync } from 'node:fs'
3import { readFile } from 'node:fs/promises'
4import { basename, join } from 'node:path'
5import { startWorkspaceBrowser } from '../../helpers/workspace-browser'
6import { requestWorkspaceControl } from '../../helpers/workspace-control'
7
8const root = process.cwd(), mode = process.env.BROWSER_PEER_MODE
9assert(basename(root).startsWith('drone-incident-access-browser-operation-'))
10const unwritable = process.env.BROWSER_OPERATION_UNWRITABLE_DIAGNOSTIC === 'true'
11if (unwritable) {
12 closeSync(2)
13 assert.equal(openSync('/dev/null', 'r'), 2, 'Keep descriptor two reserved and read-only')
14 assert.throws(() => writeSync(2, 'probe'), { code: 'EBADF' })
15}
16let browser: Awaited<ReturnType<typeof startWorkspaceBrowser>> | undefined
17let caught: unknown
18const began = performance.now()
19try {
20 browser = await startWorkspaceBrowser(root)
21 if (mode?.startsWith('target-') || mode === 'page-socket') await browser.page('http://fixture.invalid/incidents')
22 if (mode?.startsWith('control-')) {
23 const port = (await readFile(join(root, 'browser-profile/DevToolsActivePort'), 'utf8')).split('\n')[0]
24 const result = await requestWorkspaceControl({ url: `http://127.0.0.1:${port}`, control: 'synthetic-peer-control' }, 'status')
25 assert.deepEqual(result, { ok: true })
26 }
27}
28catch (error) { caught = error }
29finally { await browser?.close() }
30if (unwritable) assert.throws(() => writeSync(2, 'probe'), { code: 'EBADF' })
31if (mode === 'ok' || mode === 'control-ok') assert.equal(caught, undefined)
32else {
33 assert(caught instanceof Error)
34 if (mode?.endsWith('-socket')) { assert.equal(caught.name, 'Error'); assert.match(caught.message, /^Browser socket /) }
35 else assert(['TimeoutError', 'AbortError'].includes(caught.name), 'Preserve the native abort exception instead of replacing it')
36 assert(performance.now() - began >= 5000, 'Exercise the original five-second native fetch timeout')
37}
38const peer = Number(await readFile(join(root, 'peer.pid'), 'utf8'))
39assert(Number.isSafeInteger(peer) && peer > 1)
40assert.throws(() => process.kill(peer, 0), 'Owned peer must actually exit before files are removed')
41console.log(JSON.stringify({ oracle: 'browser-operation-peer-result', mode, nativeError: caught instanceof Error ? caught.name : null, elapsedMs: performance.now() - began, peerReaped: true }))