Å·±¦ÓéÀÖ

Jump to ratings and reviews
Rate this book

PhantomJS Cookbook

Rate this book
Over 70 recipes to help boost the productivity of your applications using real-world testing with PhantomJS This book is intended for web development professionals who want to integrate PhantomJS into their development and testing workflows. If you are a web developer looking to run automated unit tests while you work, or perhaps you are a QA engineer looking for a fast test automation utility, then this book is perfect for you. Some prior knowledge of JavaScript would be helpful. 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. This book explores a variety of test automation tasks, including executing JavaScript unit tests with the Jasmine, QUnit, and Mocha frameworks; functional tests with tools such as Selenium, Capybara, and CasperJS; performance analysis with tools such as YSlow; and much more. If you are a web developer looking to run automated unit tests while you work, or perhaps you are a QA engineer looking for a fast test automation utility, then this book is perfect for you. Some prior knowledge of JavaScript would be helpful.

304 pages, Paperback

First published January 1, 2014

3 people are currently reading
14 people want to read

About the author

Rob Friesel

2Ìýbooks429Ìýfollowers
Rob Friesel is software jack-of-all-trades by day, and a science fiction writer by night. (Also a weekend homebrewer.) He blogs about and presents on a variety of technologies, but his first love is the front-end. He has contributed as a credited reviewer to several books on JavaScript and one on Clojure.

He blogs at .

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
5 (33%)
4 stars
10 (66%)
3 stars
0 (0%)
2 stars
0 (0%)
1 star
0 (0%)
Displaying 1 - 5 of 5 reviews
1 review
July 27, 2014
I read one of the books� recipes Automating performance analysis with YSlow and PhantomJS on the Packt website, and was thrilled when given the opportunity to review it.

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 consistently. 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.
Profile Image for Philip Arad.
17 reviews
July 2, 2014
If you are a web developer looking to run automated unit tests while you work, or you are a QA engineer looking for a fast test
automation utility, then I strongly suggest that you read the new book from Packt publishing 'PhantomJS Cookbook' ().
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.
It explores a variety of test automation tasks, including executing JavaScript unit tests with the Jasmine, QUnit, and Mocha frameworks,
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.
9 reviews
July 15, 2014
the book is possibly a bit TOO detailed when it comes to things like showing the version of the phantom.js installation in a lengthy way, but that's not really a negative point. i recommend having experience with node.js before opening this book, knowledge of phantom.js is not necessary but it helps a lot to take a short look at the phantom.js website for the first steps.
the book describes pretty much everything you would ever want to do with phantom.js, i guess (i would not know about anything that´s missing). from the most simple website scraping and handling cookies in a detailed way to simulating image errors and unit testing with a strong focus on jasmine and whatnot. it is huge!

btw, the good stuff starts at chapter 3, before there are a lot of pages with basic node.js knowledge like how to create and use modules, or how to read and write from and to the file system. that´s not really about phantom.js actually.

cons: the explanations are usually way too long. you can expect that the reader is familiar with programming in node.js, so it is not necessary to describe every single step and it just creates a lot more pages.
another con that´s unimportant on a kindle but imho very important if you buy the real book or read the pdf: there is no syntax highlighting/coloring... :(

TL;DR
really great book with lots of recipes, suitable for beginners in phantomjs, but you should have some experience with node.js.
Profile Image for Rodrigo Martín.
7 reviews
July 20, 2014


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
Profile Image for Alvaro Tejada Galindo.
178 reviews5 followers
April 4, 2017
I gotta say...if you already bought "Getting Started with PhantomJS"...then you need to buy this "Cookbook"...really...it's really cool -;)
Displaying 1 - 5 of 5 reviews

Can't find what you're looking for?

Get help and learn more about the design.