Files
orca/tests/e2e/paired-remote-terminal-retention-memory.spec.ts
T
OrcaWinandOrcaWin ab665a3ce7 fix(remote): preserve terminal recovery across control refresh (#11513)
* fix(remote): recover stalled terminal streams

* fix(i18n): localize manual disconnect error

* fix(remote): park paired terminals with host snapshots

* test(remote): mock authoritative resync snapshots

* fix(terminal): defer startup mounts until hydration

* fix(remote): raise paired terminal stream capacity

* fix(remote): harden terminal recovery lifecycle

* fix(remote): preserve calls across control refresh

* test(remote): harden paired recovery oracle

* test(workspace): seed Jira source context

* test(remote): assert raw host terminal identities

* test(terminal): keep restore sentinels atomic

* test(terminal): keep restore sentinel on one row

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-07-30 03:05:10 -07:00

39 lines
1.2 KiB
TypeScript

import { test } from './helpers/orca-app'
import {
createRuntimeDesktopPairingOffer,
launchPairedWebClient
} from './helpers/paired-electron-client'
import { runPairedTerminalParkingOracle } from './helpers/paired-terminal-parking-oracle'
test('ordinary-parks paired terminals and restores authoritative host scrollback @headful', async ({
electronApp,
orcaPage
}) => {
test.setTimeout(240_000)
const seed = await orcaPage.evaluate(() => {
const state = window.__store?.getState()
const worktrees = state?.allWorktrees() ?? []
const active = worktrees.find((worktree) => worktree.id === state?.activeWorktreeId)
if (!active) {
throw new Error('Paired retention host has no active seeded worktree')
}
return { activeWorktreeId: active.id, repoId: active.repoId }
})
const offer = await createRuntimeDesktopPairingOffer(orcaPage)
const client = await launchPairedWebClient(electronApp, offer, {
terminalParkingDelayMs: 100
})
try {
await runPairedTerminalParkingOracle(
client.page,
{
fallbackWorktreeId: seed.activeWorktreeId,
repoId: seed.repoId
},
{ hostPage: orcaPage }
)
} finally {
await client.dispose()
}
})