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