Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get Casper JS to return an exit code that indicates test success status?

Tags:

casperjs

I want to be able to have a set of Casper JS tests and get an exit code back of 0 on success and non-zero on error or test failure (I want to run the casper command from java and determine if a test passed).

The problem I am having is that an exit code of 0 is always returned. Here is an example test where this happens:

var casper = require('casper').create();

casper.start('http://www.google.com', function() {
    this.test.assertEquals(true, casper.cli.options['value']);
});

casper.run(function() {
        casper.test.done(1);
});

All of the following commands result in an exit code of 0:

C:/casperjs/bin/casperjs test --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs test --value=false C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=false C:/Temp/simpletest.js

How can I invoke Casper and determine whether the tests succeeded or failed/errored from Java?

like image 816
user1991839 Avatar asked Jun 18 '13 18:06

user1991839


1 Answers

First, you cannot overwrite the casper instance in test mode, see http://docs.casperjs.org/en/latest/testing.html#test-command-args-and-options

Remove

var casper = require('casper').create();

from your code.

Then try

casper.start('http://www.google.com', function(test) {
    test.assertEquals(true, casper.cli.options['value']);
});

Start casperjs with

--fail-fast

so that each test will exit with code 1.

Then in Java

String[] args = {"/bin/sh", "-c", "casperjs test --fail-fast simpletest.js"};

Process proc = Runtime.getRuntime().exec(args);

logger.log(Level.INFO, IOUtils.toString(proc.getInputStream()));
String warnings = IOUtils.toString(proc.getErrorStream());

if (StringUtils.isNotBlank(warnings)) {
    logger.log(Level.WARNING, warnings);
}

int exitValue = proc.exitValue();

assertEquals(0, exitValue);

Of course you need to change the paths to suit your environment.

Hope that helps!

like image 148
Axel Morgner Avatar answered Jan 02 '23 13:01

Axel Morgner