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"`));
 | |
| }
 | 
