Socket
Socket
Sign inDemoInstall

karma-sauce-launcher

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

karma-sauce-launcher - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

73

index.js

@@ -9,3 +9,10 @@ // TODO(vojta):

// SauceLabs is a wrapper around the Sauce Labs REST API
var SauceLabs = require('saucelabs');
// We keep a mapping from Karma launch IDs to Sauce job IDs here, to report the pass/fail results.
// We also keep the Sauce credentials here - theoretically different credentials can be used for
// different browsers in the same session.
var jobMapping = {};
var SauceConnect = function(emitter, logger) {

@@ -115,3 +122,3 @@ var log = logger.create('launcher.sauce');

driver = wd.remote('ondemand.saucelabs.com', 80, username, accessKey);
driver.init(options, function(err) {
driver.init(options, function(err, jobId) {
if (err) {

@@ -122,2 +129,11 @@ log.error('Can not start %s\n %s', browserName, formatSauceError(err));

// Record the job details, so we can access it later with the reporter
jobMapping[id] = {
jobId: jobId,
credentials: {
username: username,
password: accessKey
}
};
log.info('%s session at https://saucelabs.com/tests/%s', browserName, driver.sessionID);

@@ -165,7 +181,60 @@ log.debug('WebDriver channel instantiated, opening ' + url);

var SauceLabsReporter = function(baseReporterDecorator, emitter, logger) {
var log = logger.create('reporter.sauce');
baseReporterDecorator(this);
var pendingUpdates = 0;
var updatesFinished = function() {};
// We're only interested in the final results per browser
this.onBrowserComplete = function(browser) {
var result = browser.lastResult;
// browser.launchId was used until v0.10.2, but changed to just browser.id in v0.11.0
var browserId = browser.launchId || browser.id;
if(browserId in jobMapping) {
var jobDetails = jobMapping[browserId];
var sauceApi = new SauceLabs(jobDetails.credentials);
// We record pass/fail status, as well as the full results in "custom-data".
var payload = {
passed: !(result.failed || result.error),
'custom-data': result
};
pendingUpdates++;
sauceApi.updateJob(jobDetails.jobId, payload, function(err) {
pendingUpdates--;
if (err) {
log.error('Failed record pass/fail status: %s', err.error);
}
if (pendingUpdates == 0) {
updatesFinished();
}
});
}
};
// Wait until all updates have been pushed to SauceLabs
emitter.on('exit', function(done) {
if (pendingUpdates) {
updatesFinished = done;
} else {
done();
}
});
};
SauceLabsReporter.$inject = ['baseReporterDecorator', 'emitter', 'logger'];
// PUBLISH DI MODULE
module.exports = {
'sauceConnect': ['type', SauceConnect],
'launcher:SauceLabs': ['type', SauceLabsBrowser]
'launcher:SauceLabs': ['type', SauceLabsBrowser],
'reporter:saucelabs': ['type', SauceLabsReporter]
};

6

package.json
{
"name": "karma-sauce-launcher",
"version": "0.1.3",
"version": "0.1.4",
"description": "A Karma plugin. Launch any browser on SauceLabs!",

@@ -24,3 +24,4 @@ "main": "index.js",

"sauce-connect-launcher": "~0.1.10",
"q": "~0.9.6"
"q": "~0.9.6",
"saucelabs": "~0.1.0"
},

@@ -41,4 +42,5 @@ "peerDependencies": {

"Parashuram <code@nparashuram.com>",
"Ralf Kistner <ralf@embarkmobile.com>",
"yhwh <ferrero.nicolas@gmail.com>"
]
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc