mirror of
https://github.com/stablyai/orca.git
synced 2026-09-26 16:02:43 +00:00
* 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>
37 lines
1.2 KiB
TypeScript
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()
|
|
})
|
|
})
|