Automated In-Browser Testing with Cucumber and Watir - Northern ...

bricklayerbelchedInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 5 χρόνια και 3 μήνες)

242 εμφανίσεις


April 7, 2010

Automated In
Browser Testing with
Cucumber and

Rudy Regner

Mike Perz

Erik Scheirer

Rasik Pandey

Rudy Regner

Introductory Notes

We’re all on

Send us questions regarding any details presented

Presentation Goals and Objectives

Mike Perz: Test Automation Framework

Erik Scheirer: End
End SDLC Architect

Rus Pandey: BDD Tools Expert

Our Situation

Writing regression tests for an app in production

Only required to support IE

Rails v1.2.3

Precludes using Webrat latest version

?? Could possibly have used earlier version ??

why regression tests for earmarks?

Bug made it through manual testing

Encapsulate critical functionality in automated
regression test scripts to decrease likelihood of this
failure occurring again.

Mike Perz

How accomplished the automation framework

Challenges encountered

Our Learning Curve

Started with Watir

Easy to get up and running

Added Cucumber (RSpec)

Replaced Watir with Webrat and Selenium

Sought flexibility gain through re
use of Webrat to drive
Selenium, Mechanize or straight Rails

Productivity dropped with Selenium

Watir can manipulate the DOM as objects. (you can iterate
through the cells of an html table)

With Selenium you would have to find each cell individually.

Script debugging difficult without irb

You can attach to a browser window* (with Watir)

Converted existing Selenium code to Watir

Cucumber Feature snippet

associated Step Definition

Scenario Outline example

(similar to fitnesse tables)

Cucumber Test Summary Output

Once we switched back to Watir

At first our tests were dependent on each other

They needed to be run in a particular order.

We used Rake to accomplish this.

Open 4 browsers with 4 different users (


Now we can attach

to whichever browser
session we need


We use

to keep track of which user is
associated with which browser session

Interesting side benefits to writing
automated tests

Writing automated tests helped/made us
understand the app better.

Found application bugs that were missed

Other useful tools


IE Developer Toolbar



Erik Scheirer

Spreading the Developer Joy

Benefits of a single executable Cucumber
artifact end


Your Organization

What Rules? Confusion? Sanity?

Even if its sane, it probably can be more so.

Some groups have managed a high degree
of sanity.

But what most organizations are
experiencing is ...


little Trust between groups + infighting

bad communication

no ‘Process’ (or its limping, bleeding, out
the door)

no time to implement anything new,
constantly fighting fires instead

This approach

provides an end
end process via
architecture, convention, and tools

is easy to implement

is easy to customize to exacting technical
needs and group culture

This approach

builds better quality

builds more trust between technical and
technical stakeholders

utilizes resources more effectively



catch that bug early!

Unit tests, feature and black
box testing,
via one single artifact

in this case an Agile approach (scrum)

artifact re
use creates self

One Artifact,

multiple uses

developer can create cucumbers as
part of T/BDD, and also to capture
by requirements’

QA can create ‘cukes’ for regression

Cukes can be fed from dev. to QA or
vice versa

Cukes can be used by Continuous
Integration, and in Production

Next, the Process from multiple

Stakeholder interaction,

design and architecture,

includes non


testing & daily

The overall lifecycle

The daily grind


Building Trust

spreading the joy


There is a way to achieve more success,
better utilization of existing resources, and
get more sleep; using a simple, adaptable
architecture coupled with process,
convention, and tools.

Did we mention ‘metrics’ and how these
can be used to CTBE in this manner, too?

Its also all open
source, so its
customizable to a great degree.

Thank you for listening.

Rus Pandey

How BDD would work

Other possible tools

Ideal BDD Process:

1. Describe behaviour in plain text

2. Write a step definition in cucumber

3. Run and watch it fail

4. Write code to make the step pass

5. Run again and see the step pass

6. Repeat 2
5 for all your functionality


Since it takes 3 hours to run a test suite we
should investigate using spork and
drb and
testjour to distribute the test load if possible
to speed up test runs.

Test Web apps in any language:

Drive a full or headless browser using one of these


Ruby acceptance testing for web applications


Acceptance testing framework with a webrat
like API and support for multiple
backends, including RackTest, Selenium, Celerity and Culerity


Drives a fast headless browser with Javascript support. Support for the normal
webrat step definitions, see Setting up Steam

*Testing PHP app using Webrat


Drives IE, Firefox, Chrome


Drives IE (Windows only), see: Setting up FireWatir


Drives Firefox on Windows, OSX and GNU/Linux


Drives Safari (OS X only)


Drives Google Chrome


Drives a fast headless browser with Javascript support. Examples here


For when you can’t run your app under jRuby


Runs any browser (any OS), see: Setting up Selenium


Runs a headless browser (any OS)

Examples of Cucumber being used in the real world across
various languages/platforms to test all sorts of things