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'
 | 
						|
  ]);
 | 
						|
});
 |