102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @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
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const webdriverio = require('webdriverio');
							 | 
						||
| 
								 | 
							
								const desiredCapabilities = {
							 | 
						||
| 
								 | 
							
								  android60: {
							 | 
						||
| 
								 | 
							
								    deviceName: 'Android GoogleAPI Emulator',
							 | 
						||
| 
								 | 
							
								    browserName: 'Chrome',
							 | 
						||
| 
								 | 
							
								    platformName: 'Android',
							 | 
						||
| 
								 | 
							
								    platformVersion: '6.0',
							 | 
						||
| 
								 | 
							
								    deviceOrientation: 'portrait',
							 | 
						||
| 
								 | 
							
								    appiumVersion: '1.12.1'
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  android71: {
							 | 
						||
| 
								 | 
							
								    deviceName: 'Android GoogleAPI Emulator',
							 | 
						||
| 
								 | 
							
								    browserName: 'Chrome',
							 | 
						||
| 
								 | 
							
								    platformName: 'Android',
							 | 
						||
| 
								 | 
							
								    platformVersion: '7.1',
							 | 
						||
| 
								 | 
							
								    deviceOrientation: 'portrait',
							 | 
						||
| 
								 | 
							
								    appiumVersion: '1.12.1'
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const errors = [];
							 | 
						||
| 
								 | 
							
								const tasks = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (process.env.TRAVIS) {
							 | 
						||
| 
								 | 
							
								  process.env.SAUCE_ACCESS_KEY = process.env.SAUCE_ACCESS_KEY.split('').reverse().join('');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.keys(desiredCapabilities).forEach(key => {
							 | 
						||
| 
								 | 
							
								  console.log('begin webdriver test', key);
							 | 
						||
| 
								 | 
							
								  if (process.env.TRAVIS) {
							 | 
						||
| 
								 | 
							
								    desiredCapabilities[key]['tunnel-identifier'] = process.env.TRAVIS_JOB_NUMBER;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const client = require('webdriverio').remote({
							 | 
						||
| 
								 | 
							
								    user: process.env.SAUCE_USERNAME,
							 | 
						||
| 
								 | 
							
								    key: process.env.SAUCE_ACCESS_KEY,
							 | 
						||
| 
								 | 
							
								    host: 'localhost',
							 | 
						||
| 
								 | 
							
								    port: 4445,
							 | 
						||
| 
								 | 
							
								    desiredCapabilities: desiredCapabilities[key]
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const p = client.init()
							 | 
						||
| 
								 | 
							
								                .timeouts('script', 60000)
							 | 
						||
| 
								 | 
							
								                .url('http://localhost:8080/test/webdriver/test-es2015.html')
							 | 
						||
| 
								 | 
							
								                .executeAsync(function(done) { window.setTimeout(done, 1000) })
							 | 
						||
| 
								 | 
							
								                .execute(function() {
							 | 
						||
| 
								 | 
							
								                  const elem = document.getElementById('thetext');
							 | 
						||
| 
								 | 
							
								                  const zone = window['Zone'] ? Zone.current.fork({name: 'webdriver'}) : null;
							 | 
						||
| 
								 | 
							
								                  if (zone) {
							 | 
						||
| 
								 | 
							
								                    zone.run(function() {
							 | 
						||
| 
								 | 
							
								                      elem.addEventListener('click', function(e) {
							 | 
						||
| 
								 | 
							
								                        e.target.innerText = 'clicked' + Zone.current.name;
							 | 
						||
| 
								 | 
							
								                      });
							 | 
						||
| 
								 | 
							
								                    });
							 | 
						||
| 
								 | 
							
								                  } else {
							 | 
						||
| 
								 | 
							
								                    elem.addEventListener('click', function(e) { e.target.innerText = 'clicked'; });
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                })
							 | 
						||
| 
								 | 
							
								                .click('#thetext')
							 | 
						||
| 
								 | 
							
								                .getText('#thetext')
							 | 
						||
| 
								 | 
							
								                .then(
							 | 
						||
| 
								 | 
							
								                    (text => {
							 | 
						||
| 
								 | 
							
								                      if (text !== 'clickedwebdriver') {
							 | 
						||
| 
								 | 
							
								                        errors.push(`Env: ${key}, expected clickedwebdriver, get ${text}`);
							 | 
						||
| 
								 | 
							
								                      }
							 | 
						||
| 
								 | 
							
								                    }),
							 | 
						||
| 
								 | 
							
								                    (error) => { errors.push(`Env: ${key}, error occurs: ${error}`); })
							 | 
						||
| 
								 | 
							
								                .end();
							 | 
						||
| 
								 | 
							
								  tasks.push(p);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function exit(exitCode) {
							 | 
						||
| 
								 | 
							
								  const http = require('http');
							 | 
						||
| 
								 | 
							
								  http.get('http://localhost:8080/close', () => { process.exit(exitCode); });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.all(tasks).then(() => {
							 | 
						||
| 
								 | 
							
								  if (errors.length > 0) {
							 | 
						||
| 
								 | 
							
								    let nonTimeoutError = false;
							 | 
						||
| 
								 | 
							
								    errors.forEach(error => {
							 | 
						||
| 
								 | 
							
								      console.log(error);
							 | 
						||
| 
								 | 
							
								      if (error.toString().lastIndexOf('timeout') === -1) {
							 | 
						||
| 
								 | 
							
								        nonTimeoutError = true;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    if (nonTimeoutError) {
							 | 
						||
| 
								 | 
							
								      exit(1);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      exit(0);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    exit(0);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 |