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

sauce-test

v1.3.3

Published

The easy way to run unit tests on sauce-labs and in chromedriver

Downloads

270

Readme

sauce-test

The easy way to run unit tests on sauce-labs and in chromedriver

Build Status Dependency Status NPM version

Installation

npm install sauce-test

Usage

For basic usage, see test.js in this repo. For more advanced usage, see test/browser.js in https://github.com/then/then-jsonp

var runTests = require('sauce-test');

runTests(entries, remote, options).done(function (results) {
  console.dir(results);
});

If you want to write your own custom webdriver tests:

var runTestsAtLocation = require('sauce-test').runTestsAtLocation;

runTestsAtLocation({url: 'http://example.com'}, remote, {
  testComplete: () => Promise.resolve(true),
  testPassed: (cabbie) => {
    return cabbie.getSyncDriver().then(driver => {
      const window = driver.browser().activeWindow();
      const title = window.getElement('h1');
      assert(title.isDisplayed() === true);
      assert(title.getText().trim() === 'Example Domain');
      return true;
    }).catch(ex => {
      console.error(ex.stack);
      return false;
    });
  }
}).done(function (results) {
  console.dir(results);
});

entries

Entries should be an array of file names or JavaScript code. e.g.

runTests(__dirname + '/test.js', remote, options).done(function (results) {
  console.dir(results);
});
runTests('TESTS_PASSED = 40 + 2 === 42;TESTS_COMPLETE = true;', remote, options).done(function (results) {
  console.dir(results);
});
runTests([__dirname + '/assert.js', 'assert(40 + 2 === 42);TESTS_PASSED = true;TESTS_COMPLETE = true;'], remote, options).done(function (results) {
  console.dir(results);
});

See also the browserify option.

remote

Remote is the url of the selenium web driver server you want to run your tests on. You can also enter 'chromedriver' to automatically start up chromedriver and run your tests in google chrome or 'saucelabs' (along with the username and accessKey options) to run your tests on saucelabs.

options

Publishing code

sauce-test publishes your code to https://tempjs.org automatically for you. You can control how the code is served using these options.

  • browserify - set this to true to browserify the scripts before sending them to tempjs.org (set it to an object to pass options to browserify).

  • libraries - an array of urls to load as script tags on the page before the JavaScript to be tested

  • style - a string of css to include on the web page

  • stylesheets - an array of urls or file paths to css stylesheets

  • html - a string to override the default html template (should contain {{styles}} and {{scripts}} placeholders

  • disableSSL - set this to true to use http:// instead of https:// to load the tests

You can also manually just publish code (without running any tests) via:

var test = require('sauce-test');
test.publishCode(__dirname + '/test.js', options).done(function (res) {
  console.log('To view tests in a browser, navigate to: ' + res.url);
});

Sauce Labs options

The following options are specific to saucelabs and are ignored by other remotes:

  • username - your sauce labs username

  • accessKey - your sauce labs access key

  • filterPlatforms - if you don't specify a set of platforms, sauce-test will automatically load the complete list of platforms. You can filter these by providng a filterPlatforms function. e.g.

filterPlatforms: (platform, defaultFilter) => platform.browserName === 'chrome' && defaultFilter(platform)

The default is to omit development and beta browsers, and only test every 5th version of chrome and firefox below 35 and 30 respectively.

  • choosePlatforms - if you don't specify a set of platforms, sauce-test will automatically load the complete list of platforms. The choosePlatforms function takes an array of identical browsers for different operating systems and allows you to return just the platforms you actually want to test on. By default, a random platform is selected using code like:
choosePlatforms: (platforms) => [platforms[Math.floor(Math.random() * platforms.length)]]
  • jobInfo - jobInfo to send to sauce labs. Can be either an object or a function that takes a plaform and returns the jobInfo object. Defaults to:
{
  name: path.basename(process.cwd()),
  build: process.env.TRAVIS_JOB_ID
}

Other options

  • testComplete - a string that to execute on the web browser to determine whether tests have finished or a function that takes the cabbie driver and returns a Promise for either true or false. The default is 'return window.TESTS_COMPLETE' (which works great with the test-result library).

  • testPassed - a string that to execute on the web browser to determine whether tests have passed or a function that takes the cabbie driver and returns a Promise for either true or false. The default is 'return window.TESTS_PASSED && !window.TESTS_FAILED' (which works great with the test-result library).

  • parallel - the maximum number of tests to run in parallel (defaults to 3)

  • throttle - overrides parallel e.g.

throttle: require('throat')(3)
  • capabilities - an object to be mixed in with each platform to set additional capabilities e.g.
capabilities: {
  'record-video': false,
  'record-screenshots': true,
  'capture-html': false
}
  • bail - run tests one at a time (or one at a time per browser) and stop running new tests when one version fails.

  • allowExceptions - by default, tests are considered to have failed if window.onError is called, set this to true to disable that behaviour.

  • debug - enable debugging output for the underlying cabbie driver

  • timeout - defaults to '20s' and is passed to the ms library

  • platforms - the set of platforms to test on

  • onQueue - function to be called when a new test is queued (given the platform object) - defaults to a no-op

  • onStart - function to be called when a new test is started (given the platform object) - defaults to a no-op

  • onResult - function to be called when a test is finished (given the platform object along with a passed property) - defaults to a function that logs the result, pass false or {silent: true} to disable.

  • onBrowserResults - given an array of platforms once a given browser has finished - defaults to a function that logs the results, pass false or {silent: true} to disable.

  • onAllResults - called once all tests have completed, and passed the end results - defaults to a function that logs the results, pass false or {silent: true} to disable.

License

MIT