Merge branch 'german/refactor-e8-replay-switch' into german/navara-refactor

This commit is contained in:
German Khokhlov committed 2026-11-10 19:11:07 +04:00
commit d3433f66c9
1 file changed
+42
+42
View File
@@ -74,6 +74,8 @@ async function fixture(t, { aircraft = null, failOpen = false } = {}) {
};
const engines = [];
const newEngine = (kind) => {
const retained = engines.find((engine) => engine.kind === kind);
if (retained) return retained;
const engine = createFakeEngine({
kind,
container: document.createElement('div'),
@@ -250,6 +252,46 @@ test('Space Missions keeps its context, selection and paused replay across engin
}
});
test('Space Missions keeps a running replay advancing across engines', async (t) => {
const f = await fixture(t);
assert.equal((await f.context.setContextMode('space-missions')).ok, true);
const launches = f.catalog.get('rocket-launches');
launches.selectMissionAt(0);
launches.setReplaySpeed(4);
launches.startSelectedReplay();
f.engine().camera.completeFlight();
await flushLifecycleTasks(t, 16_000);
f.engine().fake.frame();
launches.toggleReplayPause();
f.address({
enabledLayerIds: ['rocket-launches', 'satellites'],
options: {},
});
for (const kind of ['cesium', 'navara']) await f.switcher.select(kind);
launches.toggleReplayPause();
await flushLifecycleTasks(t, 100);
f.engine().fake.frame();
for (const kind of ['cesium', 'navara']) {
const before = launches.qaDrawn();
assert.ok(before.replay.active);
assert.equal(before.paused, false);
assert.ok(before.replay.phaseProgress > 0);
await f.switcher.select(kind);
const after = launches.qaDrawn();
assert.ok(after.replay.active);
assert.equal(after.paused, false);
await flushLifecycleTasks(t, 500);
f.engine().fake.frame();
const advanced = launches.qaDrawn();
assert.ok(advanced.replay.active);
assert.equal(advanced.paused, false);
assert.ok(
advanced.replay.phaseProgress > before.replay.phaseProgress,
'a running replay advances on the incoming engine',
);
}
});
for (const aircraft of ['flights', 'military']) {
test(`failed engine startup restores the ${aircraft} cockpit and session without history`, async (t) => {
const f = await fixture(t, { aircraft, failOpen: true });