karma-node-notifier
Version:
A karma reporter that works across platform
105 lines (90 loc) • 2.75 kB
JavaScript
var isWin = /^win/.test(process.platform);
var path = require('path');
var karmNodeNotifier = function(baseReporterDecorator, config, logger, helper, formatError){
this.onBrowserComplete = function(browser){
var results = browser.lastResult;
var time = helper.formatTimeInterval(results.totalTime);
var browserName = browser.name;
if(isWin){
if(results.error){
return windowsError(browserName);
}
if(results.failed){
return windowsNotify(false, browserName);
}
return windowsNotify(true, browserName);
} else {
if(results.error){
return standardError(browserName);
}
if(results.failed){
return standardNotify(false, browserName);
}
return standardNotify(true, browserName);
}
};
};
karmNodeNotifier.$inject = ['baseReporterDecorator', 'config', 'logger', 'helper', 'formatError'];
module.exports = {
'reporter:karma-node-notifier': ['type', karmNodeNotifier]
};
function windowsNotify(passed = false, browserName){
var WindowsToaster = require('node-notifier').WindowsToaster;
var notifier = new WindowsToaster({
withFallback: false,
customPath: void 0
});
if(passed) {
notifier.notify({
title: 'Passed - ' + browserName,
message: 'Your Karma tests have passed',
icon: path.join(__dirname, 'pass.png'),
sound: 'Notification.Default',
});
} else {
notifier.notify({
title: 'Failed - ' + browserName,
message: 'Some of your Karma tests have failed',
icon: path.join(__dirname, 'fail.png'),
sound: 'Notification.SMS',
});
}
}
function standardNotify(passed = false, browserName){
var notifier = require('node-notifier');
if(passed){
notifier.notify({
'title': 'Passed - ' + browserName,
'message': 'Your Karma tests have passed',
'contentImage': path.join(__dirname, 'pass.png'),
});
} else {
notifier.notify({
'title': 'Fail - ' + browserName,
'message': 'Some of your Karma tests have failed',
'contentImage': path.join(__dirname, 'fail.png'),
});
}
}
function windowsError(browserName){
var WindowsToaster = require('node-notifier').WindowsToaster;
var path = require('path');
var notifier = new WindowsToaster({
withFallback: false,
customPath: void 0
});
notifier.notify({
title: 'Error - ' + browserName,
message: 'There was an error with your Karma tests',
icon: path.join(__dirname, 'error.png'),
sound: 'Notification.Reminder',
});
}
function standardError(browserName){
var notifier = require('node-notify');
notifier.notify({
'title': 'Error - ' + browserName,
'message': 'There was an error with your Karma tests',
'contentImage': path.join(__dirname, 'error.png'),
});
}