mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
build: simplify karma configuration (#2823)
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
* Browser Configuration for the different jobs in the CI.
|
||||
* Target can be either: BS (Browserstack) | SL (Saucelabs) | null (To not run at all)
|
||||
*/
|
||||
const browserConfig = {
|
||||
'Chrome': { unitTest: {target: 'SL', required: true }},
|
||||
'Firefox': { unitTest: {target: 'SL', required: true }},
|
||||
'ChromeBeta': { unitTest: {target: 'SL', required: false }},
|
||||
'FirefoxBeta': { unitTest: {target: null, required: false }},
|
||||
'ChromeDev': { unitTest: {target: null, required: true }},
|
||||
'FirefoxDev': { unitTest: {target: null, required: true }},
|
||||
'IE9': { unitTest: {target: null, required: false }},
|
||||
'IE10': { unitTest: {target: null, required: true }},
|
||||
'IE11': { unitTest: {target: 'SL', required: true }},
|
||||
'Edge': { unitTest: {target: 'SL', required: true }},
|
||||
'Android4.1': { unitTest: {target: null, required: false }},
|
||||
'Android4.2': { unitTest: {target: null, required: false }},
|
||||
'Android4.3': { unitTest: {target: null, required: false }},
|
||||
'Android4.4': { unitTest: {target: 'SL', required: false }},
|
||||
'Android5': { unitTest: {target: 'SL', required: false }},
|
||||
'Safari7': { unitTest: {target: null, required: false }},
|
||||
'Safari8': { unitTest: {target: 'BS', required: false }},
|
||||
'Safari9': { unitTest: {target: 'BS', required: false }},
|
||||
'iOS7': { unitTest: {target: null, required: false }},
|
||||
'iOS8': { unitTest: {target: null, required: false }},
|
||||
'iOS9': { unitTest: {target: 'BS', required: true }},
|
||||
'WindowsPhone': { unitTest: {target: 'BS', required: false }}
|
||||
};
|
||||
|
||||
/** Exports all available remote browsers. */
|
||||
exports.customLaunchers = require('./remote_browsers.json');
|
||||
|
||||
/** Exports a map of configured browsers, which should run on the CI. */
|
||||
exports.platformMap = {
|
||||
'saucelabs': {
|
||||
required: buildConfiguration('unitTest', 'SL', true),
|
||||
optional: buildConfiguration('unitTest', 'SL', false)
|
||||
},
|
||||
'browserstack': {
|
||||
required: buildConfiguration('unitTest', 'BS', true),
|
||||
optional: buildConfiguration('unitTest', 'BS', false)
|
||||
},
|
||||
};
|
||||
|
||||
/** Build a list of configuration (custom launcher names). */
|
||||
function buildConfiguration(type, target, required) {
|
||||
return Object.keys(browserConfig)
|
||||
.map(item => [item, browserConfig[item][type]])
|
||||
.filter(([, conf]) => conf.required === required && conf.target === target)
|
||||
.map(([item]) => `${target}_${item.toUpperCase()}`);
|
||||
}
|
||||
|
||||
/** Decode the token for Travis to use. */
|
||||
function decodeToken(token) {
|
||||
return (token || '').split('').reverse().join('');
|
||||
}
|
||||
|
||||
|
||||
/** Ensures that the Travis access keys work properly. */
|
||||
if (process.env.TRAVIS) {
|
||||
process.env.SAUCE_ACCESS_KEY = decodeToken(process.env.SAUCE_ACCESS_KEY);
|
||||
process.env.BROWSER_STACK_ACCESS_KEY = decodeToken(process.env.BROWSER_STACK_ACCESS_KEY);
|
||||
}
|
||||
@@ -1,357 +0,0 @@
|
||||
type ContextConfigurationInfo = { target: string, required: boolean };
|
||||
export interface ConfigurationInfo {
|
||||
unitTest: ContextConfigurationInfo;
|
||||
e2e: ContextConfigurationInfo;
|
||||
};
|
||||
|
||||
export interface BrowserLauncherInfo {
|
||||
base: string;
|
||||
flags?: string[];
|
||||
version?: string;
|
||||
platform?: string;
|
||||
device?: string;
|
||||
browser?: string;
|
||||
browser_version?: string;
|
||||
os?: string;
|
||||
os_version?: string;
|
||||
};
|
||||
|
||||
export type AliasMap = { [name: string]: string[] };
|
||||
|
||||
|
||||
// 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 Travis configuration.
|
||||
const configuration: { [name: string]: ConfigurationInfo } = {
|
||||
'Chrome': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
||||
'Firefox': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
||||
'ChromeBeta': { unitTest: {target: 'SL', required: false}, e2e: {target: null, required: true}},
|
||||
'FirefoxBeta': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'ChromeDev': { unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
|
||||
'FirefoxDev': { unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
|
||||
'IE9': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'IE10': { unitTest: {target: null, required: true}, e2e: {target: null, required: true}},
|
||||
'IE11': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
||||
'Edge': { unitTest: {target: 'SL', required: true}, e2e: {target: null, required: true}},
|
||||
'Android4.1': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'Android4.2': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'Android4.3': { unitTest: {target: null, 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}},
|
||||
'Safari7': { unitTest: {target: null, 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}},
|
||||
'iOS7': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'iOS8': { unitTest: {target: null, required: false}, e2e: {target: null, required: true}},
|
||||
'iOS9': { unitTest: {target: 'BS', required: true}, e2e: {target: null, required: true}},
|
||||
'WindowsPhone': { unitTest: {target: 'BS', required: false}, e2e: {target: null, required: true}}
|
||||
};
|
||||
|
||||
export const customLaunchers: { [name: string]: BrowserLauncherInfo } = {
|
||||
'ChromeNoSandbox': {
|
||||
base: 'Chrome',
|
||||
flags: ['--no-sandbox']
|
||||
},
|
||||
// Chrome set to 1024x768 resolution for *local testing only*.
|
||||
// On CI, both SauceLabs and Browserstack already default all browser window sizes to 1024x768.
|
||||
'Chrome_1024x768': {
|
||||
base : 'Chrome',
|
||||
flags: ['--window-size=1024,768']
|
||||
},
|
||||
'SL_CHROME': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'chrome',
|
||||
version: 'latest'
|
||||
},
|
||||
'SL_CHROMEBETA': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'chrome',
|
||||
version: 'beta'
|
||||
},
|
||||
'SL_CHROMEDEV': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'chrome',
|
||||
version: 'dev'
|
||||
},
|
||||
'SL_FIREFOX': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'firefox',
|
||||
version: 'latest'
|
||||
},
|
||||
'SL_FIREFOXBETA': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'firefox',
|
||||
version: 'beta'
|
||||
},
|
||||
'SL_FIREFOXDEV': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'firefox',
|
||||
version: 'dev'
|
||||
},
|
||||
'SL_SAFARI7': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'safari',
|
||||
platform: 'OS X 10.9',
|
||||
version: '7'
|
||||
},
|
||||
'SL_SAFARI8': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'safari',
|
||||
platform: 'OS X 10.10',
|
||||
version: '8'
|
||||
},
|
||||
'SL_SAFARI9': {
|
||||
base: 'SauceLabs',
|
||||
browserName: 'safari',
|
||||
platform: 'OS X 10.11',
|
||||
version: '9.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.1'
|
||||
},
|
||||
'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'
|
||||
},
|
||||
'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'
|
||||
},
|
||||
|
||||
'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_IOS7': {
|
||||
base: 'BrowserStack',
|
||||
device: 'iPhone 5S',
|
||||
os: 'ios',
|
||||
os_version: '7.0',
|
||||
resolution: '1024x768'
|
||||
},
|
||||
'BS_IOS8': {
|
||||
base: 'BrowserStack',
|
||||
device: 'iPhone 6',
|
||||
os: 'ios',
|
||||
os_version: '8.3',
|
||||
resolution: '1024x768'
|
||||
},
|
||||
'BS_IOS9': {
|
||||
base: 'BrowserStack',
|
||||
device: 'iPhone 6S',
|
||||
os: 'ios',
|
||||
os_version: '9.0',
|
||||
resolution: '1024x768'
|
||||
},
|
||||
'BS_IE9': {
|
||||
base: 'BrowserStack',
|
||||
browser: 'ie',
|
||||
browser_version: '9.0',
|
||||
os: 'Windows',
|
||||
os_version: '7'
|
||||
},
|
||||
'BS_IE10': {
|
||||
base: 'BrowserStack',
|
||||
browser: 'ie',
|
||||
browser_version: '10.0',
|
||||
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_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'
|
||||
}
|
||||
};
|
||||
|
||||
const sauceAliases: AliasMap = {
|
||||
'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'],
|
||||
'MOBILE': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5',
|
||||
'SL_IOS7', 'SL_IOS8', 'SL_IOS9'],
|
||||
'ANDROID': ['SL_ANDROID4.1', 'SL_ANDROID4.2', 'SL_ANDROID4.3', 'SL_ANDROID4.4', 'SL_ANDROID5'],
|
||||
'IE': ['SL_IE9', 'SL_IE10', 'SL_IE11'],
|
||||
'IOS': ['SL_IOS7', 'SL_IOS8', 'SL_IOS9'],
|
||||
'SAFARI': ['SL_SAFARI7', 'SL_SAFARI8', 'SL_SAFARI9'],
|
||||
'BETA': ['SL_CHROMEBETA', 'SL_FIREFOXBETA'],
|
||||
'DEV': ['SL_CHROMEDEV', 'SL_FIREFOXDEV'],
|
||||
'REQUIRED': buildConfiguration('unitTest', 'SL', true),
|
||||
'OPTIONAL': buildConfiguration('unitTest', 'SL', false)
|
||||
};
|
||||
|
||||
const browserstackAliases: AliasMap = {
|
||||
'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'],
|
||||
'MOBILE': ['BS_ANDROID4.3', 'BS_ANDROID4.4', 'BS_IOS7', 'BS_IOS8', 'BS_IOS9', 'BS_WINDOWSPHONE'],
|
||||
'ANDROID': ['BS_ANDROID4.3', 'BS_ANDROID4.4'],
|
||||
'IE': ['BS_IE9', 'BS_IE10', 'BS_IE11'],
|
||||
'IOS': ['BS_IOS7', 'BS_IOS8', 'BS_IOS9'],
|
||||
'SAFARI': ['BS_SAFARI7', 'BS_SAFARI8', 'BS_SAFARI9'],
|
||||
'REQUIRED': buildConfiguration('unitTest', 'BS', true),
|
||||
'OPTIONAL': buildConfiguration('unitTest', 'BS', false)
|
||||
};
|
||||
|
||||
export const platformMap: { [name: string]: AliasMap } = {
|
||||
'saucelabs': sauceAliases,
|
||||
'browserstack': browserstackAliases,
|
||||
};
|
||||
|
||||
|
||||
/** Decode the token for Travis to use. */
|
||||
function decode(str: string): string {
|
||||
return (str || '').split('').reverse().join('');
|
||||
}
|
||||
|
||||
|
||||
/** Setup the access keys */
|
||||
if (process.env.TRAVIS) {
|
||||
process.env.SAUCE_ACCESS_KEY = decode(process.env.SAUCE_ACCESS_KEY);
|
||||
process.env.BROWSER_STACK_ACCESS_KEY = decode(process.env.BROWSER_STACK_ACCESS_KEY);
|
||||
}
|
||||
|
||||
/** Build a list of configuration (custom launcher names). */
|
||||
function buildConfiguration(type: string, target: string, required: boolean): string[] {
|
||||
return Object.keys(configuration)
|
||||
.map(item => [item, configuration[item][type]])
|
||||
.filter(([item, conf]) => conf.required == required && conf.target == target)
|
||||
.map(([item, conf]) => `${target}_${item.toUpperCase()}`);
|
||||
}
|
||||
+106
-25
@@ -1,32 +1,113 @@
|
||||
// This file only hook up on require calls to transpile the TypeScript.
|
||||
// If you're looking at this file to see Karma configuration, you should look at
|
||||
// karma.config.ts instead.
|
||||
const path = require('path');
|
||||
const {customLaunchers, platformMap} = require('./browser-providers');
|
||||
|
||||
const fs = require('fs');
|
||||
const ts = require('typescript');
|
||||
module.exports = (config) => {
|
||||
|
||||
const old = require.extensions['.ts'];
|
||||
config.set({
|
||||
basePath: path.join(__dirname, '..'),
|
||||
frameworks: ['jasmine'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-browserstack-launcher'),
|
||||
require('karma-sauce-launcher'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-firefox-launcher'),
|
||||
require('karma-sourcemap-loader')
|
||||
],
|
||||
files: [
|
||||
{pattern: 'dist/vendor/core-js/client/core.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/systemjs/dist/system-polyfills.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/systemjs/dist/system.src.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/zone.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/proxy.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/sync-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/jasmine-patch.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/async-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/fake-async-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/hammerjs/hammer.min.js', included: true, watched: false},
|
||||
{pattern: 'test/karma-test-shim.js', included: true, watched: false},
|
||||
|
||||
require.extensions['.ts'] = function(m, filename) {
|
||||
// If we're in node module, either call the old hook or simply compile the
|
||||
// file without transpilation. We do not touch node_modules/**.
|
||||
if (filename.match(/node_modules/)) {
|
||||
if (old) {
|
||||
return old(m, filename);
|
||||
}
|
||||
return m._compile(fs.readFileSync(filename), filename);
|
||||
}
|
||||
// paths loaded via module imports
|
||||
{pattern: 'dist/**/*.js', included: false, watched: true},
|
||||
|
||||
// Node requires all require hooks to be sync.
|
||||
const source = fs.readFileSync(filename).toString();
|
||||
const result = ts.transpile(source, {
|
||||
target: ts.ScriptTarget.ES5,
|
||||
module: ts.ModuleKind.CommonJs,
|
||||
// include one of the themes
|
||||
{pattern: 'dist/**/prebuilt/indigo-pink.css', included: true, watched: true},
|
||||
|
||||
// paths loaded via Angular's component compiler
|
||||
// (these paths need to be rewritten, see proxies section)
|
||||
{pattern: 'dist/**/*.html', included: false, watched: true},
|
||||
{pattern: 'dist/**/*.css', included: false, watched: true},
|
||||
|
||||
// paths to support debugging with source maps in dev tools
|
||||
{pattern: 'dist/**/*.ts', included: false, watched: false},
|
||||
{pattern: 'dist/**/*.js.map', included: false, watched: false}
|
||||
],
|
||||
proxies: {
|
||||
// required for component assets fetched by Angular's compiler
|
||||
'/components/': '/base/dist/components/',
|
||||
'/core/': '/base/dist/core/',
|
||||
},
|
||||
|
||||
customLaunchers: customLaunchers,
|
||||
|
||||
exclude: [],
|
||||
preprocessors: {
|
||||
'**/*.js': ['sourcemap']
|
||||
},
|
||||
reporters: ['dots'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: false,
|
||||
|
||||
sauceLabs: {
|
||||
testName: 'material2',
|
||||
startConnect: false,
|
||||
recordVideo: false,
|
||||
recordScreenshots: false,
|
||||
options: {
|
||||
'selenium-version': '2.48.2',
|
||||
'command-timeout': 600,
|
||||
'idle-timeout': 600,
|
||||
'max-duration': 5400
|
||||
}
|
||||
},
|
||||
|
||||
browserStack: {
|
||||
project: 'material2',
|
||||
startTunnel: false,
|
||||
retryLimit: 1,
|
||||
timeout: 600,
|
||||
pollingTimeout: 20000
|
||||
},
|
||||
|
||||
browserDisconnectTimeout: 20000,
|
||||
browserNoActivityTimeout: 240000,
|
||||
captureTimeout: 120000,
|
||||
browsers: ['Chrome_1024x768'],
|
||||
|
||||
singleRun: false
|
||||
});
|
||||
|
||||
// Send it to node to execute.
|
||||
return m._compile(result, filename);
|
||||
};
|
||||
if (process.env['TRAVIS']) {
|
||||
let buildId = `TRAVIS #${process.env.TRAVIS_BUILD_NUMBER} (${process.env.TRAVIS_BUILD_ID})`;
|
||||
|
||||
// Import the TS once we know it's safe to require.
|
||||
module.exports = require('./karma.config.ts').config;
|
||||
// The MODE variable is the indicator of what row in the test matrix we're running.
|
||||
// It will look like <platform>_<alias>, where platform is one of 'saucelabs' or 'browserstack',
|
||||
// and alias is one of the keys in the CI configuration variable declared in
|
||||
// browser-providers.ts.
|
||||
let [platform, alias] = process.env.MODE.split('_');
|
||||
|
||||
if (platform === 'saucelabs') {
|
||||
config.sauceLabs.build = buildId;
|
||||
config.sauceLabs.tunnelIdentifier = process.env.TRAVIS_JOB_ID;
|
||||
} else if (platform === 'browserstack') {
|
||||
config.browserStack.build = buildId;
|
||||
config.browserStack.tunnelIdentifier = process.env.TRAVIS_JOB_ID;
|
||||
} else {
|
||||
throw new Error(`Platform "${platform}" unknown, but Travis specified. Exiting.`);
|
||||
}
|
||||
|
||||
config.browsers = platformMap[platform][alias.toLowerCase()];
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
// This file is named differently than its JS bootstrapper to avoid the ts compiler to overwrite it.
|
||||
|
||||
import path = require('path');
|
||||
import {
|
||||
customLaunchers,
|
||||
platformMap,
|
||||
} from './browser-providers';
|
||||
|
||||
|
||||
export function config(config) {
|
||||
config.set({
|
||||
basePath: path.join(__dirname, '..'),
|
||||
frameworks: ['jasmine'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-browserstack-launcher'),
|
||||
require('karma-sauce-launcher'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-firefox-launcher'),
|
||||
require('karma-sourcemap-loader')
|
||||
],
|
||||
files: [
|
||||
{pattern: 'dist/vendor/core-js/client/core.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/systemjs/dist/system-polyfills.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/systemjs/dist/system.src.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/zone.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/proxy.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/sync-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/jasmine-patch.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/async-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/zone.js/dist/fake-async-test.js', included: true, watched: false},
|
||||
{pattern: 'dist/vendor/hammerjs/hammer.min.js', included: true, watched: false},
|
||||
{pattern: 'test/karma-test-shim.js', included: true, watched: false},
|
||||
|
||||
// paths loaded via module imports
|
||||
{pattern: 'dist/**/*.js', included: false, watched: true},
|
||||
|
||||
// include one of the themes
|
||||
{pattern: 'dist/**/prebuilt/indigo-pink.css', included: true, watched: true},
|
||||
|
||||
// paths loaded via Angular's component compiler
|
||||
// (these paths need to be rewritten, see proxies section)
|
||||
{pattern: 'dist/**/*.html', included: false, watched: true},
|
||||
{pattern: 'dist/**/*.css', included: false, watched: true},
|
||||
|
||||
// paths to support debugging with source maps in dev tools
|
||||
{pattern: 'dist/**/*.ts', included: false, watched: false},
|
||||
{pattern: 'dist/**/*.js.map', included: false, watched: false}
|
||||
],
|
||||
proxies: {
|
||||
// required for component assets fetched by Angular's compiler
|
||||
'/components/': '/base/dist/components/',
|
||||
'/core/': '/base/dist/core/',
|
||||
},
|
||||
|
||||
customLaunchers: customLaunchers,
|
||||
|
||||
exclude: [],
|
||||
preprocessors: {
|
||||
'**/*.js': ['sourcemap']
|
||||
},
|
||||
reporters: ['dots'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: false,
|
||||
|
||||
sauceLabs: {
|
||||
testName: 'material2',
|
||||
startConnect: false,
|
||||
recordVideo: false,
|
||||
recordScreenshots: false,
|
||||
options: {
|
||||
'selenium-version': '2.48.2',
|
||||
'command-timeout': 600,
|
||||
'idle-timeout': 600,
|
||||
'max-duration': 5400
|
||||
}
|
||||
},
|
||||
|
||||
browserStack: {
|
||||
project: 'material2',
|
||||
startTunnel: false,
|
||||
retryLimit: 1,
|
||||
timeout: 600,
|
||||
pollingTimeout: 20000
|
||||
},
|
||||
|
||||
browserDisconnectTimeout: 20000,
|
||||
browserNoActivityTimeout: 240000,
|
||||
captureTimeout: 120000,
|
||||
browsers: ['Chrome_1024x768'],
|
||||
|
||||
singleRun: false
|
||||
});
|
||||
|
||||
if (process.env['TRAVIS']) {
|
||||
let buildId = `TRAVIS #${process.env.TRAVIS_BUILD_NUMBER} (${process.env.TRAVIS_BUILD_ID})`;
|
||||
|
||||
// The MODE variable is the indicator of what row in the test matrix we're running.
|
||||
// It will look like <platform>_<alias>, where platform is one of 'saucelabs' or 'browserstack',
|
||||
// and alias is one of the keys in the CIconfiguration variable declared in
|
||||
// browser-providers.ts.
|
||||
let [platform, alias] = process.env.MODE.split('_');
|
||||
|
||||
if (platform === 'saucelabs') {
|
||||
config.sauceLabs.build = buildId;
|
||||
config.sauceLabs.tunnelIdentifier = process.env.TRAVIS_JOB_ID;
|
||||
} else if (platform === 'browserstack') {
|
||||
config.browserStack.build = buildId;
|
||||
config.browserStack.tunnelIdentifier = process.env.TRAVIS_JOB_ID;
|
||||
} else {
|
||||
throw new Error(`Platform "${platform}" unknown, but Travis specified. Exiting.`);
|
||||
}
|
||||
|
||||
config.browsers = platformMap[platform][alias.toUpperCase()];
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"ChromeNoSandbox": {
|
||||
"base": "Chrome",
|
||||
"flags": [
|
||||
"--no-sandbox"
|
||||
]
|
||||
},
|
||||
"Chrome_1024x768": {
|
||||
"base": "Chrome",
|
||||
"flags": [
|
||||
"--window-size=1024,768"
|
||||
]
|
||||
},
|
||||
"SL_CHROME": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "chrome",
|
||||
"version": "latest"
|
||||
},
|
||||
"SL_CHROMEBETA": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "chrome",
|
||||
"version": "beta"
|
||||
},
|
||||
"SL_CHROMEDEV": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "chrome",
|
||||
"version": "dev"
|
||||
},
|
||||
"SL_FIREFOX": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "firefox",
|
||||
"version": "latest"
|
||||
},
|
||||
"SL_FIREFOXBETA": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "firefox",
|
||||
"version": "beta"
|
||||
},
|
||||
"SL_FIREFOXDEV": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "firefox",
|
||||
"version": "dev"
|
||||
},
|
||||
"SL_SAFARI7": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "safari",
|
||||
"platform": "OS X 10.9",
|
||||
"version": "7"
|
||||
},
|
||||
"SL_SAFARI8": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "safari",
|
||||
"platform": "OS X 10.10",
|
||||
"version": "8"
|
||||
},
|
||||
"SL_SAFARI9": {
|
||||
"base": "SauceLabs",
|
||||
"browserName": "safari",
|
||||
"platform": "OS X 10.11",
|
||||
"version": "9.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.1"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"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_IOS7": {
|
||||
"base": "BrowserStack",
|
||||
"device": "iPhone 5S",
|
||||
"os": "ios",
|
||||
"os_version": "7.0",
|
||||
"resolution": "1024x768"
|
||||
},
|
||||
"BS_IOS8": {
|
||||
"base": "BrowserStack",
|
||||
"device": "iPhone 6",
|
||||
"os": "ios",
|
||||
"os_version": "8.3",
|
||||
"resolution": "1024x768"
|
||||
},
|
||||
"BS_IOS9": {
|
||||
"base": "BrowserStack",
|
||||
"device": "iPhone 6S",
|
||||
"os": "ios",
|
||||
"os_version": "9.0",
|
||||
"resolution": "1024x768"
|
||||
},
|
||||
"BS_IE9": {
|
||||
"base": "BrowserStack",
|
||||
"browser": "ie",
|
||||
"browser_version": "9.0",
|
||||
"os": "Windows",
|
||||
"os_version": "7"
|
||||
},
|
||||
"BS_IE10": {
|
||||
"base": "BrowserStack",
|
||||
"browser": "ie",
|
||||
"browser_version": "10.0",
|
||||
"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_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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user