// Plan 014 harness check: two browsers, one signal (see device-db-check.mjs for requirements). import { chromium } from 'playwright'; const b = await chromium.launch({ executablePath: process.env.CHROMIUM || '/opt/pw-browsers/chromium-1194/chrome-linux/chrome' }); const pages = []; for (let i = 0; i < 2; i++) { const ctx = await b.newContext(); const p = await ctx.newPage(); await p.goto('http://localhost:8768/'); pages.push(p); } const peers = []; for (const p of pages) { peers.push(await p.evaluate(async () => { P2PClient.start({ getSettings: () => ({}) }); await P2PClient.sync(); for (let i = 0; i < 50 && !P2PClient.isConnected(); i++) await new Promise((r) => setTimeout(r, 100)); window.__got = []; P2PClient.onMessage('signal', (m) => window.__got.push(m)); return P2PClient.peer(); })); } const sent = await pages[0].evaluate((to) => P2PClient.signal(to, { hi: 1 }), peers[1]); await new Promise((r) => setTimeout(r, 500)); const got = await pages[1].evaluate(() => window.__got); console.log(JSON.stringify({ peers: peers.map((x) => typeof x === 'string' && x.length === 12), distinct: peers[0] !== peers[1], sent, got: got.map((m) => ({ from: m.from === peers[0], data: m.data })) })); await b.close();