mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { chromium, webkit } = require('playwright');
 | 
						|
const assert = require('assert');
 | 
						|
 | 
						|
/**
 | 
						|
 * In this script, we will login on GitHub.com through Chromium,
 | 
						|
 * and reuse the login cookies state inside WebKit. This recipe can be
 | 
						|
 * used to speed up tests by logging in once and reusing login state.
 | 
						|
 * 
 | 
						|
 * Steps summary
 | 
						|
 * 1. Login on GitHub.com in Chromium
 | 
						|
 * 2. Export cookies from Chromium browser context
 | 
						|
 * 3. Set cookies in WebKit browser context and verify login
 | 
						|
 */
 | 
						|
 | 
						|
const account = { login: '', password: '' };
 | 
						|
 | 
						|
(async () => {
 | 
						|
  // Create a Chromium browser context
 | 
						|
  const crBrowser = await chromium.launch();
 | 
						|
  const crContext = await crBrowser.newContext();
 | 
						|
  const crPage = await crContext.newPage();
 | 
						|
 | 
						|
  // Navigate and auto-wait on the page to load after navigation
 | 
						|
  await crPage.goto('https://github.com/login');
 | 
						|
 | 
						|
  // Fill login form elements
 | 
						|
  await crPage.fill('input[name="login"]', account.login);
 | 
						|
  await crPage.fill('input[name="password"]', account.password);
 | 
						|
 | 
						|
  // Submit form and auto-wait for the navigation to complete
 | 
						|
  await crPage.click('input[type="submit"]');
 | 
						|
  await verifyIsLoggedIn(crPage);
 | 
						|
 | 
						|
  // Get cookies from Chromium browser context
 | 
						|
  const cookies = await crContext.cookies();
 | 
						|
  await crBrowser.close();
 | 
						|
  
 | 
						|
  // Create WebKit browser context and load cookies
 | 
						|
  const wkBrowser = await webkit.launch();
 | 
						|
  const wkContext = await wkBrowser.newContext();
 | 
						|
  await wkContext.addCookies(cookies)
 | 
						|
 | 
						|
  // Navigate to GitHub.com and verify that we are logged in
 | 
						|
  const wkPage = await wkContext.newPage();
 | 
						|
  await wkPage.goto('http://github.com');
 | 
						|
  await wkPage.screenshot({ path: 'webkit.png' });
 | 
						|
  await verifyIsLoggedIn(wkPage);
 | 
						|
  await wkBrowser.close();
 | 
						|
})();
 | 
						|
 | 
						|
const verifyIsLoggedIn = async (page) => {
 | 
						|
  await page.click('summary[aria-label="View profile and more"]')
 | 
						|
  assert(await page.$(`text="Your profile"`));
 | 
						|
}
 |