Détail du package

spacejam

Run your meteor package tinytests and mocha tests from the command line with phantomjs.

spacejam, meteor, test-packages, test-in-console

readme

Build Status

Overview

An npm package to run your meteor package tinytests and mocha tests from the command line with phantomjs. Can be used in continuous integration environments, such as Travis CI.

Quickstart

Installation

npm install -g spacejam

Running

spacejam works the same as meteor tests commands i.e.:

For apps:

# For apps
spacejam test --driver-package my:driver-package
# For packages
spacejam test-packages <package>

Running package tinytests

Assuming you use tinytest for your package tests:

# Inside a meteor package folder
spacejam test-packages ./
# Inside a meteor app folder
spacejam test-packages myaccount:mypkg1 myaccount:mypkg2

Running package mocha tests

Assuming you use practicalmeteor:mocha for your package tests:

# Inside a meteor package folder
spacejam test-packages --driver-package=practicalmeteor:mocha-console-runner ./
# Inside a meteor app folder
spacejam test-packages --driver-package=practicalmeteor:mocha-console-runner myaccount:mypkg1 myaccount:mypkg2

Alternatively, just use the spacejam-mocha wrapper script to avoid specifying the driver-package on the command line:

spacejam-mocha ./
spacejam-mocha myaccount:mypkg1 myaccount:mypkg2

Table of Contents

Installation

For current user:

npm install -g spacejam

For all users:

# The -H is required
sudo -H npm install -g spacejam

This will automatically add spacejam, mrun and mtp to your path.

spacejam test-packages

spacejam test-packages [options] [package...]

package... can be a list of packages with tinytests or mocha tests.

If not specified, will call meteor test-packages without arguments which will result in meteor testing all of the following packages:

  1. All of your app's packages, if run from within a meteor app folder.

  2. All of the packages meteor will find in all the folders specified in the PACKAGE_DIRS environment variable.

spacejam test-packages also sets process.env.METEOR_TEST_PACKAGES to '1', so packages can know they are running in the context of meteor test-packages. Not really a good practice, but sometimes just unavoidable.

The following options are specific to spacejam:

--loglevel <level>

spacejam log level. One of trace|debug|info|warn|error. Defaults to info.

--root-url <url>

The meteor ROOT_URL. Defaults to http://localhost:--port/, and not ROOT_URL, to avoid conflicts with your meteor app ROOT_URL.

--mongo-url <url>

The meteor MONGO_URL. Defaults to none, and not MONGO_URL, to avoid conflicts with your meteor app MONGO_URL.

--phantomjs-options "<options...>"

The command line options to pass to phantomjs. The default is --load-images=no --ssl-protocol=TLSv1.

--xunit-out <file>

If specified, saves results as xunit output to file.

--timeout <milliseconds>

Total timeout for all tests. Defaults to no timeout.

The following options are meteor options and are passed through to meteor (all are optional):

--driver-package=<driver-package>

For running your practicalmeteor:mocha tests, use practicalmeteor:mocha-console-runner

--port <port>

The meteor port. Defaults to 4096, and not PORT, to avoid conflicts with your meteor app PORT.

--settings <file>

Path to a meteor settings file.

--production

Simulate meteor production mode. Minify and bundle CSS and JS files.

--release <version>

Specify the release of Meteor to use.

--use-system-phantomjs

Use the installed version of PhantomJS instead of the one from the PhantomJS NPM package

To get help, just:

spacejam help

Running your package tests standalone

to run your package tests without a meteor app, from within your package folder, run:

spacejam test-packages ./
OR
spacejam-mocha test-packages ./

Exit codes

spacejam will return the following exit codes:

  • 0 All the tests have passed in all packages.
  • 1 spacejam usage or internal error.
  • 2 At least one test has failed.
  • 3 The meteor app has errors.
  • 4 The tests have timed out.
  • 6 An uncaught error happened client side before or during tests.

spacejam package-version

Prints the package version in the current working directory's package.js

spacejam-mocha wrapper script

A wrapper script so you don't have to specify --driver-package=practicalmeteor:mocha-console-runner on the command line every time, i.e.:

spacejam-mocha --production ./

meteor-mocha wrapper script

A wrapper script so you don't have to specify --driver-package=practicalmeteor:mocha on the command line every time, i.e.:

meteor-mocha --port 4000 pkg1 pkg2

mrun (meteor run)

Runs meteor run with the provided options. Supports the following additional environment variables:

METEOR_APP_HOME

If set, will cd $METEOR_APP_HOME && meteor run, so you can run your app from any folder, without leaving that folder.

METEOR_SETTINGS_PATH

If set, runs meteor with --settings $METEOR_SETTINGS_PATH

mtp (meteor test-packages)

Runs meteor test-packages with the provided options on port 3100 and with MONGO_URL unset so you can run your app and your package tests in parallel, without port or mongodb conflicts, if you use an external mongodb for your app.

