Automated Frontend Testing

This article is about simulating browsers to test your webpages. Contrary to a unit-test you check your whole page with this. That is also why I think this is the most cost/time efficient method. But also you probably won't see so much cornercases and won't find so much bugs as in unit testing.

Guide through this article

I will just post all frameworks I've found here and add some subjective comments on this. Also I will only concentrate on those programming languages I know: php, python, java, javascript. I think this article is valuable, because I've tapped in the dark at the beginning of my research and a list would've helped me a bit.

Selenium

Probably the most widely known and perhaps most featurerrich. It supports multiple browsers (ie, chrome, firefox, htmlunit). It is also integrable as add-on into Firefox, which makes the creation of tests very easy. And it supports bindings to many different programming languages. I programmed with python+htmlunit on it and found it besides the later listed disadvantages quite nice. Good is that one has a simple api for multiple browsers.. So this framework is excellent for inter-browser tests.

Disadvantages I've found. * One can't resume a browser instance.. So when developing your script, you are forced to go through each step * One can't change the headers and adding cookies also works only _after_ a page was visited and then only are addable for this page * here and there the interface isn't so nice - filling out a form has no good api yet (for example to select from a select field one has to loop over each option - this could be done more nice)

Project page

Htmlunit

I didn't test it because it is java, only integrated in selenium and there it seemed to work fine. I've read somewhere, that its js-engine isn't used in any other browser.. But through my experience I found it could work with the most common (jquery) js things quite good. Project page

Phantomjs

A js and webkit based framework. I didn't test it either. There is a nicer js API for it with the name casperjs. Project page

PyQt4+webkit

Python bindings to webkit. The Api is extremely big and complex - but it is also very versatile. You can modify nearly everything. This is great, if you want more control, which selenium doesn't give to you. Project Page

Ghost.py

This adds a layer on top of pyqt4.webkit and gives a better API. For example easy form-filling or cookie saving/loading. Project Page (onofficial) Documentation

Python+Gtk+webkit

I haven't looked into this, but want to mention it too. Project Page

Commentaires: