diff --git a/packages/playwright-core/src/web/traceViewer/index.tsx b/packages/playwright-core/src/web/traceViewer/index.tsx index d2b3f6254e..b500dd6d66 100644 --- a/packages/playwright-core/src/web/traceViewer/index.tsx +++ b/packages/playwright-core/src/web/traceViewer/index.tsx @@ -29,5 +29,7 @@ import '../common.css'; navigator.serviceWorker.oncontrollerchange = () => f(); }); } + // Keep SW running. + setInterval(function() { fetch('ping'); }, 10000); ReactDOM.render(, document.querySelector('#root')); })(); diff --git a/packages/playwright-core/src/web/traceViewer/sw.ts b/packages/playwright-core/src/web/traceViewer/sw.ts index 8e7880904d..bd4d846b70 100644 --- a/packages/playwright-core/src/web/traceViewer/sw.ts +++ b/packages/playwright-core/src/web/traceViewer/sw.ts @@ -56,8 +56,12 @@ async function doFetch(event: FetchEvent): Promise { const url = new URL(request.url); const relativePath = url.pathname.substring(scopePath.length - 1); - if (relativePath === '/context') { + if (relativePath === '/ping') { await gc(); + return new Response(null, { status: 200 }); + } + + if (relativePath === '/context') { const traceModel = await loadTrace(traceUrl, event.clientId); return new Response(JSON.stringify(traceModel!.contextEntry), { status: 200,