Acceptance Testing With PhantomJS and CasperJS

Home » Blog » Software » Front End Development » Acceptance Testing With PhantomJS and CasperJS

PhantomJS is a headless WebKit browser that allows you to call, test and scrape websites from the command line. In the developer’s own words:

PhantomJS is a headless WebKit with JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

CasperJS is a testing and scripting framework that builds on PhantomJS. Again, in the developer’s own words:

CasperJS is an open source navigation scripting & testing utility written in Javascript and based on PhantomJS — the scriptable headless WebKit engine. It eases the process of defining a full navigation scenario and provides useful high-level functions, methods & syntactic sugar for doing common tasks such as:

  • defining & ordering browsing navigation steps
  • filling & submitting forms
  • clicking & following links

In the past few weeks I’ve been using CasperJS for implementing automated acceptance tests for two web apps – one implemented with Apache Wicket and a Rails app – and CasperJS tests have proven to be a useful addition to unit and integration tests. By providing a JavaScript API for defining navigation scenarios it allows you test a web app just the way the user would see it. As CasperJS is a headless WebKit it can be run from the command line and hence can be integrated in continuous integration processes.

CasperJS makes implementing acceptance tests a breeze, which makes it a great tool for complementing your test suite. I’d even go as far as saying that for web applications acceptance tests can work as a replacement for traditional unit tests since they more accurately define the behaviour of an application.

Edit: I just found this article by about testing with CasperJS, which has some nice CasperJS code examples.

  1. Pingback: BromBone – Headless Browser As A ServiceBjörn Wilmsmann | Björn Wilmsmann

Leave a Comment

By continuing to use the site you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or if you click "Accept" below then you are consenting to this.