diff --git a/e2e/roam-proof.mjs b/e2e/roam-proof.mjs index b2d513d..779e450 100644 --- a/e2e/roam-proof.mjs +++ b/e2e/roam-proof.mjs @@ -37,8 +37,8 @@ export default { async run({ page, outDir }) { await tab(page).click(); assert.equal( - await page.getByPlaceholder("5", { exact: true }).inputValue(), - "5", + await page.getByPlaceholder("3", { exact: true }).inputValue(), + "3", ); assert.equal( await page.getByText("Delay (milliseconds)", { exact: true }).count(), @@ -57,8 +57,8 @@ export default { const defaults = await waitForReload(page); assert.equal(defaults.calls.length, 1); assert( - defaults.calls[0].started - defaults.loads[0] >= 4900, - "default waits five seconds", + defaults.calls[0].started - defaults.loads[0] >= 2900, + "default waits three seconds", ); const defaultToast = toast(page, "Developer extensions reloaded."); await defaultToast.waitFor(); @@ -74,7 +74,7 @@ export default { ); await tab(page).click(); - await page.getByPlaceholder("5", { exact: true }).fill("1.25"); + await page.getByPlaceholder("3", { exact: true }).fill("1.25"); await page .getByPlaceholder("Developer extensions reloaded.", { exact: true }) .fill("Custom developer reload complete"); @@ -104,7 +104,7 @@ export default { await tab(page).click(); assert.equal( - await page.getByPlaceholder("5", { exact: true }).inputValue(), + await page.getByPlaceholder("3", { exact: true }).inputValue(), "1.25", "seconds persist after reload", ); diff --git a/src/index.ts b/src/index.ts index 92a2a6b..b731a79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,7 +22,7 @@ export default runExtension(async ({ extensionAPI }) => { id: "delay-seconds", name: "Delay (seconds)", description: "Seconds to wait after this extension loads.", - action: { type: "input", placeholder: "5" }, + action: { type: "input", placeholder: DEFAULTS["delay-seconds"] }, }, { id: "show-toast", diff --git a/src/utils/settings.ts b/src/utils/settings.ts index 2308440..b2214ea 100644 --- a/src/utils/settings.ts +++ b/src/utils/settings.ts @@ -7,7 +7,7 @@ export const TOAST_INTENTS = [ ] as const; export type ToastIntent = (typeof TOAST_INTENTS)[number]; export const DEFAULTS = { - "delay-seconds": "5", + "delay-seconds": "3", "show-toast": true, "toast-intent": "success", "toast-message": "Developer extensions reloaded.", @@ -41,7 +41,10 @@ export const getConfig = (get: (key: string) => unknown): ReloadConfig => { return { // Browser timers overflow above this limit and otherwise fire immediately. delayMs: Math.min( - Math.round(parseDelay(get("delay-seconds"), 5) * 1000), + Math.round( + parseDelay(get("delay-seconds"), Number(DEFAULTS["delay-seconds"])) * + 1000, + ), 2_147_483_647, ), showToast: get("show-toast") !== false, diff --git a/tests/settings.test.ts b/tests/settings.test.ts index 828f00d..4e156b8 100644 --- a/tests/settings.test.ts +++ b/tests/settings.test.ts @@ -21,6 +21,7 @@ describe("settings", () => { }, }); expect(stored).toEqual(DEFAULTS); + expect(stored["delay-seconds"]).toBe("3"); }, ); it("preserves saved values, including false and zero", async () => { @@ -43,7 +44,7 @@ describe("settings", () => { }); it("uses safe defaults for missing settings", () => { expect(config()).toEqual({ - delayMs: 5000, + delayMs: 3000, showToast: true, toastIntent: "success", toastMessage: DEFAULTS["toast-message"], @@ -62,12 +63,6 @@ describe("settings", () => { ])("converts seconds %j to %i milliseconds", (value, expected) => { expect(config({ "delay-seconds": value }).delayMs).toBe(expected); }); - it("ignores the removed milliseconds setting", () => { - expect( - config({ "delay-seconds": "2.5", "delay-milliseconds": "500" }).delayMs, - ).toBe(2500); - expect(DEFAULTS).not.toHaveProperty("delay-milliseconds"); - }); it.each([ "", "-1", @@ -82,7 +77,7 @@ describe("settings", () => { {}, "9".repeat(400), ])("falls back for invalid delay %j", (value) => { - expect(config({ "delay-seconds": value }).delayMs).toBe(5000); + expect(config({ "delay-seconds": value }).delayMs).toBe(3000); }); it("caps large delays instead of overflowing the browser timer", () => { expect(