| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copyright 2018 Google Inc. All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports.addTests = function({testRunner, expect, headless, playwright, FFOX, CHROME, WEBKIT}) { | 
					
						
							|  |  |  |   const {describe, xdescribe, fdescribe} = testRunner; | 
					
						
							|  |  |  |   const {it, fit, xit} = testRunner; | 
					
						
							|  |  |  |   const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-22 14:04:04 -08:00
										 |  |  |   describe('Browser.version', function() { | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |     it('should return whether we are in headless', async({browser}) => { | 
					
						
							|  |  |  |       const version = await browser.version(); | 
					
						
							|  |  |  |       expect(version.length).toBeGreaterThan(0); | 
					
						
							| 
									
										
										
										
											2019-11-22 14:04:04 -08:00
										 |  |  |       if (CHROME) | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |         expect(version.startsWith('Headless')).toBe(headless); | 
					
						
							| 
									
										
										
										
											2019-11-22 14:04:04 -08:00
										 |  |  |       else if (WEBKIT) | 
					
						
							|  |  |  |         expect(version.startsWith('Safari/')).toBe(true); | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |       else | 
					
						
							|  |  |  |         expect(version.startsWith('Firefox/')).toBe(true); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-22 14:04:04 -08:00
										 |  |  |   describe('Browser.userAgent', function() { | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |     it('should include WebKit', async({browser}) => { | 
					
						
							|  |  |  |       const userAgent = await browser.userAgent(); | 
					
						
							|  |  |  |       expect(userAgent.length).toBeGreaterThan(0); | 
					
						
							|  |  |  |       if (CHROME || WEBKIT) | 
					
						
							|  |  |  |         expect(userAgent).toContain('WebKit'); | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         expect(userAgent).toContain('Gecko'); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe('Browser.process', function() { | 
					
						
							|  |  |  |     it('should return child_process instance', async function({browser}) { | 
					
						
							|  |  |  |       const process = await browser.process(); | 
					
						
							|  |  |  |       expect(process.pid).toBeGreaterThan(0); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2019-11-22 14:46:34 -08:00
										 |  |  |     it.skip(WEBKIT || FFOX)('should not return child_process for remote browser', async function({browser}) { | 
					
						
							|  |  |  |       const browserWSEndpoint = browser.chromium.wsEndpoint(); | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |       const remoteBrowser = await playwright.connect({browserWSEndpoint}); | 
					
						
							|  |  |  |       expect(remoteBrowser.process()).toBe(null); | 
					
						
							|  |  |  |       remoteBrowser.disconnect(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-22 14:46:34 -08:00
										 |  |  |   describe.skip(WEBKIT || FFOX)('Browser.isConnected', () => { | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |     it('should set the browser connected state', async({browser}) => { | 
					
						
							| 
									
										
										
										
											2019-11-22 14:46:34 -08:00
										 |  |  |       const browserWSEndpoint = browser.chromium.wsEndpoint(); | 
					
						
							| 
									
										
										
										
											2019-11-18 18:18:28 -08:00
										 |  |  |       const newBrowser = await playwright.connect({browserWSEndpoint}); | 
					
						
							|  |  |  |       expect(newBrowser.isConnected()).toBe(true); | 
					
						
							|  |  |  |       newBrowser.disconnect(); | 
					
						
							|  |  |  |       expect(newBrowser.isConnected()).toBe(false); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }; |