karma-osx-reporter

A Karma plugin. Report results with OSX Notification Center.

karma-osx-reporter

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.

```sh
npm install -g karma
npm install -g karma-osx-reporter
```

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

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

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

```js
"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.

  1. 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

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
  }
});
  • 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'
  }
})

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: {
    activatefunction(resultsbrowser) {
      return results.failed > 0 ? 'com.apple.Terminal' : 'com.apple.Safari';
    }
  }
});

MIT License