Report Karma test runner results to OSX Notification Center
JavaScript
Latest commit 95c0366 Oct 19, 2015 @petrbela Release v0.2.1

README.md

karma-osx-reporter

Reporter using Mac OS 10.8+ Notification Center to display results.

image

Built on top of node-osx-notifier and based on AvnerCohen's code.

Works with Karma 0.9 or later.

For more information on Karma see the homepage.

Installation

  1. Install Karma and karma-osx-reporter plugin.

    a. Globally. System-wide with karma available on command line.

      npm install -g karma
      npm install -g karma-osx-reporter

    b. Locally to your project (preferred). Simply run:

      npm install karma --save-dev
      npm install karma-osx-reporter --save-dev

    or add the dependencies to package.json manually and run npm install:

      "devDependencies": {
        "karma": ">=0.9",
        "karma-osx-reporter": "*"
      }

    If you install locally, you'll need to run Karma using node_modules/karma/bin/karma.

    In any case, the plugin needs to be installed as a peer dependency to Karma (i.e. in the sibling folder). This just means you cannot use global Karma with local plugins or vice-versa.

  2. Add it as a reporter in the config file

    reporters: ['progress', 'osx']

    or pass through the command line

    $ karma start --reporters=progress,osx karma.conf.js

Configuration

Host and Port

OSX Notifier runs on localhost:1337 by default. If you need to change that, simply override it in the Karma config file.

config.set({
  osxReporter: {
    host: "localhost",
    port: 1337
  }
});

Notification Mode

  • always - always show a notification
  • change - show a notification when the current result is different than the last
  • failOnly - show a notification if the result is fail
  • failChange - show a notification when the result is fail or first success after fail
config.set({
  osxReporter: {
    notificationMode: 'always'
  }
})

Additional Options

Any additional parameter will be passed to node-osx-notifier. Check the documentation for details. Some examples:

config.set({
  osxReporter: {
    activate: 'com.apple.Terminal',
    open: 'http://google.com',
    execute: 'open .'
  }
});

To decide dynamically what to pass into these options, define them as functions:

config.set({
  osxReporter: {
    activate: function(results, browser) {
      return results.failed > 0 ? 'com.apple.Terminal' : 'com.apple.Safari';
    }
  }
});

License

MIT License