Using Chimp with Meteor

Learn the ways of reactive BDD

Getting Started

Follow the Installation instructions.

Note, The official Meteor guide also has some instructions on using Chimp for acceptance testing that you can find by clicking here.

Ensure that your features and tests are in a tests folder; you will encounter a ReferenceError: module is not defined error once you start to create your step definitions if they are not.

Start your Meteor application then start Chimp:

# Cucumber mode
mkdir tests
chimp --ddp=http://localhost:3000 --watch --path=tests

# Mocha mode
chimp --ddp=http://localhost:3000 --watch --mocha --path=tests

Chimp will now watch the tests directory and rerun if any of those change, or if the Meteor app restarts, so you can enjoy a lightning-fast reactive testing experience.

Chimp uses Google Chrome by default so you need to install it. If you don't wish to use Chrome, you can specify the --browser=firefox flag. You can also choose phantomjs and safari.

Meteor Specific Features

Hot-code reload watch mode

When Meteor is detected in the --watch mode, Chimp will connect to your app via DDP and watch for client/server updates. As soon as any are detected, Chimp will rerun the tests/specs that have the watched tags.

Call a DDP Method

when the --ddp flag is passed, you get a global server object available in your tests/steps that allows you to call methods via DDP using this syntax:

// using call
var result = server.call('fixtures/resetMyApp');

// or apply
var result = server.apply('myMethodWithArgs', [argsArray]);

Note: for Mocha server is defined with in the it,before, beforeEach, after and afterEach callbacks. server is undefined in the describe callback.

These work just like they do on the Meteor server and they are synchronous.

You can define fixtures using this method and run meteor alongside Chimp using this method.

Execute Code in the Meteor Context

You can run code inside the Meteor context from your specs like this:

In the Server Context
var getMeteorSettings = function (setting) {
  return Meteor.settings[setting]
};
var mySetting = server.execute(getMeteorSettings, 'mySetting');
console.log(mySetting);

The call is synchronous, can return complex objects and works both in Cucumber and Mocha.

Meteor Utility Packages

In order for server.execute() to work, you need to install the xolvio:backdoor package. We also recommend installing the xolvio:cleaner package, which allows for resetting your Mongo test database.

In the Client Context

you can do this synchronously using WebdriverIO's execute

var getUserProfileProperty = function (property) {
  return Meteor.user().profile[property];
};
client.url('http://localhost:3000'); // the client must be on a Meteor app page
var userName = client.execute(getUserProfileProperty, 'name').value;
console.log(userName);

Try out the example

See our Automated Testing Best Practices for examples of using Chimp.

You may also be interested in the tests/cucumber directory of our dated - but still useful - Letterpress project.

Learn Mocha, Cucumber & Chimp

Use the links on the right hand side to learn more about Chimp, Mocha, Cucumber and other libraries used in this package.



##Learn the Fundamentals of Testing, Specifications and Become a Chimp Ninja!
Checkout our new book where you can learn how to can use Chimp across the Full Stack from React to Node.JS, Mocha, Meteor and more.

Quality, Faster. By Sam Hatoum, creator of Chimp.

Your support helps us continue our work on Chimp.