Skip to content
Opinionated Selenium testing framework
Latest commit 768a791 Dec 14, 2011 @jmathes jmathes Merge pull request #12 from epall/master
slow mode
Failed to load latest commit information.
bin Sketching out a runner Apr 22, 2011
lib/test slow mode Dec 14, 2011
test Generate setup.rb Jul 12, 2011
.gitignore Move selectors inside widgets Apr 26, 2011
Gemfile Yikes lots of stuff going on Apr 25, 2011
LICENSE Basic skeleton Apr 21, 2011 Remove comma that breaks syntax May 18, 2011
Rakefile Yeaa code coverage! Apr 25, 2011
test.watchr Lots of TDD Apr 25, 2011
test_right.gemspec Generate setup.rb Jul 12, 2011

Test::Right - Opinionated full-stack browser testing

Test::Right is a testing framework designed to help users get maximum value out of browser testing. It provides a flexible Page Object model for building robust, reliable tests quickly and easily. No more slogging through XPaths in Selenium IDE: Test::Right is the right way to build browser tests.


gem install test_right
test_right install

The test_right executable will create a default directory structure in test/right for you to put your tests in.

Begin by setting the base_url setting in test/right/config.yml to the base URL of your application staging environment. Then add the necessary code to reset your application state and launch your server to setup.rb.

Tests are defined in terms of actions and properties on widgets. A widget is a piece of functionality present on one more more pages of your application. A single page can have many widgets, and multiple copies of a widget may appear on the same page.

To get started, add widget definitions to the widgets/ directory. A widget defines its elements in terms of standard Selenium 2 selectors and actions in terms of those elements. For example, something like this in test/right/widgets/login.rb:

class LoginWidget < Test::Right::Widget
  field :username, :id => 'username'
  button :login, :css => "input[type=submit]"

  action :login do |username, password|
    fill_in :username, username
    click :login

class CartWidget  < Test::Right::Widget
  element :count, :id => 'item_count'

  property :number_of_items do

Once your widgets are setup, write tests for features of your application in test/right/features. For example, something like this would go in test/right/features/shopping_cart.rb:

class ShoppingCartFeature < Test::Right::Feature
  def setup
    with LoginWidget do |w|

  def test_adding_item
    with ItemWidget do |w|

    with CartWidget do |w|
      assert_equal 1, w.number_of_items 

Learn more on the Test::Right wiki at

Something went wrong with that request. Please try again.