mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // @ts-check
 | ||
|  | const { test, expect } = require('@playwright/test'); | ||
|  | 
 | ||
|  | let log = []; | ||
|  | 
 | ||
|  | test.beforeEach(async ({page}) => { | ||
|  |   log = []; | ||
|  |   // Expose function for pushing messages to the Node.js script.
 | ||
|  |   await page.exposeFunction('logCall', msg => log.push(msg)); | ||
|  |   await page.addInitScript(() => { | ||
|  |     const mockBattery = { | ||
|  |       level: 0.75, | ||
|  |       charging: true, | ||
|  |       chargingTime: 1800, // seconds
 | ||
|  |       dischargingTime: Infinity, | ||
|  |       addEventListener: (name, cb) => logCall(`addEventListener:${name}`) | ||
|  |     }; | ||
|  |     // Override the method to always return mock battery info.
 | ||
|  |     window.navigator.getBattery = async () => { | ||
|  |       logCall('getBattery'); | ||
|  |       return mockBattery; | ||
|  |     }; | ||
|  |     // application tries navigator.battery first
 | ||
|  |     // so we delete this method
 | ||
|  |     delete window.navigator.battery; | ||
|  |   }); | ||
|  | }) | ||
|  | 
 | ||
|  | test('verify battery calls', async ({ page }) => { | ||
|  |   await page.goto('/'); | ||
|  |   await expect(page.locator('.battery-percentage')).toHaveText('75%'); | ||
|  | 
 | ||
|  |   // Ensure expected method calls were made.
 | ||
|  |   expect(log).toEqual([ | ||
|  |     'getBattery', | ||
|  |     'addEventListener:chargingchange', | ||
|  |     'addEventListener:levelchange' | ||
|  |   ]); | ||
|  | }); |