npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

karma-serviceworker-jasmine

v1.0.0

Published

A Karma framework for running Jasmine unit tests in a service worker context

Downloads

3

Readme

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