| 
									
										
										
										
											2016-06-23 09:47:54 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-11-10 18:13:11 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-23 13:49:57 -08:00
										 |  |  | /* tslint:disable:no-console  */ | 
					
						
							| 
									
										
										
										
											2016-11-10 18:13:11 -08:00
										 |  |  | import {browser} from 'protractor'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  | const yargs = require('yargs'); | 
					
						
							| 
									
										
										
										
											2015-08-06 09:52:33 -07:00
										 |  |  | import * as webdriver from 'selenium-webdriver'; | 
					
						
							| 
									
										
										
										
											2015-01-09 18:00:04 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  | let cmdArgs: {'bundles': boolean}; | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-23 16:14:31 -07:00
										 |  |  | declare var expect: any; | 
					
						
							| 
									
										
										
										
											2015-02-11 10:13:49 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  | export function readCommandLine(extraOptions?: {[key: string]: any}) { | 
					
						
							|  |  |  |   const options: {[key: string]: any} = { | 
					
						
							|  |  |  |     'bundles': {describe: 'Whether to use the angular bundles or not.', default: false} | 
					
						
							|  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2018-07-06 15:42:07 -07:00
										 |  |  |   if (extraOptions) { | 
					
						
							|  |  |  |     for (const key in extraOptions) { | 
					
						
							|  |  |  |       options[key] = extraOptions[key]; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cmdArgs = yargs.usage('Angular e2e test options.').options(options).help('ng-help').wrap(40).argv; | 
					
						
							|  |  |  |   return cmdArgs; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function openBrowser(config: { | 
					
						
							|  |  |  |   url: string, | 
					
						
							|  |  |  |   params?: {name: string, value: any}[], | 
					
						
							|  |  |  |   ignoreBrowserSynchronization?: boolean | 
					
						
							|  |  |  | }) { | 
					
						
							|  |  |  |   if (config.ignoreBrowserSynchronization) { | 
					
						
							|  |  |  |     browser.ignoreSynchronization = true; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |   let params = config.params || []; | 
					
						
							| 
									
										
										
										
											2016-09-30 09:09:31 -07:00
										 |  |  |   if (!params.some((param) => param.name === 'bundles')) { | 
					
						
							|  |  |  |     params = params.concat([{name: 'bundles', value: cmdArgs.bundles}]); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |   const urlParams: string[] = []; | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  |   params.forEach((param) => { urlParams.push(param.name + '=' + param.value); }); | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |   const url = encodeURI(config.url + '?' + urlParams.join('&')); | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  |   browser.get(url); | 
					
						
							| 
									
										
										
										
											2016-08-30 14:17:37 -07:00
										 |  |  |   if (config.ignoreBrowserSynchronization) { | 
					
						
							| 
									
										
										
										
											2017-01-20 13:10:57 -08:00
										 |  |  |     browser.sleep(2000); | 
					
						
							| 
									
										
										
										
											2016-08-30 14:17:37 -07:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-08-30 09:29:39 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-27 12:27:23 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @experimental This API will be moved to Protractor. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-05-20 17:19:46 -07:00
										 |  |  | export function verifyNoBrowserErrors() { | 
					
						
							| 
									
										
										
										
											2015-02-11 10:13:49 -08:00
										 |  |  |   // TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command
 | 
					
						
							|  |  |  |   // so that the browser logs can be read out!
 | 
					
						
							|  |  |  |   browser.executeScript('1+1'); | 
					
						
							| 
									
										
										
										
											2016-06-23 16:14:31 -07:00
										 |  |  |   browser.manage().logs().get('browser').then(function(browserLog: any) { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |     const filteredLog = browserLog.filter(function(logEntry: any) { | 
					
						
							| 
									
										
										
										
											2015-03-02 15:48:18 -08:00
										 |  |  |       if (logEntry.level.value >= webdriver.logging.Level.INFO.value) { | 
					
						
							| 
									
										
										
										
											2016-11-23 13:49:57 -08:00
										 |  |  |         console.log('>> ' + logEntry.message); | 
					
						
							| 
									
										
										
										
											2015-03-02 15:48:18 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2015-02-11 10:13:49 -08:00
										 |  |  |       return logEntry.level.value > webdriver.logging.Level.WARNING.value; | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-02-19 11:49:31 -08:00
										 |  |  |     expect(filteredLog).toEqual([]); | 
					
						
							| 
									
										
										
										
											2015-02-11 10:13:49 -08:00
										 |  |  |   }); | 
					
						
							|  |  |  | } |