A simple DSL extending Capybara.
Ruby
Pull request Compare This branch is 107 commits ahead of despo:master.
Latest commit 2e1dbbe Mar 14, 2013 @despo despo Update .travis.yml
don't test rubinius
Failed to load latest commit information.
lib/prickle Releasing new version Mar 14, 2013
spec wait_until has been deprecated so using Timeout Mar 14, 2013
.gitignore
.rspec rspec defaults to -cfd Feb 12, 2012
.travis.yml
Gemfile
README.md Releasing new version Mar 14, 2013
Rakefile letting scripts fail Feb 11, 2012
prickle.gemspec
prickle.png first commit Feb 8, 2012

README.md

Prickle

Build Status Code Climate

Configuration

To install prickle execute

gem install prickle

Configure by updating the features/support/env.rb to include the following:

require 'prickle/capybara'    # require


World do
   include Capybara::DSL
   include Prickle::Capybara  # include  Prickle
end

For Capybara 2.0, make sure you are using prickle ≥ 0.1.0

Waiting for elements to become visible

To enable this feature you need to set the Prickle::Capybara.wait_time property.

Prickle::Capybara.wait_time = 5

If you only want to extend the wait time for a particular feature, then you need to reset the wait time using Prickle::Capybara = nil after your call..

Prickle::Capybara.wait_time = 5
element(:href => "http://google.com").click
Prickle::Capybara.wait_time = nil             # reset wait time

Usage

Find elements by any html tag(s)

element(:href => "http://google.com")
element(:name => "blue")
element(:id => "key")
element(:class => "key", :id => "button")

You can also find elements by a value contained in the identifier

element(:name.like => "blue") # will match <button name="blue_12345">

Find elements by type and html tag(s)

element(:link, :href => "http://google.com")    # you can also use link and paragraph (instead of a and p)
element(:input, :name => "blue")

Apply a search, a click or a text matcher

element(:name => "flower").exists?
element(:name => "flower").click
element(:name => "flower").contains_text? "Roses"
element(:name => "flower").has_text? "Anemone"  # exact match

Popup

Selenium

popup.confirm
popup.dismiss
popup.message

popup.contains_message? "<text>"

Webkit

popup.confirm {
  #block that triggers confirmation dialog
}

popup.dismiss {
  #block that triggers confirmation dialog
}

popup.accept {
  #block that triggers alert
}

Verifying popup messages

alert = popup.accept {
  #block that triggers alert
}

alert.contains_message? "<text>"

Alternative syntax

Find

find_by_name "green"
find_button_by_name "green" #find_<element_tag>_by_name "<name>"

Click

click_by_name "blue"
click_input_by_name "blue" #click_<element_tag>_by_name "<name>"

Match text

div_contains_text? "text" #<element_tag>_contains_text? "text"

Capturing screenshots

Configure the directory where you want the screenshots to be saved

Prickle::Capybara.image_dir = File.dirname(__FILE__) + "/screenshots/"
capture_screen
capture_screen "<file>"