Why Not Robot Framework?
Pros
Similar to BDD/ATDD test writing
Page Object implemented through Selenium2library
plugin
Possible to write extensions in Python
Produces output in html
Cons
Requires building own framework (with extensions)
Requires learning RF own language for writing test
scenarios
Indirect webdriver support through Selenium2library
Tests are written in txt files
Why not Behave?
Pros
BDD/ATDD is supported through Gherkin
Libraries in Python
Produces output in json and html
Latest webdriver library supported
More cucumber-like, better than RF in keyword logic
Cons
Page Object is not supported out-of-the-box
Building custom framework layer required
Only basic usage tutorials are available
Why not some fancy JS Framework?
Node.js + protractor.js + webdriver.js
Pros
BDD/ATDD is supported through Gherkin in cucumber.js
Page-object through protractor.js
Fresh and buzzy
Robustly works with angular applications
Output in html and json
Cons
Strong knowledge of JS required
Only some basic tutorials available
Immature frameworks, too many of them
Has a high-entry point, more optimized for e2e testing
Why
Ruby/Cucumber/PageObje
ct/Watir?
Pros
Full support of Cucumber
Advanced Page-Object framework as a gem
Rspec makes mocking and assertion more
advanced
Excellence of both watir and webdriver
Nice book fromJeff Morgan – “Cucumber and
Cheese”
Cons
Can be a separate language stack
Learn other ruby gems for things like mysql, ssh and
so on
Page-object gem for Ruby
https://github.com/cheezy/page-object
Assists in creating flexible page-objects for testing
browser based applications
Facilitates creation of abstraction layers in the
tests and makes decoupling easy
Provides simple API interface to the elements on
a page
Page-object gem for Ruby
Works with both watir-webdriver and selenium-
webdriver
Robust way of dealing with Ajax Calls
A clean way of handling JavaScripts pop-ups
A simple way of dealing with Frames and iFrames
Supports most HTML elements
Tagging
You can use tags to mark your scenarios
Some tags are user for hooks
There could be many tags for one scenario
Effective execution of needed test scenarios
Scenario vs. Scenario Outline
Use different values instead of multiplying scenarios
Allows to more concisely express the example through
the use of placeholders
Scenario Outline steps provide a template which is
never directly run
Problematic for some cucumber Reporting plug-ins in
Jenkins
Continuous Integration with
Jenkins
RVM plugin for executing tests in RVM env
Cucumber-reports or Cucumber Test Result Plugin
for reporting
Xvfb plugin for running tests headless
Build With Parameters for manual execution using
different param