Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
PhantomJS Cookbook Paperback – June 12, 2014
|New from||Used from|
See the Best Books of 2018 So Far
Looking for something great to read? Browse our editors' picks for the best books of the year so far in fiction, nonfiction, mysteries, children's books, and much more.
Frequently bought together
Customers who bought this item also bought
About the Author
If you buy a new print edition of this book (or purchased one in the past), you can buy the Kindle edition for only $2.99 (Save 86%). Print edition purchase must be sold by Amazon. Learn more.
For thousands of qualifying books, your past, present, and future print-edition purchases now lets you buy the Kindle edition for $2.99 or less. (Textbooks available for $9.99 or less.)
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The first three chapters of this book explain how to get Phantom installed, use its core modules and begin working with webpages. The next four chapters cover specific use cases: unit, functional and performance testing and generating screenshots and documents. The final chapter describes how to setup Jenkins (the continuous integration server) to run your PhantomJS code.
A couple of things stood out in this book:
This book is not designed to be read straight through from cover to cover – like I did. Each of the recipes is designed to be self-contained (though this does lead to several paragraphs being repeated in most recipes – how to start the books demo site and run the example script). Making it easy to cherry pick the recipes that fit your needs and ignore those that don’t (i.e., the unit testing chapter contains recipes for running QUnit, Mocha and Jasmine tests – I doubt anyone is using all of these).
The author clearly understands Phantom, both its strengths and weaknesses, at a very deep level. Several times he pointed out functions that lack documentation or where the documentation is incorrect. This type of information can save countless hours of debugging and frustration. Likewise, he clearly states where the use of an additional library (i.e., Casper) can make things simpler. When the reader may be left questioning how or why to use a specific recipe (i.e., Preventing CSS from downloading) he provides a clear and simple use case (to view the site when styles are disabled).
The book makes the most of its cross references and external links. When a topic is introduced, but is outside the book’s scope the author provides a link to additional information (i.e., how to install Jenkins). Likewise, each recipe contains a “See also” section that references other recipes from the book, though in the eBook version not all of these were hyperlinked to the corresponding section. This was made worse by the fact that the table of contents only lists the chapter titles, not individual recipes, resulting in a lot of swiping to find the correct page.
I did see a few minor issues:
Deprecated code is not treated consistantly. In one instance (Running a PhantomJS script with arguments) phantom.args and phantom.scriptName provide the main functionality. The author notes that these functions are deprecated and their use therefore discouraged, and adding “Although using them for quick one-off exploratory scripts is fine, neither of these properties should go into any library that we intend to maintain or distribute. He also mentions the now preferred method of getting the same info using the system module. Which left me with several questions – why explore code using a method not suited to production? Why include the deprecated functions at all? Why not just rewrite the example to use the system module? However, when discussing the WebPage constructor he includes an example of the now deprecated form of the constructor noting that it should not be used, but was included because the reader may see it in older code. In my opinion this was a much better method of dealing with the issues presented by deprecated code.
In the testing chapters I would have liked to have seen the results of the non-happy path (not all tests pass every time - if yours do your doing it wrong). What happens when the tests fail? Where can I get help interpreting the failure message? Are there online resources I can turn to like StackOverflow, a mailing list or IRC?
I found it curious that when using Selenium the author chose to use the JAVA bindings and not the JS bindings – this may be a case of the author being more familiar with the java bindings, but since the book is based on a JS lib I would have thought that a better choice.
In one recipe he suggests solving an error by deleting and reinstalling the node modules – but includes no discussion of why or how this solves the problem. While this will likely have no negative effects I still like to know why I am doing something.
As I have said the recipes in this book are designed to be self-contained, in a handful of cases the author breaks from his pattern, most notably when using the confess.js library. He only discusses the config file after using it/mentioning it several times, making this information much harder to find.
Overall the good far outweighs the bad in this book. For me the chapters on performance testing and continuous integration easily repaid the time invested in reading this book and implementing several of the book’s recipes.
Since this book is not designed to be read from cover to cover, the question of value is a little harder to answer; but in the end, if you’re already using Phantom JS and are trying to maximize your return on investment, implementing only a couple of the book’s recipes should make it a worthwhile investment.
automation utility, then I strongly suggest that you read the new book from Packt publishing 'PhantomJS Cookbook' (http://goo.gl/NJnFq1).
This book will guide you in integrating PhantomJS into your development environment and testing workflows.
If you are not familiar with PhantomJS, it is a headless browser, and an ideal platform to run on top of it popular testing libraries
such as Jasmine, Mocha, and QUnit.
Beginning with the basics of PhantomJS, this book will dive into its core modules and guide you through how to solve real-world testing problems.
functional tests with tools such as Selenium, Capybara, and CasperJS, performance analysis with tools such as YSlow and much more.
You will learn how to develop your own PhantomJS core modules, sophisticated strategies for interacting with web page contents and how to
capture those interactions, create a front-end continuous integration strategy and implement functional and end-to-end testing using tools
such as Selenium, Capybara, and CasperJS.
Finaly you will automate performance analysis with libraries such as Confess.js and YSlow and automate the generation of images and PDFs of
your web content.
If you only start your way into PhantomJS, or you have already some experience with it, you will find this book most useful.
The PhantomJS Cookbook starts explaining the basics of PhantomJS.
Later on, a set of recipes explains the core modules.
How to interact with webpage objects comes next, including http actions, injecting js into the browser, simulation
uf user input actions, web sockets and an interesting way of blocking css from downloading, amongst others.
Then we are presented with how to drive unit tests usign PhantomJS as the main driver, with recipes for a wide
set of technologies: jasmine, karma, qunit, grunt for tasks automation. It also presents how to integrate with code
coverage reports tool like Istanbul.
The reading continues with Functional and end-to-end testing recipes, with Selenium, GhostDriver, Poltergeist, Capybara
Casper JS, just to name some of them. I've found the ideas for the recipes on how to perform visual regressions using
PhantomCSS very useful.
The latest chapters provides good examples for Network monitoring and Performance Analysis, generation of images and
documents for the reporting part of your testing and development efforts, and finally how to seamessly integrate
PhantomJS with your CI server.
I would recommend this book to readers who wants to dig in how to integrate headless testing to your current
battery of automated tests. It also explains other concepts, besides PhantomJS, that adds value to the overall proposal
of this publication.
One little note, though, is the repetition on all the chapters of how to start the example application. Please refactor! :P