aboutsummaryrefslogtreecommitdiffstats
path: root/tools/profile-key-qr-test.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-07 12:02:51 -0700
committerAdam Soltys <[email protected]>2026-10-07 12:02:51 -0700
commit86d9818abfc160dac031bb292abe28d6f28fc624 (patch)
treea96983d60fb0f4dcb92a04c7aba50761da05cf9f /tools/profile-key-qr-test.js
parentb415b1fb31bd734619e1da3c88ca7e3822151c87 (diff)
downloadcoinosv3-86d9818abfc160dac031bb292abe28d6f28fc624.tar.gz
coinosv3-86d9818abfc160dac031bb292abe28d6f28fc624.zip
Browser tests: public relays answered in the page, never reached
A suite run let ~90 throwaway test wallets subscribe and publish on public relays from one home address, and nos.lol and relay.damus.io banned it. tools/puppeteer.js wraps puppeteer-core: every socket to a non-local host gets an in-page stand-in relay (EVENT -> OK, REQ -> EOSE). Tests that read real content launch with { relays: 'read' } (real reads, publishes answered in place); feed-live, chat-layout and cordn-ui launch with { relays: 'live' }. LIVE_RELAYS=read|1|host,... overrides per run. profile-key-qr: measure the QR again if a repaint swapped it out. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'tools/profile-key-qr-test.js')
-rw-r--r--tools/profile-key-qr-test.js6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/profile-key-qr-test.js b/tools/profile-key-qr-test.js
index fb3c846..f67fc3d 100644
--- a/tools/profile-key-qr-test.js
+++ b/tools/profile-key-qr-test.js
@@ -2,7 +2,7 @@
// really says the npub printed under it.
//
// Run: bun tools/profile-key-qr-test.js
-import puppeteer from 'puppeteer-core';
+import puppeteer from './puppeteer.js';
import jsQR from 'jsqr';
import { generateMnemonic } from '@scure/bip39';
import { wordlist } from '@scure/bip39/wordlists/english';
@@ -43,7 +43,9 @@ try {
await page.waitForSelector('.npub-qr svg', { timeout: 5000 });
const npub = await page.evaluate(() => document.querySelector('.npub-box').textContent.trim());
check('the key is shown', /^npub1[a-z0-9]{58}$/.test(npub), npub);
- const box = await (await page.$('.npub-qr')).boundingBox();
+ // a repaint can swap the box out between finding and measuring it
+ let box = null;
+ for (let i = 0; i < 20 && !box; i++) { box = await (await page.$('.npub-qr'))?.boundingBox().catch(() => null); if (!box) await sleep(100); }
check('the QR fits a phone screen', box.width <= 420 && box.x >= 0, JSON.stringify(box));
// read it back the way a camera would: from pixels
const shot = join(tmpdir(), 'profile-key-qr.png');