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 Codeship.io about testing with CasperJS, which has some nice CasperJS code examples.
Pingback: BromBone – Headless Browser As A ServiceBjörn Wilmsmann | Björn Wilmsmann