bermuda 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
 - data/Gemfile +3 -0
 - data/Gemfile.lock +72 -0
 - data/LICENSE +20 -0
 - data/README.rdoc +45 -0
 - data/Rakefile +7 -0
 - data/bermuda.gemspec +26 -0
 - data/features/step_definitions.feature +69 -0
 - data/features/step_definitions/web_steps.rb +34 -0
 - data/features/support/env.rb +16 -0
 - data/features/support/public/accordion.html +62 -0
 - data/features/support/public/autocomplete.html +46 -0
 - data/features/support/public/dialog.html +17 -0
 - data/features/support/public/progressbar.html +15 -0
 - data/features/support/public/slider.html +15 -0
 - data/features/support/public/tabs.html +31 -0
 - data/features/support/selectors.rb +25 -0
 - data/lib/bermuda.rb +6 -0
 - data/lib/bermuda/cucumber.rb +79 -0
 - data/lib/bermuda/version.rb +3 -0
 - data/lib/bermuda/xpath.rb +80 -0
 - metadata +139 -0
 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            PATH
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: .
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                bermuda (0.0.1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  capybara (~> 0.4.0.rc)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  cucumber (~> 0.9.2)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 9 
     | 
    
         
            +
              remote: http://rubygems.org/
         
     | 
| 
      
 10 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 11 
     | 
    
         
            +
                builder (2.1.2)
         
     | 
| 
      
 12 
     | 
    
         
            +
                capybara (0.4.0.rc)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  celerity (>= 0.7.9)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  culerity (>= 0.2.4)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  mime-types (>= 1.16)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  nokogiri (>= 1.3.3)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  rack (>= 1.0.0)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  rack-test (>= 0.5.4)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  selenium-webdriver (>= 0.0.27)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  xpath (~> 0.1.2)
         
     | 
| 
      
 21 
     | 
    
         
            +
                celerity (0.8.2)
         
     | 
| 
      
 22 
     | 
    
         
            +
                childprocess (0.1.0)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  ffi (~> 0.6.3)
         
     | 
| 
      
 24 
     | 
    
         
            +
                cucumber (0.9.2)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  builder (~> 2.1.2)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  diff-lcs (~> 1.1.2)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  gherkin (~> 2.2.5)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  json (~> 1.4.6)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  term-ansicolor (~> 1.0.5)
         
     | 
| 
      
 30 
     | 
    
         
            +
                culerity (0.2.12)
         
     | 
| 
      
 31 
     | 
    
         
            +
                diff-lcs (1.1.2)
         
     | 
| 
      
 32 
     | 
    
         
            +
                ffi (0.6.3)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  rake (>= 0.8.7)
         
     | 
| 
      
 34 
     | 
    
         
            +
                gherkin (2.2.9)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  json (~> 1.4.6)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  term-ansicolor (~> 1.0.5)
         
     | 
| 
      
 37 
     | 
    
         
            +
                json (1.4.6)
         
     | 
| 
      
 38 
     | 
    
         
            +
                json_pure (1.4.6)
         
     | 
| 
      
 39 
     | 
    
         
            +
                mime-types (1.16)
         
     | 
| 
      
 40 
     | 
    
         
            +
                nokogiri (1.4.3.1)
         
     | 
| 
      
 41 
     | 
    
         
            +
                rack (1.2.1)
         
     | 
| 
      
 42 
     | 
    
         
            +
                rack-test (0.5.6)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  rack (>= 1.0)
         
     | 
| 
      
 44 
     | 
    
         
            +
                rake (0.8.7)
         
     | 
| 
      
 45 
     | 
    
         
            +
                rspec (2.0.0)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  rspec-core (= 2.0.0)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  rspec-expectations (= 2.0.0)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  rspec-mocks (= 2.0.0)
         
     | 
| 
      
 49 
     | 
    
         
            +
                rspec-core (2.0.0)
         
     | 
| 
      
 50 
     | 
    
         
            +
                rspec-expectations (2.0.0)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  diff-lcs (>= 1.1.2)
         
     | 
| 
      
 52 
     | 
    
         
            +
                rspec-mocks (2.0.0)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  rspec-core (= 2.0.0)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  rspec-expectations (= 2.0.0)
         
     | 
| 
      
 55 
     | 
    
         
            +
                rubyzip (0.9.4)
         
     | 
| 
      
 56 
     | 
    
         
            +
                selenium-webdriver (0.0.29)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  childprocess (>= 0.0.7)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  ffi (~> 0.6.3)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  json_pure
         
     | 
| 
      
 60 
     | 
    
         
            +
                  rubyzip
         
     | 
| 
      
 61 
     | 
    
         
            +
                term-ansicolor (1.0.5)
         
     | 
| 
      
 62 
     | 
    
         
            +
                xpath (0.1.2)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  nokogiri (~> 1.3)
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 66 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 69 
     | 
    
         
            +
              bermuda!
         
     | 
| 
      
 70 
     | 
    
         
            +
              capybara (~> 0.4.0.rc)
         
     | 
| 
      
 71 
     | 
    
         
            +
              cucumber (~> 0.9.2)
         
     | 
| 
      
 72 
     | 
    
         
            +
              rspec (~> 2.0.0)
         
     | 
    
        data/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2010 John Firebaugh
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.rdoc
    ADDED
    
    | 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = bermuda
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Continuing in the naming tradition established by Aruba, Bermuda provides
         
     | 
| 
      
 4 
     | 
    
         
            +
            cucumber steps for driving out web applications which use jQuery UI widgets.
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            == Usage
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              gem install bermuda
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Then, just require the library in one of your ruby files under
         
     | 
| 
      
 11 
     | 
    
         
            +
            <tt>features/support</tt>
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              require 'bermuda/cucumber'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            You now have a bunch of step definitions that you can use in your features.
         
     | 
| 
      
 16 
     | 
    
         
            +
            Look at aruba/cucumber.rb to see all the step definitions. Look at
         
     | 
| 
      
 17 
     | 
    
         
            +
            features/*.feature for examples (which are also testing Bermuda itself).
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            == Selector Helpers
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            Bermuda provides some selector helpers that work in concert with Bodaniel Jeanes's
         
     | 
| 
      
 22 
     | 
    
         
            +
            selector helpers extension to cucumber-rails:
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                http://github.com/aslakhellesoy/cucumber-rails/pull/63
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            First, make sure your web_steps.rb is set up to support selector helpers. Follow
         
     | 
| 
      
 27 
     | 
    
         
            +
            the steps outlined in Bo's blog post:
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                http://bjeanes.com/2010/09/19/selector-free-cucumber-scenarios
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Then add the following lines to your selectors.rb:
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                when /the "([^"]+)" accordion section/
         
     | 
| 
      
 34 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.accordion_content($1)]
         
     | 
| 
      
 35 
     | 
    
         
            +
                when /the "([^"]+)" dialog/
         
     | 
| 
      
 36 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.dialog_content($1)]
         
     | 
| 
      
 37 
     | 
    
         
            +
                when /the "([^"]+)" tab/
         
     | 
| 
      
 38 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.tab_content($1)]
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            Now you can write steps such `Then I should see "foo" within the "bar" accordion section`
         
     | 
| 
      
 41 
     | 
    
         
            +
            and `When I click "Save" within the "Save Changes" dialog`.
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            == Copyright
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            Copyright (c) 2010 John Firebaugh. See LICENSE for details.
         
     | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bermuda.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.push File.expand_path("../lib", __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "bermuda/version"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.name        = "bermuda"
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.version     = Bermuda::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.platform    = Gem::Platform::RUBY
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.authors     = ["John Firebaugh"]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.email       = ["john.firebaugh@gmail.com"]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.homepage    = "http://rubygems.org/gems/bermuda"
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.summary     = %q{jQuery UI steps for cucumber and capybara}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = %q{Provides cucumber step definitions for testing jQuery UI widget interactions with capybara}
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              s.rubyforge_project = "bermuda"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              s.add_dependency "cucumber", "~> 0.9.2"
         
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_dependency "capybara", "~> 0.4.0.rc"
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              s.add_development_dependency "rspec", "~> 2.0.0"
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Feature: Step definitions
         
     | 
| 
      
 2 
     | 
    
         
            +
              As a developer
         
     | 
| 
      
 3 
     | 
    
         
            +
              I want step definitions that allow me to interact with jQuery UI widgets
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              Scenario: Accordion steps
         
     | 
| 
      
 6 
     | 
    
         
            +
                When I visit the accordion page
         
     | 
| 
      
 7 
     | 
    
         
            +
                Then I should see the following accordion sections:
         
     | 
| 
      
 8 
     | 
    
         
            +
                  | Section 1 |
         
     | 
| 
      
 9 
     | 
    
         
            +
                  | Section 2 |
         
     | 
| 
      
 10 
     | 
    
         
            +
                  | Section 3 |
         
     | 
| 
      
 11 
     | 
    
         
            +
                  | Section 4 |
         
     | 
| 
      
 12 
     | 
    
         
            +
                And the "Section 1" accordion section should be active
         
     | 
| 
      
 13 
     | 
    
         
            +
                And the "Section 2" accordion section should not be active
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                When I activate the "Section 2" accordion section
         
     | 
| 
      
 16 
     | 
    
         
            +
                And the "Section 1" accordion section should not be active
         
     | 
| 
      
 17 
     | 
    
         
            +
                And the "Section 2" accordion section should be active
         
     | 
| 
      
 18 
     | 
    
         
            +
                And I should see "Sed non urna" within the "Section 2" accordion section
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              Scenario: Autocomplete steps
         
     | 
| 
      
 21 
     | 
    
         
            +
                When I visit the autocomplete page
         
     | 
| 
      
 22 
     | 
    
         
            +
                And I fill in "Tags" with "R"
         
     | 
| 
      
 23 
     | 
    
         
            +
                Then I should see the following completions:
         
     | 
| 
      
 24 
     | 
    
         
            +
                  | ActionScript |
         
     | 
| 
      
 25 
     | 
    
         
            +
                  | AppleScript  |
         
     | 
| 
      
 26 
     | 
    
         
            +
                  | Clojure      |
         
     | 
| 
      
 27 
     | 
    
         
            +
                  | Erlang       |
         
     | 
| 
      
 28 
     | 
    
         
            +
                  | Fortran      |
         
     | 
| 
      
 29 
     | 
    
         
            +
                  | Groovy       |
         
     | 
| 
      
 30 
     | 
    
         
            +
                  | JavaScript   |
         
     | 
| 
      
 31 
     | 
    
         
            +
                  | Perl         |
         
     | 
| 
      
 32 
     | 
    
         
            +
                  | Ruby         |
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                When I select the "Ruby" completion
         
     | 
| 
      
 35 
     | 
    
         
            +
                Then the "Tags" field should contain "Ruby"
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              Scenario: Dialog steps
         
     | 
| 
      
 38 
     | 
    
         
            +
                When I visit the dialog page
         
     | 
| 
      
 39 
     | 
    
         
            +
                Then I should see the "Basic dialog" dialog
         
     | 
| 
      
 40 
     | 
    
         
            +
                And I should see "This is the default dialog" within the "Basic dialog" dialog
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                When I close the "Basic dialog" dialog
         
     | 
| 
      
 43 
     | 
    
         
            +
                Then I should not see the "Basic dialog" dialog
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              Scenario: Progressbar steps
         
     | 
| 
      
 46 
     | 
    
         
            +
                When I visit the progressbar page
         
     | 
| 
      
 47 
     | 
    
         
            +
                Then the progress bar should be at 37%
         
     | 
| 
      
 48 
     | 
    
         
            +
                Then the progress bar should be at 37 percent
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              Scenario: Slider steps
         
     | 
| 
      
 51 
     | 
    
         
            +
                When I visit the slider page
         
     | 
| 
      
 52 
     | 
    
         
            +
                Then the slider should be at 0
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                When I set the slider to 37
         
     | 
| 
      
 55 
     | 
    
         
            +
                Then the slider should be at 37
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              Scenario: Tabs steps
         
     | 
| 
      
 58 
     | 
    
         
            +
                When I visit the tabs page
         
     | 
| 
      
 59 
     | 
    
         
            +
                Then I should see the following tabs:
         
     | 
| 
      
 60 
     | 
    
         
            +
                  | Nunc tincidunt |
         
     | 
| 
      
 61 
     | 
    
         
            +
                  | Proin dolor    |
         
     | 
| 
      
 62 
     | 
    
         
            +
                  | Aenean lacinia |
         
     | 
| 
      
 63 
     | 
    
         
            +
                And the "Nunc tincidunt" tab should be active
         
     | 
| 
      
 64 
     | 
    
         
            +
                And the "Proin dolor" tab should not be active
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                When I activate the "Proin dolor" tab
         
     | 
| 
      
 67 
     | 
    
         
            +
                And the "Nunc tincidunt" tab should not be active
         
     | 
| 
      
 68 
     | 
    
         
            +
                And the "Proin dolor" tab should be active
         
     | 
| 
      
 69 
     | 
    
         
            +
                And I should see "Morbi tincidunt" within the "Proin dolor" tab
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module WithinHelpers
         
     | 
| 
      
 4 
     | 
    
         
            +
              def with_scope(locator)
         
     | 
| 
      
 5 
     | 
    
         
            +
                locator ? within(*selector_for(locator)) { yield } : yield
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
            World(WithinHelpers)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Single-line step scoper
         
     | 
| 
      
 11 
     | 
    
         
            +
            When /^(.*) within ([^:]+)$/ do |step, parent|
         
     | 
| 
      
 12 
     | 
    
         
            +
              with_scope(parent) { When step }
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            # Multi-line step scoper
         
     | 
| 
      
 16 
     | 
    
         
            +
            When /^(.*) within ([^:]+):$/ do |step, parent, table_or_string|
         
     | 
| 
      
 17 
     | 
    
         
            +
              with_scope(parent) { When "#{step}:", table_or_string }
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            When /^I visit the (.+) page$/ do |page|
         
     | 
| 
      
 21 
     | 
    
         
            +
              visit("/#{page}.html")
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Then /^I should see "([^"]+)"$/ do |text|
         
     | 
| 
      
 25 
     | 
    
         
            +
              page.should have_content(text)
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
         
     | 
| 
      
 29 
     | 
    
         
            +
              fill_in(field, :with => value)
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            Then /^the "([^"]*)" field should contain "([^"]*)"$/ do |field, value|
         
     | 
| 
      
 33 
     | 
    
         
            +
              find_field(field).value.should == value
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bundler'
         
     | 
| 
      
 2 
     | 
    
         
            +
            Bundler.require
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'capybara/cucumber'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'bermuda/cucumber'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rack/builder'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rack/file'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'rack/directory'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            Capybara.configure do |config|
         
     | 
| 
      
 12 
     | 
    
         
            +
              config.default_driver = :selenium
         
     | 
| 
      
 13 
     | 
    
         
            +
              config.app = Rack::Builder.app do
         
     | 
| 
      
 14 
     | 
    
         
            +
                run Rack::Directory.new "features/support/public"
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Accordion</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
            	$(function() { $( "#accordion" ).accordion(); });
         
     | 
| 
      
 10 
     | 
    
         
            +
            	</script>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <div id="accordion">
         
     | 
| 
      
 14 
     | 
    
         
            +
            	<h3><a href="#">Section 1</a></h3>
         
     | 
| 
      
 15 
     | 
    
         
            +
            	<div>
         
     | 
| 
      
 16 
     | 
    
         
            +
            		<p>
         
     | 
| 
      
 17 
     | 
    
         
            +
            		Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
         
     | 
| 
      
 18 
     | 
    
         
            +
            		ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
         
     | 
| 
      
 19 
     | 
    
         
            +
            		amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
         
     | 
| 
      
 20 
     | 
    
         
            +
            		odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
         
     | 
| 
      
 21 
     | 
    
         
            +
            		</p>
         
     | 
| 
      
 22 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 23 
     | 
    
         
            +
            	<h3><a href="#">Section 2</a></h3>
         
     | 
| 
      
 24 
     | 
    
         
            +
            	<div>
         
     | 
| 
      
 25 
     | 
    
         
            +
            		<p>
         
     | 
| 
      
 26 
     | 
    
         
            +
            		Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
         
     | 
| 
      
 27 
     | 
    
         
            +
            		purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
         
     | 
| 
      
 28 
     | 
    
         
            +
            		velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
         
     | 
| 
      
 29 
     | 
    
         
            +
            		suscipit faucibus urna.
         
     | 
| 
      
 30 
     | 
    
         
            +
            		</p>
         
     | 
| 
      
 31 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 32 
     | 
    
         
            +
            	<h3><a href="#">Section 3</a></h3>
         
     | 
| 
      
 33 
     | 
    
         
            +
            	<div>
         
     | 
| 
      
 34 
     | 
    
         
            +
            		<p>
         
     | 
| 
      
 35 
     | 
    
         
            +
            		Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
         
     | 
| 
      
 36 
     | 
    
         
            +
            		Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
         
     | 
| 
      
 37 
     | 
    
         
            +
            		ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
         
     | 
| 
      
 38 
     | 
    
         
            +
            		lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
         
     | 
| 
      
 39 
     | 
    
         
            +
            		</p>
         
     | 
| 
      
 40 
     | 
    
         
            +
            		<ul>
         
     | 
| 
      
 41 
     | 
    
         
            +
            			<li>List item one</li>
         
     | 
| 
      
 42 
     | 
    
         
            +
            			<li>List item two</li>
         
     | 
| 
      
 43 
     | 
    
         
            +
            			<li>List item three</li>
         
     | 
| 
      
 44 
     | 
    
         
            +
            		</ul>
         
     | 
| 
      
 45 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 46 
     | 
    
         
            +
            	<h3><a href="#">Section 4</a></h3>
         
     | 
| 
      
 47 
     | 
    
         
            +
            	<div>
         
     | 
| 
      
 48 
     | 
    
         
            +
            		<p>
         
     | 
| 
      
 49 
     | 
    
         
            +
            		Cras dictum. Pellentesque habitant morbi tristique senectus et netus
         
     | 
| 
      
 50 
     | 
    
         
            +
            		et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
         
     | 
| 
      
 51 
     | 
    
         
            +
            		faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
         
     | 
| 
      
 52 
     | 
    
         
            +
            		mauris vel est.
         
     | 
| 
      
 53 
     | 
    
         
            +
            		</p>
         
     | 
| 
      
 54 
     | 
    
         
            +
            		<p>
         
     | 
| 
      
 55 
     | 
    
         
            +
            		Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
         
     | 
| 
      
 56 
     | 
    
         
            +
            		Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
         
     | 
| 
      
 57 
     | 
    
         
            +
            		inceptos himenaeos.
         
     | 
| 
      
 58 
     | 
    
         
            +
            		</p>
         
     | 
| 
      
 59 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 60 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 61 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 62 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Autocomplete</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    $(function() {
         
     | 
| 
      
 10 
     | 
    
         
            +
                        var availableTags = [
         
     | 
| 
      
 11 
     | 
    
         
            +
                            "ActionScript",
         
     | 
| 
      
 12 
     | 
    
         
            +
                            "AppleScript",
         
     | 
| 
      
 13 
     | 
    
         
            +
                            "Asp",
         
     | 
| 
      
 14 
     | 
    
         
            +
                            "BASIC",
         
     | 
| 
      
 15 
     | 
    
         
            +
                            "C",
         
     | 
| 
      
 16 
     | 
    
         
            +
                            "C++",
         
     | 
| 
      
 17 
     | 
    
         
            +
                            "Clojure",
         
     | 
| 
      
 18 
     | 
    
         
            +
                            "COBOL",
         
     | 
| 
      
 19 
     | 
    
         
            +
                            "ColdFusion",
         
     | 
| 
      
 20 
     | 
    
         
            +
                            "Erlang",
         
     | 
| 
      
 21 
     | 
    
         
            +
                            "Fortran",
         
     | 
| 
      
 22 
     | 
    
         
            +
                            "Groovy",
         
     | 
| 
      
 23 
     | 
    
         
            +
                            "Haskell",
         
     | 
| 
      
 24 
     | 
    
         
            +
                            "Java",
         
     | 
| 
      
 25 
     | 
    
         
            +
                            "JavaScript",
         
     | 
| 
      
 26 
     | 
    
         
            +
                            "Lisp",
         
     | 
| 
      
 27 
     | 
    
         
            +
                            "Perl",
         
     | 
| 
      
 28 
     | 
    
         
            +
                            "PHP",
         
     | 
| 
      
 29 
     | 
    
         
            +
                            "Python",
         
     | 
| 
      
 30 
     | 
    
         
            +
                            "Ruby",
         
     | 
| 
      
 31 
     | 
    
         
            +
                            "Scala",
         
     | 
| 
      
 32 
     | 
    
         
            +
                            "Scheme"
         
     | 
| 
      
 33 
     | 
    
         
            +
                        ];
         
     | 
| 
      
 34 
     | 
    
         
            +
                        $( "#tags" ).autocomplete({
         
     | 
| 
      
 35 
     | 
    
         
            +
                            source: availableTags
         
     | 
| 
      
 36 
     | 
    
         
            +
                        });
         
     | 
| 
      
 37 
     | 
    
         
            +
                    });
         
     | 
| 
      
 38 
     | 
    
         
            +
                </script>
         
     | 
| 
      
 39 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 40 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 41 
     | 
    
         
            +
            <div class="ui-widget">
         
     | 
| 
      
 42 
     | 
    
         
            +
            	<label for="tags">Tags: </label>
         
     | 
| 
      
 43 
     | 
    
         
            +
            	<input id="tags">
         
     | 
| 
      
 44 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 45 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 46 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Dialog</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
            	$(function() { $( "#dialog" ).dialog(); });
         
     | 
| 
      
 10 
     | 
    
         
            +
            	</script>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <div id="dialog" title="Basic dialog">
         
     | 
| 
      
 14 
     | 
    
         
            +
            	<p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 16 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 17 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Progress Bar</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
            	$(function() { $( "#progressbar" ).progressbar({value: 37}); });
         
     | 
| 
      
 10 
     | 
    
         
            +
            	</script>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <div id="progressbar"></div>
         
     | 
| 
      
 14 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Slider</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
            	$(function() { $( "#slider" ).slider(); });
         
     | 
| 
      
 10 
     | 
    
         
            +
            	</script>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <div id="slider"></div>
         
     | 
| 
      
 14 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 15 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Tabs</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">
         
     | 
| 
      
 8 
     | 
    
         
            +
                <script>
         
     | 
| 
      
 9 
     | 
    
         
            +
            	$(function() { $( "#tabs" ).tabs(); });
         
     | 
| 
      
 10 
     | 
    
         
            +
            	</script>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <div id="tabs">
         
     | 
| 
      
 14 
     | 
    
         
            +
            	<ul>
         
     | 
| 
      
 15 
     | 
    
         
            +
            		<li><a href="#tabs-1">Nunc tincidunt</a></li>
         
     | 
| 
      
 16 
     | 
    
         
            +
            		<li><a href="#tabs-2">Proin dolor</a></li>
         
     | 
| 
      
 17 
     | 
    
         
            +
            		<li><a href="#tabs-3">Aenean lacinia</a></li>
         
     | 
| 
      
 18 
     | 
    
         
            +
            	</ul>
         
     | 
| 
      
 19 
     | 
    
         
            +
            	<div id="tabs-1">
         
     | 
| 
      
 20 
     | 
    
         
            +
            		<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
         
     | 
| 
      
 21 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 22 
     | 
    
         
            +
            	<div id="tabs-2">
         
     | 
| 
      
 23 
     | 
    
         
            +
            		<p>Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus.</p>
         
     | 
| 
      
 24 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 25 
     | 
    
         
            +
            	<div id="tabs-3">
         
     | 
| 
      
 26 
     | 
    
         
            +
            		<p>Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus.</p>
         
     | 
| 
      
 27 
     | 
    
         
            +
            		<p>Duis cursus. Maecenas ligula eros, blandit nec, pharetra at, semper at, magna. Nullam ac lacus. Nulla facilisi. Praesent viverra justo vitae neque. Praesent blandit adipiscing velit. Suspendisse potenti. Donec mattis, pede vel pharetra blandit, magna ligula faucibus eros, id euismod lacus dolor eget odio. Nam scelerisque. Donec non libero sed nulla mattis commodo. Ut sagittis. Donec nisi lectus, feugiat porttitor, tempor ac, tempor vitae, pede. Aenean vehicula velit eu tellus interdum rutrum. Maecenas commodo. Pellentesque nec elit. Fusce in lacus. Vivamus a libero vitae lectus hendrerit hendrerit.</p>
         
     | 
| 
      
 28 
     | 
    
         
            +
            	</div>
         
     | 
| 
      
 29 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 30 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 31 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module HtmlSelectorsHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Maps a name to a selector. Used primarily by the
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              #   When /^(.+) within (.+)$/ do |step, scope|
         
     | 
| 
      
 5 
     | 
    
         
            +
              #
         
     | 
| 
      
 6 
     | 
    
         
            +
              # step definitions in web_steps.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              def selector_for(locator)
         
     | 
| 
      
 9 
     | 
    
         
            +
                case locator
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                when /the "([^"]+)" accordion section/
         
     | 
| 
      
 12 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.accordion_content($1)]
         
     | 
| 
      
 13 
     | 
    
         
            +
                when /the "([^"]+)" dialog/
         
     | 
| 
      
 14 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.dialog_content($1)]
         
     | 
| 
      
 15 
     | 
    
         
            +
                when /the "([^"]+)" tab/
         
     | 
| 
      
 16 
     | 
    
         
            +
                  [:xpath, Bermuda::XPath.tab_content($1)]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                else
         
     | 
| 
      
 19 
     | 
    
         
            +
                  raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
         
     | 
| 
      
 20 
     | 
    
         
            +
                    "Now, go and add a mapping in #{__FILE__}"
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            World(HtmlSelectorsHelpers)
         
     | 
    
        data/lib/bermuda.rb
    ADDED
    
    | 
         @@ -0,0 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Nothing is required by default, so you can specify `gem :bermuda` in
         
     | 
| 
      
 2 
     | 
    
         
            +
            # your Gemfile without actually loading any step definitions (which require
         
     | 
| 
      
 3 
     | 
    
         
            +
            # the cucumber environment established by the 'cucumber' command).
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # To load the step definitions, require 'bermuda/cucumber' within a
         
     | 
| 
      
 6 
     | 
    
         
            +
            # file in features/support/ or features/step_definitions/.
         
     | 
| 
         @@ -0,0 +1,79 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bermuda/xpath'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Accordion
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Then /^I should see the following accordion sections:$/ do |titles|
         
     | 
| 
      
 6 
     | 
    
         
            +
              wait_until { page.has_xpath?(Bermuda::XPath.accordion_header) }
         
     | 
| 
      
 7 
     | 
    
         
            +
              titles.diff!(all(:xpath, Bermuda::XPath.accordion_header).map {|node| [node.text]})
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Then /^the "([^"]+)" accordion section should be active$/ do |title|
         
     | 
| 
      
 11 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.accordion_header(title, :active => true))
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Then /^the "([^"]+)" accordion section should not be active$/ do |title|
         
     | 
| 
      
 15 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.accordion_header(title, :active => false))
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            When /^I activate the "([^"]+)" accordion section$/ do |title|
         
     | 
| 
      
 19 
     | 
    
         
            +
              find(:xpath, Bermuda::XPath.accordion_header(title).child(:a)).click
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            # Autocomplete
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Then /^I should see the following completions:$/ do |choices|
         
     | 
| 
      
 25 
     | 
    
         
            +
              wait_until { page.has_xpath?(Bermuda::XPath.autocompletion) }
         
     | 
| 
      
 26 
     | 
    
         
            +
              choices.diff!(all(:xpath, Bermuda::XPath.autocompletion).map {|node| [node.text]})
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            When /^I select the "([^"]+)" completion$/ do |text|
         
     | 
| 
      
 30 
     | 
    
         
            +
              find(:xpath, Bermuda::XPath.autocompletion(text).child(:a)).click
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            # Dialog
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            Then /^I should see the "([^"]+)" dialog$/ do |title|
         
     | 
| 
      
 36 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.dialog(title), :visible => true)
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            Then /^I should not see the "([^"]+)" dialog$/ do |title|
         
     | 
| 
      
 40 
     | 
    
         
            +
              page.should_not have_xpath(Bermuda::XPath.dialog(title), :visible => true)
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            When /^I close the "([^"]+)" dialog$/ do |title|
         
     | 
| 
      
 44 
     | 
    
         
            +
              find(:xpath, Bermuda::XPath.dialog(title), :visible => true).click_link('close')
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            # Progress bar
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            Then /^the progress bar should be at (\d+)(?: percent|%)$/ do |value|
         
     | 
| 
      
 50 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.progressbar(:value => value))
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            # Slider
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            Then /^the slider should be at (\d+)$/ do |value|
         
     | 
| 
      
 56 
     | 
    
         
            +
              pending
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            When /^I set the slider to (\d+)$/ do |value|
         
     | 
| 
      
 60 
     | 
    
         
            +
              pending
         
     | 
| 
      
 61 
     | 
    
         
            +
            end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            # Tabs
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            Then /^I should see the following tabs:$/ do |titles|
         
     | 
| 
      
 66 
     | 
    
         
            +
              titles.diff!(all(:xpath, Bermuda::XPath.tab_header).map {|node| [node.text]})
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            Then /^the "([^"]+)" tab should be active$/ do |title|
         
     | 
| 
      
 70 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.tab_header(title, :active => true))
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            Then /^the "([^"]+)" tab should not be active$/ do |title|
         
     | 
| 
      
 74 
     | 
    
         
            +
              page.should have_xpath(Bermuda::XPath.tab_header(title, :active => false))
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            When /^I activate the "([^"]+)" tab$/ do |title|
         
     | 
| 
      
 78 
     | 
    
         
            +
              find(:xpath, Bermuda::XPath.tab_header(title).child(:a)).click
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'xpath'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module XPath
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Expression
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Includes < Binary
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # http://pivotallabs.com/users/alex/blog/articles/427-xpath-css-class-matching
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def to_xpath(predicate=nil)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    "contains(concat(' ', normalize-space(#{@left.to_xpath(predicate)}), ' '), concat(' ', #{@right.to_xpath(predicate)}, ' '))"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def includes(expression)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  Includes.new(current, expression)
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            module Bermuda
         
     | 
| 
      
 19 
     | 
    
         
            +
              module XPath
         
     | 
| 
      
 20 
     | 
    
         
            +
                include ::XPath
         
     | 
| 
      
 21 
     | 
    
         
            +
                extend self
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def accordion_header(title = nil, options = {})
         
     | 
| 
      
 24 
     | 
    
         
            +
                  xpath = descendant[attr(:class).includes('ui-accordion-header')]
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  if options.key?(:active)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    state = attr(:class).includes('ui-state-active')
         
     | 
| 
      
 28 
     | 
    
         
            +
                    state = ~state unless options[:active]
         
     | 
| 
      
 29 
     | 
    
         
            +
                    xpath = xpath[state]
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  xpath = xpath[descendant(:a).text.is title] if title
         
     | 
| 
      
 33 
     | 
    
         
            +
                  xpath
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def autocompletion(text = nil)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  xpath = descendant[attr(:class).includes('ui-autocomplete')]
         
     | 
| 
      
 38 
     | 
    
         
            +
                  xpath = xpath.descendant[attr(:class).includes('ui-menu-item')]
         
     | 
| 
      
 39 
     | 
    
         
            +
                  xpath = xpath[descendant(:a).text.is text] if text
         
     | 
| 
      
 40 
     | 
    
         
            +
                  xpath
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def accordion_content(title = nil, options = {})
         
     | 
| 
      
 44 
     | 
    
         
            +
                  accordion_header(title, options).next_sibling
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def dialog(title = nil)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  xpath = descendant[attr(:class).includes('ui-dialog')]
         
     | 
| 
      
 49 
     | 
    
         
            +
                  xpath = xpath[descendant[attr(:class).includes('ui-dialog-title')].text.is title] if title
         
     | 
| 
      
 50 
     | 
    
         
            +
                  xpath
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                def dialog_content(title = nil)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  dialog(title).descendant[attr(:class).includes('ui-dialog-content')]
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def progressbar(options = {})
         
     | 
| 
      
 58 
     | 
    
         
            +
                  xpath = descendant[attr(:class).includes('ui-progressbar')]
         
     | 
| 
      
 59 
     | 
    
         
            +
                  xpath = xpath[attr(:'aria-valuenow') == options[:value]] if options[:value]
         
     | 
| 
      
 60 
     | 
    
         
            +
                  xpath
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                def tab_header(title = nil, options = {})
         
     | 
| 
      
 64 
     | 
    
         
            +
                  xpath = descendant[attr(:class).includes('ui-tabs-nav')].child
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                  if options.key?(:active)
         
     | 
| 
      
 67 
     | 
    
         
            +
                    state = attr(:class).includes('ui-state-active')
         
     | 
| 
      
 68 
     | 
    
         
            +
                    state = ~state unless options[:active]
         
     | 
| 
      
 69 
     | 
    
         
            +
                    xpath = xpath[state]
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                  xpath = xpath[descendant(:a).text.is title] if title
         
     | 
| 
      
 73 
     | 
    
         
            +
                  xpath
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                def tab_content(title = nil, options = {})
         
     | 
| 
      
 77 
     | 
    
         
            +
                  descendant[Expression::Literal.new("concat('#', @id)") == anywhere(tab_header(title, options)).descendant(:a).attr(:href)]
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,139 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: bermuda
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 10 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - John Firebaugh
         
     | 
| 
      
 13 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 15 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2010-10-17 00:00:00 -07:00
         
     | 
| 
      
 18 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 19 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 20 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 21 
     | 
    
         
            +
              name: cucumber
         
     | 
| 
      
 22 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 24 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 25 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 26 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 30 
     | 
    
         
            +
                    - 9
         
     | 
| 
      
 31 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 0.9.2
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 34 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 35 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 36 
     | 
    
         
            +
              name: capybara
         
     | 
| 
      
 37 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 39 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 44 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 45 
     | 
    
         
            +
                    - 4
         
     | 
| 
      
 46 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 47 
     | 
    
         
            +
                    - rc
         
     | 
| 
      
 48 
     | 
    
         
            +
                    version: 0.4.0.rc
         
     | 
| 
      
 49 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 51 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 52 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 53 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 54 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 55 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 56 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 57 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 58 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 59 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 60 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 61 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 62 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 63 
     | 
    
         
            +
                    version: 2.0.0
         
     | 
| 
      
 64 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 65 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 66 
     | 
    
         
            +
            description: Provides cucumber step definitions for testing jQuery UI widget interactions with capybara
         
     | 
| 
      
 67 
     | 
    
         
            +
            email: 
         
     | 
| 
      
 68 
     | 
    
         
            +
            - john.firebaugh@gmail.com
         
     | 
| 
      
 69 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 76 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 77 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 78 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
      
 79 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 80 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 81 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 82 
     | 
    
         
            +
            - bermuda.gemspec
         
     | 
| 
      
 83 
     | 
    
         
            +
            - features/step_definitions.feature
         
     | 
| 
      
 84 
     | 
    
         
            +
            - features/step_definitions/web_steps.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - features/support/env.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - features/support/public/accordion.html
         
     | 
| 
      
 87 
     | 
    
         
            +
            - features/support/public/autocomplete.html
         
     | 
| 
      
 88 
     | 
    
         
            +
            - features/support/public/dialog.html
         
     | 
| 
      
 89 
     | 
    
         
            +
            - features/support/public/progressbar.html
         
     | 
| 
      
 90 
     | 
    
         
            +
            - features/support/public/slider.html
         
     | 
| 
      
 91 
     | 
    
         
            +
            - features/support/public/tabs.html
         
     | 
| 
      
 92 
     | 
    
         
            +
            - features/support/selectors.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - lib/bermuda.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - lib/bermuda/cucumber.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/bermuda/version.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/bermuda/xpath.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 98 
     | 
    
         
            +
            homepage: http://rubygems.org/gems/bermuda
         
     | 
| 
      
 99 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 102 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 105 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 106 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 107 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 108 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 109 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 110 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 111 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 112 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 113 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 114 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 115 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 116 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 117 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 118 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 119 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 120 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 121 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 122 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
            rubyforge_project: bermuda
         
     | 
| 
      
 125 
     | 
    
         
            +
            rubygems_version: 1.3.7
         
     | 
| 
      
 126 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 127 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 128 
     | 
    
         
            +
            summary: jQuery UI steps for cucumber and capybara
         
     | 
| 
      
 129 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 130 
     | 
    
         
            +
            - features/step_definitions.feature
         
     | 
| 
      
 131 
     | 
    
         
            +
            - features/step_definitions/web_steps.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - features/support/env.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - features/support/public/accordion.html
         
     | 
| 
      
 134 
     | 
    
         
            +
            - features/support/public/autocomplete.html
         
     | 
| 
      
 135 
     | 
    
         
            +
            - features/support/public/dialog.html
         
     | 
| 
      
 136 
     | 
    
         
            +
            - features/support/public/progressbar.html
         
     | 
| 
      
 137 
     | 
    
         
            +
            - features/support/public/slider.html
         
     | 
| 
      
 138 
     | 
    
         
            +
            - features/support/public/tabs.html
         
     | 
| 
      
 139 
     | 
    
         
            +
            - features/support/selectors.rb
         
     |