karma-serviceworker-jasmine

1.0.0 • Public • Published

karma-serviceworker-jasmine

A Karma plug-in/framework for Jasmine testing when running inside a ServiceWorker.

What is karma-serviceworker-jasmine for?

Karma-serviceworker-jasmine should be employed for performing tests in a ServiceWorkerGlobalScope and not in a window environment. It is not to test interceptions, nor performing integration tests between your client code and your service worker. It will simply run your code inside a special service worker and will warry about comunicating the results of the testing to the Karma reporter.

If you are looking for other methods of testing service workers, try this article by Matt Gaunt

Jasmine version

This framework uses a built-in Jasmine 1.3 library, and not the version of jasmine you may already have installed. This is planned for a future version of this plugin.

Installation

Install karma-serviceworker-jasmine from npm:

$ npm install --save karma-serviceworker-jasmine

And add it as the first item of your framework list in the Karma configuration file...

{
  frameworks: ['serviceworker-jasmine', /* other frameworks... */],
}

Notice the name of the framework is serviceworker-jasmine and not karma-serviceworker-jasmine.

Adding tests

For the service worker to know which test files should load, you need to add them to the client configuration as well as the files array in the config. This is because the framework loads these files within the service worker directly, and does not have access to the main files list:

Please remember to include the service worker that you want to test as the first script to be loaded in here.

client: {
    'serviceworker-jasmine': {
        SW_TESTS: [
            'path/to/your/worker/sw.js',
            'samples/serviceworker.test.js'
        ]
    }
},

Configuration example

In samples you will find sample files for the Karma configuration file and serviceworker.test.js to set up the environment.

It is really important that the basePath property is set to the root of the project that you're working on, where your node_modules are stored. If it is not, this framework will not load correctly and this will not work.

Browser support

At the time of writing, Chrome, Firefox, Opera and Samsung Internet support service workers. See this compatibility table for the most up to date information. PhantomJS is not supported and is highly unlikely to ever be supported.

For headless support, try SlimerJS (runner) or, if you're feeling lucky, Raw Chromium for Linux with --headless and --disable-gpu flags set. Track the Chrome Headless project here

License

This work is © Yell Limited and is licensed under the MIT license

Package Sidebar

Install

npm i karma-serviceworker-jasmine

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • steveworkman