Files
orca/src/shared/remote-runtime-shared-control-reconnect.test.ts
T
BingZandOrcaWin b96c2f0582 fix(remote): accelerate terminal recovery on resume/online (#8255)
* fix(remote): accelerate shared-control and pane recovery on resume/online

Narrow #8255 onto current main after #9774: fire pending shared-control
reconnect timers and pane recovery backoffs on system resume and browser
online, without replacing the per-pane recovery state machine or reconnect
banner UX.

* test(remote): cover online and occluded-resume recovery triggers

* fix(remote): centralize recovery acceleration

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-07-27 01:43:44 -07:00

37 lines
1.2 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest'
import { SharedControlReconnectScheduler } from './remote-runtime-shared-control-reconnect'
afterEach(() => {
vi.useRealTimers()
})
describe('SharedControlReconnectScheduler', () => {
it('advances one pending backoff without leaving its timer armed', async () => {
vi.useFakeTimers()
const scheduler = new SharedControlReconnectScheduler()
const open = vi.fn()
scheduler.schedule({ intentionallyClosed: false, delaysMs: [30_000], open })
expect(scheduler.retryNow()).toBe(true)
expect(scheduler.retryNow()).toBe(false)
expect(open).toHaveBeenCalledTimes(1)
await vi.advanceTimersByTimeAsync(30_000)
expect(open).toHaveBeenCalledTimes(1)
})
it('does not advance cleared or intentionally closed work', () => {
vi.useFakeTimers()
const scheduler = new SharedControlReconnectScheduler()
const open = vi.fn()
scheduler.schedule({ intentionallyClosed: false, delaysMs: [30_000], open })
scheduler.clear()
expect(scheduler.retryNow()).toBe(false)
scheduler.schedule({ intentionallyClosed: true, delaysMs: [30_000], open })
expect(scheduler.retryNow()).toBe(false)
expect(open).not.toHaveBeenCalled()
})
})