From: Ardis Lu Date: Wed, 30 Sep 2026 06:47:02 +0000 (-0700) Subject: Add workaround for 1Password browser extension bug X-Git-Url: https://git.ardis.lu/?a=commitdiff_plain;h=b2cc61dd1102e2949c58de8b87166fcac1c07bdd;p=envpass Add workaround for 1Password browser extension bug --- diff --git a/src/getPrf.html b/src/getPrf.html index 90db099..782355e 100644 --- a/src/getPrf.html +++ b/src/getPrf.html @@ -88,6 +88,9 @@ } async function broadcastPrf(controller) { const prf = new Uint8Array(32); + // Workaround for 1Password's "Universal sign-in" not working. There is some bug in the 1Password browser extension. Fetching a passkey + // too soon will result in the passkey popup never appearing. So, block for 250ms to wait for the extension to "settle down" first. + await new Promise(r => setTimeout(r, 250)); try { prf.set(await getPrf(controller.signal)); } catch { prf.set(await createPrf(controller.signal)); } const response = await fetch(`http://localhost:${location.port}`, { // Intentionally hardcoding localhost, do not broadcast anywhere else diff --git a/test/getPrf.test.js b/test/getPrf.test.js index 0ae306e..0ed9e23 100644 --- a/test/getPrf.test.js +++ b/test/getPrf.test.js @@ -307,6 +307,7 @@ suite('getPrf.html (client)', { concurrency: true }, () => { await page.clock.install(); await page.goto(url); + await page.clock.runFor(250); // 1Password browser extension workaround match(await page.locator('p').textContent() ?? '', /^Successfully sent passkey/); await page.clock.runFor(WINDOW_EXPIRATION_DURATION); match(await page.locator('p').textContent() ?? '', /^Successfully sent passkey/);