npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details


  • User packages



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.


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 🙏

© 2023 – Pkg Stats / Ryan Hefner




WD.js / WebdriverIO configuration wrapper.





A small, rambunctious configuration wrapper for WD.js or WebdriverIO

Main features:

  • Easy configuration for local, Sauce Labs, BrowserStack testing.
  • Invokes selenium server for local runs automagically.
  • Integration helpers for Mocha tests.
  • Auto-magic setting of Sauce Labs test status.
  • Use your own test framework and test runner.


First, install the library.

$ npm install --save-dev rowdy

Local Selenium Server

If you want to have Rowdy run and control a local Selenium server, then install the standalone client and run the install scripts:

$ npm install --save-dev selenium-standalone
$ npm run install-selenium

This shells out to selenium-standalone and is necessary at some point in your integration if using the standalone (local) server.

The above steps are necessary if the configuration value settings.local.server.start is true. You can skip the steps if you are separately running / managing a local Selenium server or using a remote Selenium farm (e.g., Sauce Labs or BrowserStack).

Client Libraries

Then, install the necessary client libraries.


$ npm install --save-dev wd


$ npm install --save-dev webdriverio saucelabs

Note: If using SauceLabs + WebdriverIO, we lazy require the Sauce Labs module to upload results of "done" to your SL account.

Note: Rowdy requires webdriverio at version v3.0.0 or above.

Sauce Labs

If you intend to use Sauce Labs + guacamole-provide environments, then:

$ npm install --save-dev guacamole


By default Rowdy will lazy initialize the library's included config.js configuration file. (The first access of most rowdy.* properties / methods will force this.)

However, on first import of Rowdy, you can override this behavior to do things like override parts of the default configuration:

// Start with default configuration.
var config = require("rowdy/config");
config.server.logger = true;
// ... any other mutations

// Pass configuration in.
var rowdy = require("rowdy")(config);

Or, you can simply copy config.js to your project, edit it as appropriate and load:

var config = require("./PATH/TO/config");
var rowdy = require("rowdy")(config);

Local Examples

Start the local Selenium server on a different port:

$ ROWDY_OPTIONS='{ "server": { "port":4321 } }' \
  npm run test

Have client hit an already running local Selenium server without starting its own:

# In one terminal
$  java -jar node_modules/selenium-standalone/.selenium/selenium-server/2.45.0-server.jar \
   -port 4321 \

# In another...
$ ROWDY_OPTIONS='{ "client": { "port":4321 }, "server": { "start":false } }' \
  npm run test

Sauce Labs + Guacamole

We use guacamole to have automatic access to all of the test environments Sauce Labs supports (e.g., firefox_38_Windows_2012_R2_Desktop, safari_7_OS_X_10_9_Desktop).

If you npm install guacamole, then by default Rowdy will use and enable those environments for use in configuration. Once installed, you can view all of the available environments with:

# View environments
$ node_modules/.bin/guacamole

# Generate a cached shrinkwrap file
$ node_modules/.bin/guacamole --generate-shrinkwrap

Rowdy uses a cached version of Sauce Labs configurations in the guacamole-shrinkwrap.json file so that guacamole doesn't query the Sauce Labs API at runtime.

Disabling Guacamole: If you don't want to use the guacamole environments with Sauce Labs, then you can skip the npm install and just make sure the following is active in your Rowdy configuration:

  options: {
    guacamole: {
      enabled: false

(By default guacamole.enabled is true if npm installed and false otherwise, so if you use the default Rowdy configuration, no code changes are needed.)

And then you should add your own bespoke Sauce Labs settings in configuration at:

  settings: {
    sauceLabs: {
      "mac-safari-7": { /* Sauce Labs capabilities */ }

Local Usage

One of the Rowdy peer dependencies is selenium-standalone. This package contains an install script that you may need (and do need on Windows):

$ node_modules/.bin/selenium-standalone install

Some other tips and tricks:

Mac + Safari

Recent Safari updates have broken automatic driver usage, so you need a series of tedious steps per

Windows + IE

See for extra steps needed to work with local IE. Anecdotally, for Win7+IE11 in a VM, the only actually tweak needed was:

  • Create key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BFCACHE and add DWORD of iexplore.exe defaulted to 0 value.


TODO: API is still settling out.

Mocha Adapter

We provide full working examples of the Mocha Adapter:

TODO: Add a full guide for configuring the adapter and (1) the options, (2) adapter.refreshClient() use, (3) adapter.client use.

Webdriver Client Guides


The full API to WD.js is available at:


WebdriverIO provides the following useful documentation:



Please see the Contributions Guide for how to help out with the plugin.

We test all changes with Travis CI. Here's our current build status:

Build Status

We also do multi-browser testing thanks to donated VM time from Sauce Labs and BrowserStack. Here's our Sauce Labs build matrix:

Sauce Test Status