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

webcrypto-test-suite

v0.4.0

Published

A library to ensure your WebCrypto polyfill or shim works correctly

Downloads

60

Readme

webcrypto-test-suite

A library to ensure your WebCrypto polyfill or shim works correctly

Why?

I wanted to trust the various WebCrypto polyfills and shims. WebCrypto has a spec and, assuming modern browsers implemented the spec properly, this ensures the polyfills and shims are compliant with that spec.

Usage

The tests are implemented as Jasmine tests. This allows them to be included with the Jasmine, or Jasmine-compatible, test suite of your own library.

First, add the library to your devDependencies:

npm install --save-dev webcrypto-test-suite

Now, in one of your specs:

require('webcrypto-test-suite')({
  crypto: your_crypto_implementation,

  // optional function to skip certain specs
  shouldSkip(specNameArray) {
    if (specNameArray.includes('ES256')) {
      return true;
    }
  }
});

This will register the tests with Jasmine and the results will be included with the rest of your test suite.

Testing the tests

The karma tests included in the repo should run against unprefixed versions of WebCrypto in modern browsers. The baseline keys and signatures were generated in Chrome.

To run:

git clone [email protected]:kevlened/webcrypto-test-suite.git
cd webcrypto-test-suite
npm install

# runs default browsers once
npm test

# keeps default browsers open and reruns on changes
npm start

Default browsers:

  • Chrome - must have Chrome installed
  • Firefox - must have Firefox installed
  • Edge - must be running tests on Win10
  • Safari - must be running tests on MacOS

For more variety, browsers can be run individually:

  • npm run test:Safari
  • npm run test:SafariTechPreview
  • npm run test:Edge
  • npm run test:EdgeVM
    • This requires VirtualBox. You must create a EDGE_VIRTUAL_BOX_UUID environment variable with the VM's UUID. The VM's UUID can be found by running VBoxManage list vms. Ensure you have the VM booted before running the tests.
  • npm run test:Chrome
  • npm run test:ChromeHeadless
  • npm run test:Firefox
  • npm run test:FirefoxHeadless

npm run start:{browser} also works for the browsers above.

Known Issues

Although modern browsers may include unprefixed WebCrypto implementations, that doesn't mean they pass all the tests. For discrepancies (notably with Safari and Edge), see the tests that are skipped in src/harness.js.

License

MIT