From 11842d3f173a875f7145242322e05bd8c198b9af Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Thu, 26 Mar 2026 13:58:05 +0100 Subject: [PATCH] Reset loaded patches when pressing "Connect" --- tests/integration.spec.js | 12 +++++++++++- web/src/js/app.js | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/integration.spec.js b/tests/integration.spec.js index 5579d76..d1b5db8 100644 --- a/tests/integration.spec.js +++ b/tests/integration.spec.js @@ -1170,13 +1170,23 @@ test.describe('Custom patches', () => { await page.click('#btn-mode-next'); await expect(page.locator('#step-manual-version')).not.toBeHidden(); + // Confirm version/model (sets patchesLoaded = true), then back out + await overrideFirmwareURLs(page); + await page.selectOption('#manual-version', '4.45.23646'); + await expect(page.locator('#manual-model')).not.toBeHidden(); + await page.selectOption('#manual-model', 'N428'); + await page.click('#btn-manual-confirm'); + await expect(page.locator('#step-patches')).not.toBeHidden(); + // Go back all the way to the connect step + await page.click('#btn-patches-back'); + await expect(page.locator('#step-manual-version')).not.toBeHidden(); await page.click('#btn-manual-version-back'); await expect(page.locator('#step-mode')).not.toBeHidden(); await page.click('#btn-mode-back'); await expect(page.locator('#step-connect')).not.toBeHidden(); - // Change mind: click "Connect to Kobo" — manualMode must be reset + // Change mind: click "Connect to Kobo" — manualMode and patchesLoaded must be reset await injectMockDevice(page, { hasNickelMenu: false, overrideFirmware: true }); await page.click('#btn-connect'); await expect(page.locator('#step-connect-instructions')).not.toBeHidden(); diff --git a/web/src/js/app.js b/web/src/js/app.js index 086d586..16f528e 100644 --- a/web/src/js/app.js +++ b/web/src/js/app.js @@ -369,8 +369,10 @@ function displayDeviceInfo(info) { btnConnect.addEventListener('click', () => { // Reset any state from a previous manual-mode attempt so it does not // leak into the device-connected flow (e.g. back navigation would - // otherwise land on the manual version picker). + // otherwise land on the manual version picker, or stale patches from + // a manual selection would be used instead of the device's firmware). state.manualMode = false; + state.patchesLoaded = false; track('flow-start', { method: 'connect' }); showStep(stepConnectInstructions); });