se-interpreter is developed by David Stark at the behest of Sauce Labs, and licensed under the Apache License, Version 2.0:

Copyright 2013 Sauce Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

You can run multiple tests in parallel on OnDemand, but note that if --parallel is set to more than the maximum number of parallel tests for your account, the interpreter will hang indefinitely. For a free account, this maximum number is two.

Configuration files

Instead of specifying the scripts/suites and configuration on the command-line, you can use JSON-based configuration files. An example:

For my_travis_config.json use a config file like the second example above. If you are setting up a web server on Travis and using Sauce Connect from Travis to Sauce Labs, then your driverOptions host must be 'localhost' and your port must be '4445'. Note that this configuration uses Travis' support for encrypting environment variables to prevent having to put your access key into a publicly visible place.

Listeners

Using --listener=path-to-listener, you can specify a module that provides listeners that se-interpreter will attach to each script being run. An example listener module implementation is provided in examples/example_listener.js. A listener module should export a function called getInterpreterListener that returns an object that may define any of the following functions:

startTestRun(testRun, info) Called when a test run has started.

endTestRun(testRun, info) Called when a test has completed.

startStep(testRun, step) Called when a step is about to start.

endStep(testRun, step, info) Called when a step has completed.

endAllRuns(num_runs, successes) Called when all tests have completed.

The info objects have two keys: success, which is true or false, and error, which may contain an exception if success is false. The interpreter module itself contains a listener implementation which is used as the default listener if --quiet or --silent is not specified.

Data sources

You can specify additional data source modules to support custom data-driven testing sources using --dataSource=path-to-datasource. An example data source module implementation is provided in examples/example_datasource.js.

Adding extra step types

There are two ways of adding support for extra step types to se-interpreter.

First, you can add extra files into the step_types directory in the module. See the contents of this directory for examples. The directory contains both files like get.json, which implements the get step, and Title.json, which implements a way to get at the current title, and is used by generic assert/verify/store/waitFor implementations.

Second, you can specify a --executorFactory=path-to-factory command line argument. The executor factory is a module that should export a function called get(stepType), returning either an step type implementation/getter, or null if the module can't supply an implementation for playing back a step called stepType. See examples/example_factory.js for a simple example.

Using a proxy

You can specify a proxy for the browser to use by putting a proxy object into the browser settings. Example using a proxy at localhost: