Upgrading to 1.1 ================ Testing framework refactor -------------------------- The most visible change is the way you write tests. With 1.0, you were able to access a ``.test`` property from any casper script and so running a suite using the standard ``casperjs`` executable:: // 1.0 style test script not using the `casperjs test` subcommand var casper = require('casper').create(); casper.start('http://foo.bar/', function() { this.test.assert(true); }); casper.run(function() { this.test.done(1); this.test.renderResults(true); }); In 1.1, the test framework has been heavily refactored to decouple the tester from a casper instance as much as possible, so it's no more possible to run a test suite right from the standard ``casperjs`` command as you would have done with the script shown above. Instead you now have to use the :doc:`casperjs test <../testing>` subcommand mandatorily to access a tester instance from the ``casper.test`` property. .. warning:: As of 1.1: - you shouldn't invoke the ``renderResults()`` method directly anymore - you shouldn't use the ``done()`` first argument to set planned test as it's been deprecated - you can't access the ``casper.test`` property when not using the ``casperjs test`` subcommand If you try, you'll get an error:: // test.js var casper = require('casper').create(); casper.test.assert(true); Will give: .. code-block:: text $ casperjs test.js CasperError: casper.test property is only available using the `casperjs test` command The new ``Tester#begin()`` method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ However, a new :ref:`begin() ` method as been added to the :ref:`Tester ` prototype, to ease describing your tests:: casper.test.begin('Description of my test', 1, function(test) { test.assert(true); test.done(); }); More asynchronously:: casper.test.begin('Description of my test', 1, function(test) { casper.start('http://foo.bar/', function() { test.assert(true); }); casper.run(function() { test.done(); }); }); .. note:: Please notice ``begin()``'s second argument which is now the place to set the number of planned tests. require() in custom modules --------------------------- CasperJS 1.1 now internally uses PhantomJS' native ``require()`` function, but it has side effect if you write your own casperjs modules; in any casperjs module, you now have to use the new global ``patchRequire()`` function first:: // casperjs module code var require = patchRequire(require); // now you can require casperjs builtins var utils = require('utils'); exports = { // ... }; .. note:: You don't have to use ``patchRequire()`` in a standard casperjs script. ``__file__`` has been removed ----------------------------- As of 1.1, CasperJS now uses native PhantomJS' ``require()`` function which doesn't support the ``__file__`` builtin variable within custom modules like 1.0 allowed. ``Tester#getFailures()`` and ``Tester#getPasses()`` methods removed ------------------------------------------------------------------- These two methods have been removed from the :doc:`Tester <../modules/tester>` API. You can retrieve test failure and success records by simply accessing `tester.currentSuite.failures` and `tester.currentSuite.passes` instead. Step and run completion callbacks don't throw anymore ----------------------------------------------------- Instead, you should listen to the ``step.error`` and ``complete.error`` events; if you really want to keep raising them:: casper.on("step.error complete.error", function(error) { throw error; });