angular-cn/packages/zone.js/test/webdriver/test.sauce.es2015.js

110 lines
3.2 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);
}
});