mirror of
https://github.com/stablyai/orca.git
synced 2026-09-23 00:02:29 +00:00
* test(e2e): prove the terminal daemon survives a main-process crash on Windows (#7742) Add a win-crash-survival e2e harness (sibling to win-update-e2e) that force-kills ONLY the packaged app's real Electron main (resolved via app.evaluate -> process.pid, /F no /T) and asserts the detached orca-terminal-daemon.exe plus its ConPTY shell survive with no pwsh 0xE9 FailFast, then that a relaunch re-adopts the SAME daemon and the reattached UI binds to the SAME survivor shell (proved via a per-shell env sentinel read back through the restored terminal). This guards the #7742 fix (standalone relocated daemon that outlives main death) against regression. A directional `--expect orphaned` profile fails on a fixed build, keeping the survival assertions honest. Windows-only; reuses win-update-e2e app-driver/daemon-process modules. * test(e2e): harden Windows crash-survival proof * test(ci): keep crash survival gate durable * test(e2e): tolerate restart hydration navigation * test(e2e): prove exact shell input after crash * perf(ci): avoid crash harness installer rebuilds * test(ci): harden crash survival evidence and cost * test(e2e): fail closed on authoritative crash target * test(e2e): fail closed on crash liveness evidence --------- Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
21 lines
677 B
TypeScript
21 lines
677 B
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { readRestartRendererState } from './helpers/orca-restart'
|
|
|
|
describe('restart renderer state polling', () => {
|
|
it('treats document replacement as pending state', async () => {
|
|
await expect(
|
|
readRestartRendererState(async () => {
|
|
throw new Error('Execution context was destroyed, most likely because of a navigation.')
|
|
})
|
|
).resolves.toBeNull()
|
|
})
|
|
|
|
it('does not hide non-navigation renderer failures', async () => {
|
|
await expect(
|
|
readRestartRendererState(async () => {
|
|
throw new Error('fetchWorktrees failed')
|
|
})
|
|
).rejects.toThrow('fetchWorktrees failed')
|
|
})
|
|
})
|