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


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


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.


  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


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.

  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
  osxReporter: {
    notificationMode: 'always'

Additional Options

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

  osxReporter: {
    activate: '',
    open: '',
    execute: 'open .'

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

  osxReporter: {
    activate: function(results, browser) {
      return results.failed > 0 ? '' : '';


MIT License