It also always sets METEOR_TEST_PACKAGES to '1', so packages can know they run in the context of meteor test-packages. Not really a good practice, but sometimes just unavoidable.

Supports the following additional environment variables:

TEST_PORT

Runs meteor with --port $TEST_PORT and sets PORT to TEST_PORT. Defaults to 3100.

TEST_ROOT_URL

If set, sets ROOT_URL to TEST_ROOT_URL. If not set, sets ROOT_URL to http://localhost:$TEST_PORT/

TEST_MONGO_URL

If set, sets MONGO_URL to TEST_MONGO_URL. If not set, unsets MONGO_URL.

TEST_METEOR_SETTINGS_PATH

If set, runs meteor with --settings $TEST_METEOR_SETTINGS_PATH. Useful if you use different settings for your app and your package tests.

METEOR_SETTINGS_PATH

If set, runs meteor with --settings $METEOR_SETTINGS_PATH. Useful if you use the same settings for your app and your package tests.

Changelog

See CHANGELOG.md

Contributing

Contributions are more than welcome. Just create pull requests and make sure to include proper test coverage. We use mocha.js for tests and run our tests using CoffeScript's cake, so npm test will run cake test.

Note that we plan to include support for running tests in any browser and in sauce from the command line so if you plan to add this, check with us if we already started working on it.

License

MIT

changelog

1.5.2

  • Add meteor-mocha wrapper script to npm bin scripts

1.5.1

  • Add meteor-mocha wrapper script

1.5.0

  • Add spacejam-mocha

  • Document mocha support in package desc, readme and help

  • Let mocha report uncaught client side exceptions during tests, instead of exiting.

1.4.1

  • Add set-meteor-env and unset-meteor-env to package.json bin so other scripts can find them.

1.4.0

  • Add multi-env support to mrun and sjtp scripts using set-meteor-env and unset-meteor-env scripts

  • Add spacejam.rc script that adds the following aliases to the user's shell

menv XXX (i.e. menv STAGE) - switches between envs

msetenv - regenerates the meteor env

  • Add spacejam-init-bashrc script that adds to user's .bashrc the menv and msetenv aliases by sourcing spacejam.rc

  • Add mdeploy script to login and publish an app to meteor, with multi-env support

  • Add mongo-connect and mongo-reset scripts to reset an external mongodb

  • Add mmpublish script to publish packages with practicalmeteor:mocha tests

  • TODO: Documentation of all of the above in README

1.3.0

  • Exit with exit code 6 in case of an uncaught client side error before or during tests.

1.2.2

  • Add support for METEOR_APP_HOME in mrun

  • Always export METEOR_TEST_PACKAGES='1' in both spacejam and mtp before running meteor test-packages

1.2.1

  • Add --use-system-phantomjs flag.

1.2.0

  • Add support for saving xunit output generated by meteor's test-in-console to a file using --xunit-out

1.1.4

  • Add --phantomjs-options

1.1.3

  • Remove requirement to be in a meteor app or package folder

1.1.2

  • Mac / OS X support

1.1.1

  • Update README.md

1.1.0

  • coffee-script installation perquisite removed.
  • Add --dir option to specify current working directory.
  • Unless you explicitly specify --mongo-url, mongodb will default to internal meteor mongodb, and not MONGO_URL.
  • Unless you explicitly specify --root-url, ROOT_URL will default to localost:--port (default 4096), and not ROOT_URL.
  • Add mrun and mtp scripts
  • Internal: Update tests to meteor 1.0
  • Internal: Compile and run tests in js, not coffee.

1.0.0

  • Remove support for the --app option. spacejam needs to be run from within a meteor app or package folder.
  • Remove support for the --once option, since we need the meteor proxy to start and launch a mongodb, if needed. With --once, the meteor proxy will not launch a mongodb.
  • Remove support for the --driver-package option. It will always be test-in-console, since spacejam should only be used to test your packages from the command line or in ci environments.
  • Internal: Update tests to meteor 0.9.2.2

0.2.10

  • Internal: Fix npm-publish script so it stops in case of errors.

0.2.9

  • Add support for running spacejam without packages specified, so it will do the same as meteor test-packages without arguments.
  • Add support for running tests for standalone packages, without a meteor app.
  • spacejam now kills meteor's internal mongodb cleanly. See #3

0.2.8

  • Updated documentation to reflect that spacejam_ environment variables need to be lower case.

0.2.7

  • --driver-package option has been removed. It will always use test-in-console.
  • Updated documentation to include prerequisites (coffee-script) and quick start.

0.2.6

  • --app is no longer required. spacejam will use the current working directory, if no --app folder is specified.
  • Added spacejam (bin/run-tests.sh) and meteor (bin/run-app.sh) wrapper scripts in order to easily specify different environments for meteor and spacejam.
  • Added a script (bin/unset-meteor-env.sh) to easily unset meteor related environment variables.

0.2.5

  • Add support for the --release meteor flag.