c9810064cb
With 0f1da49b867af60748570b10997fee9d9511424a, the Chrome beta job has been disabled because a new Chrome beta has been released, but Saucelabs didn't support a chromedriver that is compatible with that given beta version. Now the topic of pinning these external browsers to a specific version came up. In order to make the build less prone to unexpected new versions, we need to _permanently_ disable the Chrome beta browser. Otherwise pinning `SL_CHROME` to a specific version does not statisfy the requirement of making the CI jobs more deterministic. See original discussion: https://github.com/angular/angular/pull/29518#discussion_r269140676 Chrome can be pinned to Chrome v73 (latest stable version at time of this commit) Firefox can be pinned to Firefox v65 (latest stable version available in Saucelabs platform) PR Close #29529
202 lines
10 KiB
JavaScript
202 lines
10 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
|
|
*/
|
|
|
|
// Unique place to configure the browsers which are used in the different CI jobs in Sauce Labs (SL)
|
|
// and BrowserStack (BS).
|
|
// If the target is set to null, then the browser is not run anywhere during CI.
|
|
// If a category becomes empty (e.g. BS and required), then the corresponding job must be commented
|
|
// out in the CI configuration.
|
|
var CIconfiguration = {
|
|
'Chrome': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
'Firefox': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
// Disabled because using the "beta" channel of Chrome can cause non-deterministic CI results.
|
|
// e.g. a new chrome beta version has been released, but the Saucelabs selenium server does
|
|
// not provide a chromedriver version that is compatible with the new beta.
|
|
'ChromeBeta': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: false}},
|
|
'ChromeDev': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
// FirefoxBeta and FirefoxDev should be target:'BS' or target:'SL', and required:true
|
|
// Currently deactivated due to https://github.com/angular/angular/issues/7560
|
|
'FirefoxBeta': {unitTest: {target: null, required: true}, e2e: {target: null, required: false}},
|
|
'FirefoxDev': {unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
|
|
'IE9': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
'IE10': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
'IE11': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
'Edge': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
'Android4.4': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
'Android5': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
'Android6': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
'Android7': {unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
|
'Safari7': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'Safari8': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'Safari9': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'Safari10': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'iOS7': {unitTest: {target: 'BS', required: true}, e2e: {target: null, required: true}},
|
|
'iOS8': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'iOS9': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}},
|
|
'iOS10': {unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
|
'WindowsPhone': {unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}}
|
|
};
|
|
|
|
var customLaunchers = {
|
|
'DartiumWithWebPlatform':
|
|
{base: 'Dartium', flags: ['--enable-experimental-web-platform-features']},
|
|
'ChromeNoSandbox': {base: 'Chrome', flags: ['--no-sandbox']},
|
|
'SL_CHROME': {base: 'SauceLabs', browserName: 'chrome', version: '73'},
|
|
'SL_CHROMEBETA': {base: 'SauceLabs', browserName: 'chrome', version: 'beta'},
|
|
'SL_CHROMEDEV': {base: 'SauceLabs', browserName: 'chrome', version: 'dev'},
|
|
'SL_FIREFOX': {base: 'SauceLabs', browserName: 'firefox', version: '65'},
|
|
'SL_FIREFOXBETA':
|
|
{base: 'SauceLabs', platform: 'Windows 10', browserName: 'firefox', version: 'beta'},
|
|
'SL_FIREFOXDEV':
|
|
{base: 'SauceLabs', platform: 'Windows 10', browserName: 'firefox', version: 'dev'},
|
|
'SL_SAFARI7': {base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.9', version: '7.0'},
|
|
'SL_SAFARI8': {base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.10', version: '8.0'},
|
|
'SL_SAFARI9': {base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.11', version: '9.0'},
|
|
'SL_SAFARI10':
|
|
{base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.12', version: '10.0'},
|
|
'SL_IOS7': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: '7.1'},
|
|
'SL_IOS8': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: '8.4'},
|
|
'SL_IOS9': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: '9.3'},
|
|
'SL_IOS10': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: '10.0'},
|
|
'SL_IE9':
|
|
{base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 2008', version: '9'},
|
|
'SL_IE10': {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 2012',
|
|
version: '10'
|
|
},
|
|
'SL_IE11':
|
|
{base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 8.1', version: '11'},
|
|
'SL_EDGE': {
|
|
base: 'SauceLabs',
|
|
browserName: 'MicrosoftEdge',
|
|
platform: 'Windows 10',
|
|
version: '14.14393'
|
|
},
|
|
'SL_ANDROID4.1': {base: 'SauceLabs', browserName: 'android', platform: 'Linux', version: '4.1'},
|
|
'SL_ANDROID4.2': {base: 'SauceLabs', browserName: 'android', platform: 'Linux', version: '4.2'},
|
|
'SL_ANDROID4.3': {base: 'SauceLabs', browserName: 'android', platform: 'Linux', version: '4.3'},
|
|
'SL_ANDROID4.4': {base: 'SauceLabs', browserName: 'android', platform: 'Linux', version: '4.4'},
|
|
'SL_ANDROID5': {base: 'SauceLabs', browserName: 'android', platform: 'Linux', version: '5.1'},
|
|
'SL_ANDROID6': {
|
|
base: 'SauceLabs',
|
|
browserName: 'Chrome',
|
|
platform: 'Android',
|
|
version: '6.0',
|
|
device: 'Android Emulator'
|
|
},
|
|
'SL_ANDROID7': {
|
|
base: 'SauceLabs',
|
|
browserName: 'Chrome',
|
|
platform: 'Android',
|
|
version: '7.1',
|
|
device: 'Android GoogleAPI Emulator'
|
|
},
|
|
|
|
'BS_CHROME': {base: 'BrowserStack', browser: 'chrome', os: 'OS X', os_version: 'Yosemite'},
|
|
'BS_FIREFOX': {base: 'BrowserStack', browser: 'firefox', os: 'Windows', os_version: '10'},
|
|
'BS_SAFARI7': {base: 'BrowserStack', browser: 'safari', os: 'OS X', os_version: 'Mavericks'},
|
|
'BS_SAFARI8': {base: 'BrowserStack', browser: 'safari', os: 'OS X', os_version: 'Yosemite'},
|
|
'BS_SAFARI9': {base: 'BrowserStack', browser: 'safari', os: 'OS X', os_version: 'El Capitan'},
|
|
'BS_SAFARI10': {base: 'BrowserStack', browser: 'safari', os: 'OS X', os_version: 'Sierra'},
|
|
'BS_IOS7': {base: 'BrowserStack', device: 'iPhone 5S', os: 'ios', os_version: '7.0'},
|
|
'BS_IOS8': {base: 'BrowserStack', device: 'iPhone 6', os: 'ios', os_version: '8.3'},
|
|
'BS_IOS9': {base: 'BrowserStack', device: 'iPhone 6S', os: 'ios', os_version: '9.1'},
|
|
'BS_IOS10': {base: 'BrowserStack', device: 'iPhone SE', os: 'ios', os_version: '10.0'},
|
|
'BS_IE9':
|
|
{base: 'BrowserStack', browser: 'ie', browser_version: '9.0', os: 'Windows', os_version: '7'},
|
|
'BS_IE10': {
|
|
base: 'BrowserStack',
|
|
browser: 'ie',
|
|
browser_version: '10.1',
|
|
os: 'Windows',
|
|
os_version: '8'
|
|
},
|
|
'BS_IE11': {
|
|
base: 'BrowserStack',
|
|
browser: 'ie',
|
|
browser_version: '11.0',
|
|
os: 'Windows',
|
|
os_version: '10'
|
|
},
|
|
'BS_EDGE': {base: 'BrowserStack', browser: 'edge', os: 'Windows', os_version: '10'},
|
|
'BS_WINDOWSPHONE':
|
|
{base: 'BrowserStack', device: 'Nokia Lumia 930', os: 'winphone', os_version: '8.1'},
|
|
'BS_ANDROID7': {base: 'BrowserStack', device: 'Google Pixel', os: 'android', os_version: '7.1'},
|
|
'BS_ANDROID6': {base: 'BrowserStack', device: 'Google Nexus 6', os: 'android', os_version: '6.0'},
|
|
'BS_ANDROID5': {base: 'BrowserStack', device: 'Google Nexus 5', os: 'android', os_version: '5.0'},
|
|
'BS_ANDROID4.4': {base: 'BrowserStack', device: 'HTC One M8', os: 'android', os_version: '4.4'},
|
|
'BS_ANDROID4.3':
|
|
{base: 'BrowserStack', device: 'Samsung Galaxy S4', os: 'android', os_version: '4.3'},
|
|
'BS_ANDROID4.2':
|
|
{base: 'BrowserStack', device: 'Google Nexus 4', os: 'android', os_version: '4.2'},
|
|
'BS_ANDROID4.1':
|
|
{base: 'BrowserStack', device: 'Google Nexus 7', os: 'android', os_version: '4.1'}
|
|
};
|
|
|
|
var sauceAliases = {
|
|
'ALL': Object.keys(customLaunchers).filter(function(item) {
|
|
return customLaunchers[item].base == 'SauceLabs';
|
|
}),
|
|
'DESKTOP': [
|
|
'SL_CHROME', 'SL_FIREFOX', 'SL_IE9', 'SL_IE10', 'SL_IE11', 'SL_EDGE', 'SL_SAFARI7',
|
|
'SL_SAFARI8', 'SL_SAFARI9', 'SL_SAFARI10'
|
|
],
|
|
'MOBILE': [
|
|
'SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5',
|
|
'SL_ANDROID6', 'SL_ANDROID7', 'SL_IOS7', 'SL_IOS8', 'SL_IOS9', 'SL_IOS10'
|
|
],
|
|
'ANDROID': [
|
|
'SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5',
|
|
'SL_ANDROID6', 'SL_ANDROID7'
|
|
],
|
|
'IE': ['SL_IE9', 'SL_IE10', 'SL_IE11'],
|
|
'IOS': ['SL_IOS7', 'SL_IOS8', 'SL_IOS9', 'SL_IOS10'],
|
|
'SAFARI': ['SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9', 'SL_SAFARI10'],
|
|
'BETA': ['SL_CHROMEBETA', 'SL_FIREFOXBETA'],
|
|
'DEV': ['SL_CHROMEDEV', 'SL_FIREFOXDEV'],
|
|
'CI_REQUIRED': buildConfiguration('unitTest', 'SL', true),
|
|
'CI_OPTIONAL': buildConfiguration('unitTest', 'SL', false)
|
|
};
|
|
|
|
var browserstackAliases = {
|
|
'ALL': Object.keys(customLaunchers).filter(function(item) {
|
|
return customLaunchers[item].base == 'BrowserStack';
|
|
}),
|
|
'DESKTOP': [
|
|
'BS_CHROME', 'BS_FIREFOX', 'BS_IE9', 'BS_IE10', 'BS_IE11', 'BS_EDGE', 'BS_SAFARI7',
|
|
'BS_SAFARI8', 'BS_SAFARI9', 'BS_SAFARI10'
|
|
],
|
|
'MOBILE': [
|
|
'BS_ANDROID4.3', 'BS_ANDROID4.4', 'BS_ANDROID5', 'BS_ANDROID6', 'BS_ANDROID7', 'BS_IOS7',
|
|
'BS_IOS8', 'BS_IOS9', 'BS_IOS10', 'BS_WINDOWSPHONE'
|
|
],
|
|
'ANDROID': ['BS_ANDROID4.3', 'BS_ANDROID4.4', 'BS_ANDROID5', 'BS_ANDROID6', 'BS_ANDROID7'],
|
|
'IE': ['BS_IE9', 'BS_IE10', 'BS_IE11'],
|
|
'IOS': ['BS_IOS7', 'BS_IOS8', 'BS_IOS9', 'BS_IOS10'],
|
|
'SAFARI': ['BS_SAFARI7', 'BS_SAFARI8', 'BS_SAFARI9', 'BS_SAFARI10'],
|
|
'CI_REQUIRED': buildConfiguration('unitTest', 'BS', true),
|
|
'CI_OPTIONAL': buildConfiguration('unitTest', 'BS', false)
|
|
};
|
|
|
|
module.exports = {
|
|
customLaunchers: customLaunchers,
|
|
sauceAliases: sauceAliases,
|
|
browserstackAliases: browserstackAliases
|
|
};
|
|
|
|
function buildConfiguration(type, target, required) {
|
|
return Object.keys(CIconfiguration)
|
|
.filter((item) => {
|
|
var conf = CIconfiguration[item][type];
|
|
return conf.required === required && conf.target === target;
|
|
})
|
|
.map((item) => target + '_' + item.toUpperCase());
|
|
}
|