63 lines
2.7 KiB
JavaScript
63 lines
2.7 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
|
||
|
*/
|
||
|
'use strict';
|
||
|
|
||
|
const shell = require('shelljs');
|
||
|
const karmaBin = require.resolve('karma/bin/karma');
|
||
|
const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']);
|
||
|
const sauceService = runfiles.resolve(process.argv[2]);
|
||
|
process.argv = [
|
||
|
process.argv[0],
|
||
|
karmaBin,
|
||
|
...process.argv.splice(3),
|
||
|
];
|
||
|
try {
|
||
|
console.error(`Setting up environment for SauceLabs karma tests...`);
|
||
|
// KARMA_WEB_TEST_MODE is set which informs /karma-js.conf.js that it should
|
||
|
// run the test with the karma saucelabs launcher
|
||
|
process.env['KARMA_WEB_TEST_MODE'] = 'SL_REQUIRED';
|
||
|
// Setup required SAUCE_* env if they are not already set
|
||
|
if (!process.env['SAUCE_USERNAME'] || !process.env['SAUCE_ACCESS_KEY'] ||
|
||
|
!process.env['SAUCE_TUNNEL_IDENTIFIER']) {
|
||
|
try {
|
||
|
// The following path comes from /tools/saucelabs/sauce-service.sh.
|
||
|
// We setup the required saucelabs environment variables here for the karma test
|
||
|
// from a json file under /tmp/angular/sauce-service so that we don't break the
|
||
|
// test cache with a changing SAUCE_TUNNEL_IDENTIFIER provided through --test_env
|
||
|
const scParams = require('/tmp/angular/sauce-service/sauce-connect-params.json');
|
||
|
process.env['SAUCE_USERNAME'] = scParams.SAUCE_USERNAME;
|
||
|
process.env['SAUCE_ACCESS_KEY'] = scParams.SAUCE_ACCESS_KEY;
|
||
|
process.env['SAUCE_TUNNEL_IDENTIFIER'] = scParams.SAUCE_TUNNEL_IDENTIFIER;
|
||
|
} catch (e) {
|
||
|
console.error(e.stack || e);
|
||
|
console.error(
|
||
|
`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
!!! Make sure that you have run "yarn bazel run //tools/saucelabs:sauce_service_setup"
|
||
|
!!! (or "./tools/saucelabs/sauce-service.sh setup") before the test target. Alternately
|
||
|
!!! you can provide the required SAUCE_* environment variables (SAUCE_USERNAME, SAUCE_ACCESS_KEY &
|
||
|
!!! SAUCE_TUNNEL_IDENTIFIER) to the test with --test_env or --define but this may prevent bazel from
|
||
|
!!! using cached test results.
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`);
|
||
|
process.exit(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const scStart = `${sauceService} start-ready-wait`;
|
||
|
console.error(`Starting SauceConnect (${scStart})...`);
|
||
|
const result = shell.exec(scStart).code;
|
||
|
if (result !== 0) {
|
||
|
throw new Error(`Starting SauceConnect failed with code ${result}`);
|
||
|
}
|
||
|
|
||
|
console.error(`Launching karma ${karmaBin}...`);
|
||
|
module.constructor._load(karmaBin, this, /*isMain=*/true);
|
||
|
} catch (e) {
|
||
|
console.error(e.stack || e);
|
||
|
process.exit(1);
|
||
|
}
|