Selenium test for computedStyle

I wanted to write some automated tests for CSS changes and bugs, these type of issues are quite prone to regression so re-running the tests has a large benefit.

It is possible to add new assertions to selenium via the user-extensions.js file

The following adds a test for computed style, this only works in firefox as far as I know - but some automation is better than none


//only works in firefox
Selenium.prototype.assertStyle = function(locator, text) {
var params = text.split('=', 2);

var propertyName = params[0];
var expectedValue = params[1];

Read more

Selenium UI-Elements Rollups

I wasn't 100% clear from the docs how to implement rollup rules in selenium ui-elements and searching the web didn't return much - so here's an example in case it's helpful to others.

Add this to the user-extensions.js file


var manager = new RollupManager();

manager.addRollupRule({
name: 'compare_product'
, description: 'gets to the reults on a compare product page'
, args: [
{
name: 'term'
, description: 'the aliased term name of the category'
}
, {
name: 'provider'

Read more

Selenium UI-Elements

While playing around with selenium IDE I discovered a fantatsic tool that makes test (and results) more readable while making the suite of tests easier to adapt to layout changes.

What it does is to allow you to centrally define most of the xpath (and related) statements and give page elements meaningful names.

So instead of testing for some element like

//form[@id='search-block-form']//input[@type='text']

You can test for

ui=allPages::mainSearchField()

Read more

SeleniumRC and self signed SSL certs

One of the nice things about selenium tests is that you get a clean browser session each time (so no problems with cookies etc left over from earlier)

But the way this is achieved is by using a new profile each time and this profile doesn't know about your SSL exceptions for avoiding error messages with those self-signed certs on the dev server.

This causes access to SSL via selenium to fail.

You can get around this by creating a custom firefox profile

Create a new profile with

firefox -no-remote -P

Read more

Integrating Selenium and Hudson

Hudson http://hudson-ci.org/ is a continuous integration server - it runs and monitors 'jobs' in a way that is useful to regularly build software and report on any errors.

Selenium http://seleniumhq.org/ is a suite of tools specifically for testing web
applications - it tests the full website by automating the running of one or more browsers (so you can test all that pointy clicky ajaxy stuff)

Read more

Selenium IDE exports to PHP

Oh cool :-)

I just noticed that selenium IDE has the option to export tests as PHP unit tests.

This is great - the IDE is a good way to interactively build up tests by recording a set of actions and tweaking what it records. 

And being able to save them as unit tests makes it easy to integrate this with automated testing.

Interestingly they are created as PHPunit tests - not simpletest tests.

Read more

Cross Platform Testing with Selenium and VirtualBox

As well as following standards such as those laid down by www.w3.org I always try and test websites I develop across a range of browsers. Despite improvements in compatibility in recent years, browsers do still vary in implementation and even relatively minor browsers are still used by large numbers of people.

However all this testing can be hard to keep on top of and sometimes I just have to push out what seems like a small code change with only limited testing.

Read more