Keep resume preparation and final verification outside connection timeouts
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
const { test, expect } = require('@playwright/test');
|
||||
test('paired pages save verified bytes directly over WebRTC with metadata-only server logs', async ({ browser, request }) => {
|
||||
for (const prepareDelay of [0, 12000]) test(`prepare delay ${prepareDelay}: paired pages save verified bytes directly over WebRTC with metadata-only server logs`, async ({ browser, request }) => {
|
||||
const a = await browser.newContext(), b = await browser.newContext();
|
||||
const sender = await a.newPage(), receiver = await b.newPage();
|
||||
await sender.goto('/?id=sender'); await receiver.goto('/?id=receiver');
|
||||
await sender.goto('/?id=sender'); await receiver.goto('/?id=receiver&prepareDelay=' + prepareDelay);
|
||||
await sender.waitForFunction(() => window.ready); await receiver.waitForFunction(() => window.ready);
|
||||
await receiver.evaluate(async () => {
|
||||
const bytes = Uint8Array.from({ length: 2000000 }, (_, i) => i % 251), h = Sha256.create(); h.update(bytes);
|
||||
|
||||
2
tests/fixtures/direct-server.js
vendored
2
tests/fixtures/direct-server.js
vendored
@@ -9,7 +9,7 @@ Bun.serve({ port: 8095,
|
||||
if (url.pathname === '/') return new Response(`<!doctype html><button id="send">Send</button><div id="status"></div><script src="/sha256-wasm.js"></script><script src="/sha256.js"></script><script src="/direct-protocol.js"></script><script src="/settings-sections.js"></script><script src="/direct-media.js"></script><script>
|
||||
const id = new URL(location.href).searchParams.get('id');
|
||||
const ws = new WebSocket('ws://localhost:8095/ws?id=' + id);
|
||||
window.resumeOffsets = []; const NativeWorker = window.Worker; window.Worker = class extends NativeWorker { constructor(...args) { super(...args); this.addEventListener('message', e => { if(e.data.op === 'opened') window.resumeOffsets.push(e.data.offset); }); } };
|
||||
window.resumeOffsets = []; const NativeWorker = window.Worker; window.Worker = class extends NativeWorker { constructor(...args) { super(...args); this.addEventListener('message', e => { if(e.data.op === 'opened') window.resumeOffsets.push(e.data.offset); }); } set onmessage(fn) { super.onmessage = e => { const delay = Number(new URL(location.href).searchParams.get('prepareDelay')) || 0; if(e.data.op === 'opened' && delay) setTimeout(() => fn(e), delay); else fn(e); }; } };
|
||||
const meta = { id: 'testvideo', title: 'Direct test', channel: 'Fixture', duration: 1 };
|
||||
window.OPFS = { getFileObject: async () => new File([Uint8Array.from({length: 2000000}, (_,i)=>i%251)], 'test.mp4') };
|
||||
DirectMedia.configure({ current: () => meta, notify: text => document.getElementById('status').textContent = text, saved: file => window.received = file, fallback: () => window.failed = true });
|
||||
|
||||
Reference in New Issue
Block a user