assists you in building PageObjects to make your acceptance tests more object oriented.
$ gem install corner_stones
or in your Gemfile
gem 'corner_stones'
a lot of examples can be found in the integration specs. Some features of corner_stones are listed below.
tabs = CornerStones::Tabs.new('.tab-navigation')
tabs.open('Details') # open a tab
tabs = CornerStones::Tabs.new('.tab-navigation').tap do |t|
t.extend(CornerStones::Tabs::ActiveTracking)
end
tabs.open('About') # open a tab and verify that the opened tab is active
tabs.assert_current_tab_is('Main') # verify that the tab 'Main' is active
flash = CornerStones::FlashMessages.new
flash.assert_flash_is_present(:notice, 'Article saved') # verify that a given flash message is present
table = CornerStones::Table.new('.articles')
table.rows # returns an array of rows. Each row is represented as a Hash {header} => {value}
table.row('Title' => 'Management') # returns the row-hash for the row with 'Management' in the 'Title' column
table = CornerStones::Table.new('.articles').tap do |t|
t.extend(CornerStones::Table::SelectableRows)
t.extend(CornerStones::Table::DeletableRows)
end
table.select_row('Created at' => '01.12.2001') # select the row, which has '01.12.2001' in the 'Created at' column
table.delete_row('ID' => '9') # delete the row, which contains '9' in the 'ID' column
form = CornerStones::Form.new('.new-article', :select_fields => ['Author'])
form.fill_in_with('Title' => 'Some Article', 'Author' => 'C. J.') # fill out the form
form.submit # submit the form using the 'Save' button
form.submit(:button => 'Save Article') # submit the form using the 'Save Article' button
form.process(:fill_in => {'Title' => 'Some Article', 'Author' => 'C. J.'},
:button => 'Save Article') # fill out + submit
form = CornerStones::Form.new('.update-article').tap do |f|
f.extend(CornerStones::Form::WithInlineErrors)
end
form.errors # returns an Array of form errors
form.assert_has_no_errors # verify that the form was submitted correctly
form.submit # verifies that the form has no errors
form.submit(:assert_valid => false) # do not veirfy that no errors were present