blob: baebf75383c42121e2230ef8cc0e7d8d79c3e1c8 [file] [log] [blame]
(async function(testRunner) {
const {page, session, dp} = await testRunner.startURL(
'/inspector-protocol/resources/empty.html',
'Test that target evens are fired for service worker');
const swHelper = (await testRunner.loadScript('resources/service-worker-helper.js'))(dp, session);
await dp.Target.setAutoAttach(
{autoAttach: true, waitForDebuggerOnStart: false, flatten: true});
await dp.Target.setDiscoverTargets({discover: true});
const swTargetPromises = Promise.all([
dp.Target.onceTargetCreated(),
dp.Target.onceAttachedToTarget(),
]);
const serviceWorkerURL = '/inspector-protocol/service-worker/resources/blank-service-worker.js';
await swHelper.installSWAndWaitForActivated(serviceWorkerURL);
const [swTarget, swAttachedEvent] = await swTargetPromises;
const swTargetInfo = swTarget.params.targetInfo;
testRunner.log(`Started and attached to ${swTargetInfo.type} target`);
const swdp = session.createChild(swAttachedEvent.params.sessionId).protocol;
const [registration] = await Promise.all([
dp.ServiceWorker.onceWorkerRegistrationUpdated(),
dp.ServiceWorker.enable(),
]);
const scopeURL = registration.params.registrations[0].scopeURL;
testRunner.log('Received workerRegistrationUpdated with scopeURL = ' + scopeURL);
await Promise.all([
swdp.Inspector.onceTargetCrashed(),
dp.ServiceWorker.stopAllWorkers(),
]);
testRunner.log('Stopped service worker and received Inspector.targetCrashed event\n');
await Promise.all([
swdp.Inspector.onceTargetReloadedAfterCrash(),
dp.ServiceWorker.startWorker({scopeURL}),
]);
testRunner.log('Restarted service worker and received Inspector.targetReloadedAfterCrash event');
const [swDestroyedEvent] = await Promise.all([
dp.Target.onceTargetDestroyed(),
dp.ServiceWorker.unregister({scopeURL}),
dp.ServiceWorker.stopAllWorkers(),
]);
testRunner.log('Unregistered service worker and received Target.targetDestroyed event for the worker: ' + (swTargetInfo.targetId === swDestroyedEvent.params.targetId));
testRunner.completeTest();
});