aboutsummaryrefslogtreecommitdiffstats
path: root/tools/offline-cache-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/offline-cache-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/offline-cache-test.js')
-rw-r--r--tools/offline-cache-test.js4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/offline-cache-test.js b/tools/offline-cache-test.js
index c01dc1c..ffa42e4 100644
--- a/tools/offline-cache-test.js
+++ b/tools/offline-cache-test.js
@@ -4,7 +4,7 @@
// build from dist/ so the service worker serves the shell offline.
//
// Run: bun run build && bun tools/offline-cache-test.js
-import puppeteer from 'puppeteer-core';
+import puppeteer from './puppeteer.js';
import { generateMnemonic } from '@scure/bip39';
import { wordlist } from '@scure/bip39/wordlists/english';
import { join } from 'node:path';
@@ -16,7 +16,7 @@ const server = Bun.serve({ port: 5234, async fetch(req) {
if (await f.exists()) return new Response(f, { headers: { 'cache-control': 'no-store' } });
return new Response(Bun.file(dist + '/index.html'), { headers: { 'cache-control': 'no-store' } });
} });
-const browser = await puppeteer.launch({ executablePath: '/usr/bin/google-chrome', headless: 'new', args: ['--no-sandbox'] });
+const browser = await puppeteer.launch({ relays: 'read', executablePath: '/usr/bin/google-chrome', headless: 'new', args: ['--no-sandbox'] });
const page = await browser.newPage();
const errs = []; page.on('pageerror', (e) => errs.push(e.message)); page.on('console', (m) => { if (m.type() === 'error') errs.push('console: ' + m.text().slice(0, 160)); });
const click = (sel, t) => page.evaluate((s, x) => { const e = [...document.querySelectorAll(s)].find((n) => n.textContent.trim().toLowerCase().includes(x.toLowerCase())); if (e) { e.click(); return true; } return false; }, sel, t);