mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	test: fix service worker test (#988)
Do the following to ensure SW is active and serves requests: - in ServiceWorker, claim all clients once activated - in page, await activation promise instead of a registration
This commit is contained in:
		
							parent
							
								
									2e0d89e25c
								
							
						
					
					
						commit
						05f8d001f8
					
				@ -1,5 +1,6 @@
 | 
			
		||||
<script>
 | 
			
		||||
  window.registrationPromise = navigator.serviceWorker.register('sw.js');
 | 
			
		||||
  window.activationPromise = new Promise(resolve => navigator.serviceWorker.oncontrollerchange = resolve);
 | 
			
		||||
 | 
			
		||||
  async function fetchDummy(name) {
 | 
			
		||||
    const response = await fetch(name);
 | 
			
		||||
 | 
			
		||||
@ -9,3 +9,7 @@ self.addEventListener('fetch', event => {
 | 
			
		||||
  const response = new Response(blob, { "status" : 200 , "statusText" : "OK" });
 | 
			
		||||
  event.respondWith(response);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
self.addEventListener('activate', event => {
 | 
			
		||||
  event.waitUntil(clients.claim());
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -570,8 +570,7 @@ module.exports.describe = function({testRunner, expect, defaultBrowserOptions, p
 | 
			
		||||
  describe('service worker', function() {
 | 
			
		||||
    it('should intercept after a service worker', async({browser, page, server, context}) => {
 | 
			
		||||
      await page.goto(server.PREFIX + '/serviceworkers/fetchdummy/sw.html');
 | 
			
		||||
      await page.evaluate(() => window.registrationPromise);
 | 
			
		||||
      await page.reload();
 | 
			
		||||
      await page.evaluate(() => window.activationPromise);
 | 
			
		||||
 | 
			
		||||
      // Sanity check.
 | 
			
		||||
      const swResponse = await page.evaluate(() => fetchDummy('foo'));
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user