2019-05-31 11:56:07 -04: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
|
|
|
|
*/
|
|
|
|
|
|
|
|
const webdriverio = require('webdriverio');
|
|
|
|
const desiredCapabilities = {
|
|
|
|
firefox52Win7: {browserName: 'firefox', platform: 'Windows 7', version: '52'},
|
|
|
|
firefox53Win7: {browserName: 'firefox', platform: 'Windows 7', version: '53'},
|
|
|
|
edge14: {browserName: 'MicrosoftEdge', platform: 'Windows 10', version: '14.14393'},
|
|
|
|
edge15: {browserName: 'MicrosoftEdge', platform: 'Windows 10', version: '15.15063'},
|
|
|
|
chrome48: {browserName: 'chrome', version: '48'},
|
|
|
|
safari8: {browserName: 'safari', platform: 'OS X 10.10', version: '8.0'},
|
|
|
|
safari9: {browserName: 'safari', platform: 'OS X 10.11', version: '9.0'},
|
|
|
|
safari10: {browserName: 'safari', platform: 'OS X 10.11', version: '10.0'},
|
|
|
|
safari11: {browserName: 'safari', platform: 'macOS 10.13', version: '11.1'},
|
|
|
|
/*ios84: {browserName: 'iphone', platform: 'OS X 10.10', version: '8.4'},*/
|
|
|
|
ios10: {browserName: 'iphone', platform: 'OS X 10.10', version: '10.3'},
|
|
|
|
ios11: {browserName: 'iphone', platform: 'OS X 10.12', version: '11.2'},
|
|
|
|
/*
|
|
|
|
ie9: {
|
|
|
|
browserName: 'internet explorer',
|
|
|
|
platform: 'Windows 2008',
|
|
|
|
version: '9'
|
|
|
|
},*/
|
|
|
|
/*
|
|
|
|
ie10: {
|
|
|
|
browserName: 'internet explorer',
|
|
|
|
platform: 'Windows 2012',
|
|
|
|
version: '10'
|
|
|
|
},*/
|
|
|
|
ie11: {browserName: 'internet explorer', platform: 'Windows 10', version: '11'},
|
|
|
|
// andriod44: {browserName: 'android', platform: 'Linux', version: '4.4'},
|
|
|
|
android51: {browserName: 'android', platform: 'Linux', version: '5.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.html')
|
2020-04-13 19:40:21 -04:00
|
|
|
.executeAsync(function(done) {
|
|
|
|
window.setTimeout(done, 1000)
|
|
|
|
})
|
2019-05-31 11:56:07 -04:00
|
|
|
.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 {
|
2020-04-13 19:40:21 -04:00
|
|
|
elem.addEventListener('click', function(e) {
|
|
|
|
e.target.innerText = 'clicked';
|
|
|
|
});
|
2019-05-31 11:56:07 -04:00
|
|
|
}
|
|
|
|
})
|
|
|
|
.click('#thetext')
|
|
|
|
.getText('#thetext')
|
|
|
|
.then(
|
|
|
|
(text => {
|
|
|
|
if (text !== 'clickedwebdriver') {
|
|
|
|
errors.push(`Env: ${key}, expected clickedwebdriver, get ${text}`);
|
|
|
|
}
|
|
|
|
}),
|
2020-04-13 19:40:21 -04:00
|
|
|
(error) => {
|
|
|
|
errors.push(`Env: ${key}, error occurs: ${error}`);
|
|
|
|
})
|
2019-05-31 11:56:07 -04:00
|
|
|
.end();
|
|
|
|
tasks.push(p);
|
|
|
|
});
|
|
|
|
|
|
|
|
function exit(exitCode) {
|
|
|
|
const http = require('http');
|
2020-04-13 19:40:21 -04:00
|
|
|
http.get('http://localhost:8080/close', () => {
|
|
|
|
process.exit(exitCode);
|
|
|
|
});
|
2019-05-31 11:56:07 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
});
|