feat(desktop): prefer the bundled renderer, own update prompts (#3341)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-09 03:01:15 +02:00
1 parent 7a5b9a0ded
commit 5072488f1e
33 files changed
+2197 -113

No files matched your search

@@ -25,14 +25,14 @@ function deferred() {
describe('DesktopUpdateGate', () => {
test('nothing is available and nothing starts before the bootstrap arms the gate', async () => {
assert.deepEqual(getDesktopUpdateState(), {available: false});
assert.deepEqual(await checkDesktopUpdateNow(), {available: false});
assert.deepEqual(getDesktopUpdateState(), {available: false, updating: false});
assert.deepEqual(await checkDesktopUpdateNow(), {available: false, updating: false});
assert.equal(startDesktopUpdate(), false);
});
test('a check publishes the update and one click runs it exactly once', async () => {
const states = [];
const stop = observeDesktopUpdateState((state) => states.push(state.available));
const stop = observeDesktopUpdateState((state) => states.push(state));
const running = deferred();
let starts = 0;
armDesktopUpdate({
@@ -44,18 +44,30 @@ describe('DesktopUpdateGate', () => {
},
});
assert.deepEqual(await checkDesktopUpdateNow(), {available: true});
assert.deepEqual(await checkDesktopUpdateNow(), {available: true, updating: false});
assert.equal(startDesktopUpdate(), true);
assert.equal(startDesktopUpdate(), false, 'a second click while the update runs is a no-op');
assert.deepEqual(getDesktopUpdateState(), {available: false}, 'the affordance hides the moment it is clicked');
assert.deepEqual(await checkDesktopUpdateNow(), {available: false}, 'a poll during the update changes nothing');
assert.deepEqual(
getDesktopUpdateState(),
{available: false, updating: true},
'the affordance hides the moment it is clicked',
);
assert.deepEqual(
await checkDesktopUpdateNow(),
{available: false, updating: true},
'a poll during the update changes nothing',
);
running.resolve();
await new Promise((resolve) => setImmediate(resolve));
assert.equal(starts, 1);
assert.deepEqual(getDesktopUpdateState(), {available: false});
assert.deepEqual(states, [true, false]);
assert.deepEqual(getDesktopUpdateState(), {available: false, updating: false});
assert.deepEqual(states, [
{available: true, updating: false},
{available: false, updating: true},
{available: false, updating: false},
]);
stop();
});
@@ -71,7 +83,7 @@ describe('DesktopUpdateGate', () => {
assert.equal(startDesktopUpdate(), true);
await new Promise((resolve) => setImmediate(resolve));
assert.deepEqual(getDesktopUpdateState(), {available: true});
assert.deepEqual(getDesktopUpdateState(), {available: true, updating: false});
assert.equal(startDesktopUpdate(), true);
});
});