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.
npm install -g spacejam
spacejam works the same as meteor tests commands i.e.:
# For appsspacejam test --driver-package my:driver-package# For packagesspacejam test-packages <package>
Assuming you use tinytest for your package tests:
# Inside a meteor package folderspacejam test-packages ./# Inside a meteor app folderspacejam test-packages myaccount:mypkg1 myaccount:mypkg2
Assuming you use practicalmeteor:mocha for your package tests:
# Inside a meteor package folderspacejam test-packages --driver-package=practicalmeteor:mocha-console-runner ./# Inside a meteor app folderspacejam 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
For current user:
npm install -g spacejam
For all users:
# The -H is requiredsudo -H npm install -g spacejam
This will automatically add spacejam, mrun and mtp to your path.
spacejam test-packages [options] [package...]
If not specified, will call meteor test-packages without arguments which will result in meteor testing all of the following packages:
All of your app's packages, if run from within a meteor app folder.
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:
spacejam log level. One of trace|debug|info|warn|error. Defaults to info.
The meteor ROOT_URL. Defaults to http://localhost:--port/, and not ROOT_URL, to avoid conflicts with your meteor app ROOT_URL.
The meteor MONGO_URL. Defaults to none, and not MONGO_URL, to avoid conflicts with your meteor app MONGO_URL.
The command line options to pass to phantomjs. The default is
If specified, saves results as xunit output to file.
Total timeout for all tests. Defaults to no timeout.
The following options are meteor options and are passed through to meteor (all are optional):
The meteor port. Defaults to 4096, and not PORT, to avoid conflicts with your meteor app PORT.
Path to a meteor settings file.
Simulate meteor production mode. Minify and bundle CSS and JS files.
Specify the release of Meteor to use.
Use the installed version of PhantomJS instead of the one from the PhantomJS NPM package
To get help, just:
to run your package tests without a meteor app, from within your package folder, run:
spacejam test-packages ./ORspacejam-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-versionPrints the package version in the current working directory's package.js## spacejam-mocha wrapper scriptA 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 scriptA 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_HOMEIf set, will cd $METEOR_APP_HOME && meteor run, so you can run your app from any folder, without leaving that folder.### METEOR_SETTINGS_PATHIf 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_PORTRuns meteor with --port $TEST_PORT and sets PORT to TEST_PORT. Defaults to 3100.### TEST_ROOT_URLIf set, sets ROOT_URL to TEST_ROOT_URL. If not set, sets ROOT_URL to :$TEST_PORT/### TEST_MONGO_URLIf set, sets MONGO_URL to TEST_MONGO_URL. If not set, unsets MONGO_URL.### TEST_METEOR_SETTINGS_PATHIf set, runs meteor with --settings $TEST_METEOR_SETTINGS_PATH. Useful if you use different settings for your app and your package tests.### METEOR_SETTINGS_PATHIf set, runs meteor with --settings $METEOR_SETTINGS_PATH. Useful if you use the same settings for your app and your package tests.## ChangelogSee [CHANGELOG.md](CHANGELOG.md)## ContributingContributions 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](LICENSE.txt)