Run your jasmine runner.html headless using node.js. Output the results in several formats including JSON and JUnit XML (good for integration with Jenkins CI).
JavaScript HTML CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

node-jasmine-dom Build Status

Run your browser-based jasmine specs headless with node.js. Then output in one of many formats such as JSON or JUnit XML (perfect for integration with CI servers like Jenkins).


npm install -g jasmine-dom


Construct your SpecRunner.html as shown in the jasmine examples, then run:

jasmine-dom --runner path/to/SpecRunner.html


jasmine-dom --config path/to/config.yaml

You can optionally provide the following arguments:

  • --help, provides usage information
  • --format simple|detailed|nice|json|html|junit, displays the result in the specified format
  • --output path, writes the output to the specified file
  • --server [port], serves a simple (but effective) page showing the current state of the tests. You can also specify an optional --refresh intervalInMS argument to specify the wait between running the tests (because the server is constantly running 'em).
  • --routeconsole, calls to window.console.log (or error, warn, info) within the tests / tested code will be displayed in the terminal output


jasmine-dom --runner examples/runner.html --server 8090 --refresh 3000

will run a server on http://localhost:8090/. Here a simple green or red page will reflect the current state of your tests. The tests will run every 3000ms, and the page ajaximatically updates with the result.

If you'd like to see the default jasmine html, visit http://localhost:8090/jasmine. Note, the result is still obtained via the nodejs runner (i.e. it wasn't run in your browser).

specifying runners

A single runner file can be provided via the --runner command. To specify more than one runner, use the --config argument and a yaml config file in the format:

    name: This is the name of the first set of tests
    runner: path/to/runner_1.html
    name: This is the name of the second set of tests
    runner: path/to/another/runner.html

The config file allows you to provide names for your runners. These names will be used when identifying failing tests.

example 1

jasmine-dom --runner examples/runner.html

will output:


example 2

jasmine-dom --runner examples/runner.html --format junit --output javascript_results.xml

will write to javascript_results.xml:

        <testcase classname="/Users/andrew/development/node-jasmine-dom/examples/runner.html.Example_functions_that_update_the_DOM.Should_add_two_numbers" name="expect toEqual 7" time="undefined"/>
        <testcase classname="/Users/andrew/development/node-jasmine-dom/examples/runner.html.Example_functions.Should_multiply_two_numbers" name="expect toEqual 40" time="undefined"/>
        <testcase classname="/Users/andrew/development/node-jasmine-dom/examples/runner.html.Example_functions.Should_fail!!" name="expect toEqual 8">
                    FAILURE in spec "Should fail!!": Expected 3 to equal 8.
                    Error: Expected 3 to equal 8.
                        at new <anonymous> (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:94:50)
                        at [object Object].toEqual (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:1138:29)
                        at [object Object].<anonymous> (/Users/andrew/development/node-jasmine-dom/examples/tests/spec/example-functions_spec.js:10:13)
                        at [object Object].execute (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:968:15)
                        at [object Object].next_ (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:1739:31)
                        at [object Object].start (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:1692:8)
                        at [object Object].execute (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:2018:14)
                        at [object Object].next_ (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:1739:31)
                        at [object Object].start (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:1692:8)
                        at [object Object].execute (/Users/andrew/development/node-jasmine-dom/examples/tests/lib/jasmine.js:2163:14)

example 3

jasmine-dom --config ./examples/config.yaml --format nice

with ./examples/config.yaml:

        name: Example test one
        runner: ./runner.html
        name: Example test two
        runner: ./runner2.html

will output:

====== FAILED ======
 - In A suite that fails >> Example functions (should fail) >> Should fail!! :: Expected 3 to equal 8.

example 4

jasmine-dom --config ./examples/config.yaml --format detailed

will output:

====== FAILED ======

Example functions (should fail) - 2 tests
    - Should multiply two numbers
    - Should fail!!
        [Expected 3 to equal 8.]
Example functions that update the DOM - 2 tests
    - Should add two numbers
    - Should divide two numbers

====== FAILED ======


Version Date Description
1.0.0 7-12-2012 Dusted off the cobwebs. Upgraded jsdom to v1.5.0 to work with modern node versions. Also needed to bump min node to v0.10.38.
0.3.0 22-12-2012 Added 'detailed' report format. Made examples a bit clearer.

have you seen jasmine-node?

It's provided a lot of inspiration for this project, and may be just what you're looking for. If you're not reliant on a DOM, then it's worth checking out.