UNPKG

karma-node-notifier

Version:

A karma reporter that works across platform

105 lines (90 loc) 2.75 kB
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'), }); }