cucumber-rapid7 0.0.1.beta.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.
- checksums.yaml +7 -0
 - data/.gitignore +17 -0
 - data/Gemfile +2 -0
 - data/LICENSE.md +22 -0
 - data/README.md +29 -0
 - data/Rakefile +1 -0
 - data/cucumber-rapid7.gemspec +23 -0
 - data/lib/cucumber/rapid7/auxiliary.rb +54 -0
 - data/lib/cucumber/rapid7/formatter/html_postponed.rb +34 -0
 - data/lib/cucumber/rapid7/formatter/jira_metrics.rb +29 -0
 - data/lib/cucumber/rapid7/formatter/notification_center.rb +135 -0
 - data/lib/cucumber/rapid7/hooks/capybara.rb +25 -0
 - data/lib/cucumber/rapid7/hooks/capybara_register_drivers.rb +25 -0
 - data/lib/cucumber/rapid7/hooks/postponed.rb +35 -0
 - data/lib/cucumber/rapid7/hooks/ui.rb +8 -0
 - data/lib/cucumber/rapid7/version.rb +5 -0
 - data/lib/cucumber/rapid7.rb +6 -0
 - metadata +88 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 905198412fc25706ec71608451bbe265e9cf6cb8
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 829fc1c439736c6f9fa9a235458dbfb84880fd7f
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: b54567750084877b42d95c3fb67298b8422b6b81f23976d2ad010fdcb6a0d0e12a04ddac5135f335401243173fa5f584be1168917579a566db6897750ef7f172
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ec8f08ac7ab2fd11fef82223aa675fb202621f9b1e7b1c03c51dc9def1427aa215392e79ebb4ccb00eaa952e626df3369d101b11e944036adc4a2fc64ab0a792
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE.md
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2013 Erran Carey <erran_carey@rapid7.com>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 6 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 7 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 8 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 9 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 10 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 11 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 14 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 17 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 18 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 19 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 20 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 21 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 22 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Cucumber::Rapid7
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            TODO: Write a gem description
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Add this line to your application's Gemfile:
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                gem 'cucumber-rapid7'
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            And then execute:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                $ bundle
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            Or install it yourself as:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                $ gem install cucumber-rapid7
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            TODO: Write usage instructions here
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            1. Fork it
         
     | 
| 
      
 26 
     | 
    
         
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
      
 27 
     | 
    
         
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
      
 28 
     | 
    
         
            +
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
      
 29 
     | 
    
         
            +
            5. Create new Pull Request
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'cucumber/rapid7/version'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.name          = 'cucumber-rapid7'
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.version       = Cucumber::Rapid7::VERSION
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.authors       = ['Erran Carey']
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.email         = ['erran_carey@rapid7.com']
         
     | 
| 
      
 11 
     | 
    
         
            +
              spec.description   = %q{Cucumber extensions used at Rapid7}
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.summary       = %q{Cucumber extensions for Rapid7}
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.homepage      = 'https://github.com/ecarey-r7/cucumber-rapid7'
         
     | 
| 
      
 14 
     | 
    
         
            +
              spec.license       = 'MIT'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              spec.files         = `git ls-files`.split($/)
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
      
 19 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_development_dependency 'bundler', '~> 1.3'
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_development_dependency 'rake'
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cucumber/ast/outline_table/example_row'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cucumber/ast/scenario'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'cucumber/term/ansicolor'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Cucumber
         
     | 
| 
      
 6 
     | 
    
         
            +
              module Rapid7
         
     | 
| 
      
 7 
     | 
    
         
            +
                module Auxiliary
         
     | 
| 
      
 8 
     | 
    
         
            +
                  def find_scenario_name(scenario_or_outline)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    case scenario_or_outline
         
     | 
| 
      
 10 
     | 
    
         
            +
                    when Cucumber::Ast::Scenario
         
     | 
| 
      
 11 
     | 
    
         
            +
                      scenario_or_outline.name
         
     | 
| 
      
 12 
     | 
    
         
            +
                    when Cucumber::Ast::OutlineTable::ExampleRow
         
     | 
| 
      
 13 
     | 
    
         
            +
                      scenario_or_outline.scenario_outline.name
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def find_file_colon_line(scenario_or_outline)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    case scenario_or_outline
         
     | 
| 
      
 19 
     | 
    
         
            +
                    when Cucumber::Ast::Scenario
         
     | 
| 
      
 20 
     | 
    
         
            +
                      scenario_or_outline.file_colon_line
         
     | 
| 
      
 21 
     | 
    
         
            +
                    when Cucumber::Ast::OutlineTable::ExampleRow
         
     | 
| 
      
 22 
     | 
    
         
            +
                      scenario_or_outline.scenario_outline.file_colon_line
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  def example_row_from_scenario(scenario)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    if scenario.is_a? Cucumber::Ast::OutlineTable::ExampleRow
         
     | 
| 
      
 28 
     | 
    
         
            +
                        example_row = [
         
     | 
| 
      
 29 
     | 
    
         
            +
                          scenario.name.split('|').map { |column| column.cyan }.join(' | '.reset),
         
     | 
| 
      
 30 
     | 
    
         
            +
                          ' |'.reset
         
     | 
| 
      
 31 
     | 
    
         
            +
                        ].flatten.join.sub('| ', '')
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                    if example_row && ENV['CI']
         
     | 
| 
      
 35 
     | 
    
         
            +
                      Cucumber::Term::ANSIColor.uncolored(example_row)
         
     | 
| 
      
 36 
     | 
    
         
            +
                    elsif example_row
         
     | 
| 
      
 37 
     | 
    
         
            +
                      example_row
         
     | 
| 
      
 38 
     | 
    
         
            +
                    end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  def skip_tag_error(scenario_name, common_tags, example_row = false)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    skip_error = [
         
     | 
| 
      
 43 
     | 
    
         
            +
                      ' Skipping'.cyan,
         
     | 
| 
      
 44 
     | 
    
         
            +
                      %("#{scenario_name}").bold.cyan,
         
     | 
| 
      
 45 
     | 
    
         
            +
                      'due to having the following auto-skip tags:'.cyan,
         
     | 
| 
      
 46 
     | 
    
         
            +
                      common_tags.to_s.bold.cyan
         
     | 
| 
      
 47 
     | 
    
         
            +
                    ].join(' ')
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    skip_error << ' |'.reset if example_row
         
     | 
| 
      
 50 
     | 
    
         
            +
                    ENV['CI'] ? Cucumber::Term::ANSIColor.uncolored(skip_error) : skip_error
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cucumber/formatter/html'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class HtmlPostponed < Cucumber::Formatter::Html
         
     | 
| 
      
 4 
     | 
    
         
            +
              def after_features(features)
         
     | 
| 
      
 5 
     | 
    
         
            +
                @builder << '</div>' # Close the previous <div>
         
     | 
| 
      
 6 
     | 
    
         
            +
                @skip_tags = ENV['CUCUMBER_SKIP_TAGS'].split(',')
         
     | 
| 
      
 7 
     | 
    
         
            +
                @file_colon_lines = []
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                @builder << '<div class="cucumber">'
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @builder << '<div class="feature">'
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @builder << '<h2>'
         
     | 
| 
      
 12 
     | 
    
         
            +
                      @builder << 'Postponed tests (using $CUCUMBER_SKIP_TAGS)'
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @builder << '</h2>'
         
     | 
| 
      
 14 
     | 
    
         
            +
                    @builder << '<span class="tag">'
         
     | 
| 
      
 15 
     | 
    
         
            +
                      @skip_tags.each { |tag| @builder << tag }
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @builder << '</span>'
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @builder << '<ol>'
         
     | 
| 
      
 18 
     | 
    
         
            +
                      features.each do |feature|
         
     | 
| 
      
 19 
     | 
    
         
            +
                        if (@skip_tags & feature.source_tag_names).any?
         
     | 
| 
      
 20 
     | 
    
         
            +
                          unless @file_colon_lines.include? feature.file_colon_line
         
     | 
| 
      
 21 
     | 
    
         
            +
                            @builder << '<li>'
         
     | 
| 
      
 22 
     | 
    
         
            +
                            @builder << feature.file_colon_line
         
     | 
| 
      
 23 
     | 
    
         
            +
                            @builder << '</li>'
         
     | 
| 
      
 24 
     | 
    
         
            +
                          end
         
     | 
| 
      
 25 
     | 
    
         
            +
                        end
         
     | 
| 
      
 26 
     | 
    
         
            +
                      end
         
     | 
| 
      
 27 
     | 
    
         
            +
                    @builder << '</ol>'
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @builder << '</div>'
         
     | 
| 
      
 29 
     | 
    
         
            +
                @builder << '</div>'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                @builder << '<div>'
         
     | 
| 
      
 32 
     | 
    
         
            +
                super # Give the HTML formatter control
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cucumber/formatter/pretty'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cucumber/jira'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # This formatter is a WIP that will eventually gather information from JIRA
         
     | 
| 
      
 5 
     | 
    
         
            +
            # based on JIRA themes and Gherkin tags and add the information into cucumber
         
     | 
| 
      
 6 
     | 
    
         
            +
            # reports.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # @author Erran Carey <erran_carey@rapid7.com>
         
     | 
| 
      
 9 
     | 
    
         
            +
            # @api private
         
     | 
| 
      
 10 
     | 
    
         
            +
            class JiraMetrics < Cucumber::Formatter::Pretty
         
     | 
| 
      
 11 
     | 
    
         
            +
              def initialize(runtime, path_or_io, options)
         
     | 
| 
      
 12 
     | 
    
         
            +
                super
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                jira_client = Cucumber::Jira::Soap.new(ENV['JIRA_ENDPOINT'])
         
     | 
| 
      
 15 
     | 
    
         
            +
                jira_client.login(ENV['JIRA_USER'], ENV['JIRA_PASSWORD'], true)
         
     | 
| 
      
 16 
     | 
    
         
            +
                @jira_issues = jira_client.search :project => ENV['JIRA_PROJECT_KEY'], :themes => ENV['JIRA_THEMES'].to_s.split(/,\s*/, '')
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              def before_feature(feature)
         
     | 
| 
      
 20 
     | 
    
         
            +
                super
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                tags = feature.source_tags.map { |tag| tag.name.sub(/^@/, '') }
         
     | 
| 
      
 23 
     | 
    
         
            +
                jira_tags = tags.grep(/^COSMO-\d+/)
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                issues = @jira_issues.find_all { |issue| jira_tags.include?(issue[:key]) }
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                puts issues
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,135 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cucumber/formatter/duration'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cucumber/formatter/io'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'terminal-notifier'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # A Cucumber formatter that notifies a user through Mac OS X's notification
         
     | 
| 
      
 6 
     | 
    
         
            +
            # center when the cucumber tests have finished running.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # @note This formatter was originally written by Jon Frisby (@MrJoy)
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   https://github.com/MrJoy/cucumber-nc
         
     | 
| 
      
 10 
     | 
    
         
            +
            # @note This formatter incorporates patches from ipwnstuff/cucumber-nc
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   (ipwnstuff => Erran Carey)
         
     | 
| 
      
 12 
     | 
    
         
            +
            # @author John Frisby <jfrisby@mrjoy.com>
         
     | 
| 
      
 13 
     | 
    
         
            +
            # @author Erran Carey <erran_carey@rapid7.com>
         
     | 
| 
      
 14 
     | 
    
         
            +
            # @api private
         
     | 
| 
      
 15 
     | 
    
         
            +
            class NotificationCenterFormatter
         
     | 
| 
      
 16 
     | 
    
         
            +
              include Cucumber::Formatter::Duration
         
     | 
| 
      
 17 
     | 
    
         
            +
              include Cucumber::Formatter::Io
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              attr_reader :step_mother
         
     | 
| 
      
 20 
     | 
    
         
            +
              def initialize(step_mother, path_or_io, options)
         
     | 
| 
      
 21 
     | 
    
         
            +
                @step_mother, @options = step_mother, options
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def after_features(features)
         
     | 
| 
      
 25 
     | 
    
         
            +
                print_summary(features)
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def before_feature(feature); end
         
     | 
| 
      
 29 
     | 
    
         
            +
              def comment_line(comment_line); end
         
     | 
| 
      
 30 
     | 
    
         
            +
              def after_tags(tags); end
         
     | 
| 
      
 31 
     | 
    
         
            +
              def tag_name(tag_name); end
         
     | 
| 
      
 32 
     | 
    
         
            +
              def feature_name(keyword, name); end
         
     | 
| 
      
 33 
     | 
    
         
            +
              def before_feature_element(feature_element); end
         
     | 
| 
      
 34 
     | 
    
         
            +
              def after_feature_element(feature_element); end
         
     | 
| 
      
 35 
     | 
    
         
            +
              def before_background(background); end
         
     | 
| 
      
 36 
     | 
    
         
            +
              def after_background(background); end
         
     | 
| 
      
 37 
     | 
    
         
            +
              def background_name(keyword, name, file_colon_line, source_indent); end
         
     | 
| 
      
 38 
     | 
    
         
            +
              def before_examples_array(examples_array); end
         
     | 
| 
      
 39 
     | 
    
         
            +
              def examples_name(keyword, name); end
         
     | 
| 
      
 40 
     | 
    
         
            +
              def before_outline_table(outline_table); end
         
     | 
| 
      
 41 
     | 
    
         
            +
              def after_outline_table(outline_table); end
         
     | 
| 
      
 42 
     | 
    
         
            +
              def scenario_name(keyword, name, file_colon_line, source_indent); end
         
     | 
| 
      
 43 
     | 
    
         
            +
              def before_step(step); end
         
     | 
| 
      
 44 
     | 
    
         
            +
              def before_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background, file_colon_line); end
         
     | 
| 
      
 45 
     | 
    
         
            +
              def step_name(keyword, step_match, status, source_indent, background, file_colon_line); end
         
     | 
| 
      
 46 
     | 
    
         
            +
              def doc_string(string); end
         
     | 
| 
      
 47 
     | 
    
         
            +
              def exception(exception, status); end
         
     | 
| 
      
 48 
     | 
    
         
            +
              def before_multiline_arg(multiline_arg); end
         
     | 
| 
      
 49 
     | 
    
         
            +
              def after_multiline_arg(multiline_arg); end
         
     | 
| 
      
 50 
     | 
    
         
            +
              def before_table_row(table_row); end
         
     | 
| 
      
 51 
     | 
    
         
            +
              def after_table_row(table_row); end
         
     | 
| 
      
 52 
     | 
    
         
            +
              def after_table_cell(cell); end
         
     | 
| 
      
 53 
     | 
    
         
            +
              def table_cell_value(value, status); end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              private
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              def pluralize(num, str)
         
     | 
| 
      
 58 
     | 
    
         
            +
                (num == 1) ? str : "#{str}s"
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              def summary_line(features)
         
     | 
| 
      
 62 
     | 
    
         
            +
                scenarios = step_mother.scenarios.count
         
     | 
| 
      
 63 
     | 
    
         
            +
                scenarios_failed = step_mother.scenarios(:failed).count
         
     | 
| 
      
 64 
     | 
    
         
            +
                scenarios_undefined = step_mother.scenarios(:undefined).count
         
     | 
| 
      
 65 
     | 
    
         
            +
                scenarios_pending = step_mother.scenarios(:pending).count
         
     | 
| 
      
 66 
     | 
    
         
            +
                scenarios_passing = step_mother.scenarios(:passed).count
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                steps = step_mother.steps.count
         
     | 
| 
      
 69 
     | 
    
         
            +
                steps_failed = step_mother.steps(:failed).count
         
     | 
| 
      
 70 
     | 
    
         
            +
                steps_skipped = step_mother.steps(:skipped).count
         
     | 
| 
      
 71 
     | 
    
         
            +
                steps_undefined = step_mother.steps(:undefined).count
         
     | 
| 
      
 72 
     | 
    
         
            +
                steps_pending = step_mother.steps(:pending).count
         
     | 
| 
      
 73 
     | 
    
         
            +
                steps_passing = step_mother.steps(:passed).count
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                counts = []
         
     | 
| 
      
 76 
     | 
    
         
            +
                counts << "#{scenarios_undefined} undefined" if scenarios_undefined > 0
         
     | 
| 
      
 77 
     | 
    
         
            +
                counts << "#{scenarios_pending} pending" if scenarios_pending > 0
         
     | 
| 
      
 78 
     | 
    
         
            +
                counts << "#{scenarios_failed} failed" if scenarios_failed > 0
         
     | 
| 
      
 79 
     | 
    
         
            +
                counts << "#{scenarios_passing} passed" if scenarios_passing > 0
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                # 5 scenarios (1 undefined, 3 pending, 1 passed)
         
     | 
| 
      
 82 
     | 
    
         
            +
                case counts.count
         
     | 
| 
      
 83 
     | 
    
         
            +
                when 4
         
     | 
| 
      
 84 
     | 
    
         
            +
                  summary = "#{scenarios} #{pluralize(scenarios, "scenario")} (#{counts[0]}, #{counts[1]}, #{counts[2]},\n#{counts[3]})\n"
         
     | 
| 
      
 85 
     | 
    
         
            +
                else
         
     | 
| 
      
 86 
     | 
    
         
            +
                  summary = "#{scenarios} #{pluralize(scenarios, "scenario")} (#{counts.join(', ')})\n"
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                counts = []
         
     | 
| 
      
 90 
     | 
    
         
            +
                counts << "#{steps_undefined} undefined" if steps_undefined > 0
         
     | 
| 
      
 91 
     | 
    
         
            +
                counts << "#{steps_skipped} skipped" if steps_skipped > 0
         
     | 
| 
      
 92 
     | 
    
         
            +
                counts << "#{steps_pending} pending" if steps_pending > 0
         
     | 
| 
      
 93 
     | 
    
         
            +
                counts << "#{steps_failed} failed" if steps_failed > 0
         
     | 
| 
      
 94 
     | 
    
         
            +
                counts << "#{steps_passing} passed" if steps_passing > 0
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                # 35 steps (23 skipped, 1 undefined, 3 pending, 8 passed)
         
     | 
| 
      
 97 
     | 
    
         
            +
                case counts.count
         
     | 
| 
      
 98 
     | 
    
         
            +
                when 4
         
     | 
| 
      
 99 
     | 
    
         
            +
                  summary << "#{steps} #{pluralize(steps, "step")} (#{counts[0]}, #{counts[1]}, #{counts[2]},\n#{counts[3]})"
         
     | 
| 
      
 100 
     | 
    
         
            +
                when 5
         
     | 
| 
      
 101 
     | 
    
         
            +
                  summary << "#{steps} #{pluralize(steps, "step")} (#{counts[0]}, #{counts[1]}, #{counts[2]},\n#{counts[3]}, #{counts[4]})"
         
     | 
| 
      
 102 
     | 
    
         
            +
                else
         
     | 
| 
      
 103 
     | 
    
         
            +
                  summary << "#{steps} #{pluralize(steps, "step")} (#{ counts.join(', ') })"
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                summary
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              def print_summary(features)
         
     | 
| 
      
 110 
     | 
    
         
            +
                body = []
         
     | 
| 
      
 111 
     | 
    
         
            +
                body << summary_line(features)
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                # 0m0.024s
         
     | 
| 
      
 114 
     | 
    
         
            +
                body << "#{ format_duration(features.duration) }"
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                name = File.basename(File.expand_path('.'))
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                title = unless step_mother.scenarios(:failed).empty?
         
     | 
| 
      
 119 
     | 
    
         
            +
                  "\u26D4 #{ name }: #{ step_mother.scenarios(:failed).count } failed #{ pluralize(step_mother.scenarios(:failed).count, 'scenario') }"
         
     | 
| 
      
 120 
     | 
    
         
            +
                else
         
     | 
| 
      
 121 
     | 
    
         
            +
                  "\u2705 #{ name }: Success"
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                say title, body.join("\n")
         
     | 
| 
      
 125 
     | 
    
         
            +
              end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
              def say(title, body)
         
     | 
| 
      
 128 
     | 
    
         
            +
                if TerminalNotifier.available?
         
     | 
| 
      
 129 
     | 
    
         
            +
                  TerminalNotifier.notify body, :title => title, :sender => 'com.apple.Terminal'
         
     | 
| 
      
 130 
     | 
    
         
            +
                else
         
     | 
| 
      
 131 
     | 
    
         
            +
                  puts "\e[1;39;49m#{title}\e[0m"
         
     | 
| 
      
 132 
     | 
    
         
            +
                  puts body
         
     | 
| 
      
 133 
     | 
    
         
            +
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
              end
         
     | 
| 
      
 135 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'capybara'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Alias :selenium to :firefox
         
     | 
| 
      
 4 
     | 
    
         
            +
            Capybara.register_driver :firefox do |app|
         
     | 
| 
      
 5 
     | 
    
         
            +
              Capybara.drivers[:selenium]
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # If a scenario is tagged as @ui and more than one capybara driver this hook
         
     | 
| 
      
 9 
     | 
    
         
            +
            # will pick it up and run it in each browser
         
     | 
| 
      
 10 
     | 
    
         
            +
            Around '@ui' do |scenario, block|
         
     | 
| 
      
 11 
     | 
    
         
            +
              tags = scenario.source_tag_names.map do |tag|
         
     | 
| 
      
 12 
     | 
    
         
            +
                tag.sub(/^@/, '').to_sym
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              common_drivers = tags & Capybara.drivers.keys
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              if common_drivers.count <= 1
         
     | 
| 
      
 18 
     | 
    
         
            +
                Capybara.current_driver = common_drivers.first unless common_drivers.empty?
         
     | 
| 
      
 19 
     | 
    
         
            +
                block.call
         
     | 
| 
      
 20 
     | 
    
         
            +
              else
         
     | 
| 
      
 21 
     | 
    
         
            +
                common_drivers.each do |driver|
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Capybara.using_driver(driver, &block)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'capybara'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Takes each value in a comma separated list and registers it as a
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Capybara driver
         
     | 
| 
      
 5 
     | 
    
         
            +
            ENV['CAPYBARA_DRIVERS'].split(/,\s*/).map(&:to_sym).each do |driver|
         
     | 
| 
      
 6 
     | 
    
         
            +
              case driver
         
     | 
| 
      
 7 
     | 
    
         
            +
              when :poltergeist
         
     | 
| 
      
 8 
     | 
    
         
            +
                require 'capybara/poltergeist'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                file_name = ENV['PHANTOMJS_LOG_FILE'] || 'phantomjs.log'
         
     | 
| 
      
 11 
     | 
    
         
            +
                Capybara.register_driver :poltergeist do |app|
         
     | 
| 
      
 12 
     | 
    
         
            +
                  options = {
         
     | 
| 
      
 13 
     | 
    
         
            +
                    # By default Javascript errors will be reraised in Ruby
         
     | 
| 
      
 14 
     | 
    
         
            +
                    # :js_errors => false,
         
     | 
| 
      
 15 
     | 
    
         
            +
                    :phantomjs_options => %w[--ignore-ssl-errors=yes],
         
     | 
| 
      
 16 
     | 
    
         
            +
                    :phantomjs_logger  => File.open(file_name, 'a+')
         
     | 
| 
      
 17 
     | 
    
         
            +
                  }
         
     | 
| 
      
 18 
     | 
    
         
            +
                  Capybara::Poltergeist::Driver.new(app, options)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              else
         
     | 
| 
      
 21 
     | 
    
         
            +
                Capybara.register_driver driver do |app|
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Capybara::Selenium::Driver.new(app, :browser => driver)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'cucumber/rapid7/auxiliary'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # OPTIMIZE: Include helper methods on a global scope, so that they can be used in around hooks
         
     | 
| 
      
 4 
     | 
    
         
            +
            include Cucumber::Rapid7::Auxiliary
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Around do |scenario, block|
         
     | 
| 
      
 7 
     | 
    
         
            +
              scenario_name = find_scenario_name(scenario)
         
     | 
| 
      
 8 
     | 
    
         
            +
              source_tags = scenario.source_tag_names
         
     | 
| 
      
 9 
     | 
    
         
            +
              common_tags = source_tags & ENV['CUCUMBER_SKIP_TAGS'].to_s.split(/,/)
         
     | 
| 
      
 10 
     | 
    
         
            +
              example_row = scenario.is_a?(Cucumber::Ast::OutlineTable::ExampleRow)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              if common_tags.any? && scenario_name.eql?(@last_scenario_name)
         
     | 
| 
      
 13 
     | 
    
         
            +
                # TODO: Would this always an example row? If not should scenario names be unique?
         
     | 
| 
      
 14 
     | 
    
         
            +
                if example_row
         
     | 
| 
      
 15 
     | 
    
         
            +
                  $stdout.print example_row_from_scenario(scenario)
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              elsif common_tags.any?
         
     | 
| 
      
 18 
     | 
    
         
            +
                file_name = ENV['CUCUMBER_RERUN_FILE'] || 'rerun.txt'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                File.open(file_name, 'w+') do |rerun_file|
         
     | 
| 
      
 21 
     | 
    
         
            +
                  rerun_file << " #{find_file_colon_line(scenario)}"
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                $stdout.puts skip_tag_error(scenario_name, common_tags, example_row)
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                if example_row
         
     | 
| 
      
 27 
     | 
    
         
            +
                  # "\s"*6 => six space chars
         
     | 
| 
      
 28 
     | 
    
         
            +
                  $stdout.print "\s"*6, '|', example_row_from_scenario(scenario)
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              else
         
     | 
| 
      
 31 
     | 
    
         
            +
                block.call
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              @last_scenario_name = scenario_name
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,88 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: cucumber-rapid7
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1.beta.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Erran Carey
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-11-22 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 15 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 20 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 21 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 22 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 23 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 24 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 25 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 26 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 29 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 35 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 36 
     | 
    
         
            +
                - - '>='
         
     | 
| 
      
 37 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 38 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 39 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 40 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 41 
     | 
    
         
            +
            description: Cucumber extensions used at Rapid7
         
     | 
| 
      
 42 
     | 
    
         
            +
            email:
         
     | 
| 
      
 43 
     | 
    
         
            +
            - erran_carey@rapid7.com
         
     | 
| 
      
 44 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 45 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 46 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 47 
     | 
    
         
            +
            files:
         
     | 
| 
      
 48 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 49 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 50 
     | 
    
         
            +
            - LICENSE.md
         
     | 
| 
      
 51 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 52 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 53 
     | 
    
         
            +
            - cucumber-rapid7.gemspec
         
     | 
| 
      
 54 
     | 
    
         
            +
            - lib/cucumber/rapid7.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/cucumber/rapid7/auxiliary.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/cucumber/rapid7/formatter/html_postponed.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/cucumber/rapid7/formatter/jira_metrics.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/cucumber/rapid7/formatter/notification_center.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - lib/cucumber/rapid7/hooks/capybara.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/cucumber/rapid7/hooks/capybara_register_drivers.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - lib/cucumber/rapid7/hooks/postponed.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
            - lib/cucumber/rapid7/hooks/ui.rb
         
     | 
| 
      
 63 
     | 
    
         
            +
            - lib/cucumber/rapid7/version.rb
         
     | 
| 
      
 64 
     | 
    
         
            +
            homepage: https://github.com/ecarey-r7/cucumber-rapid7
         
     | 
| 
      
 65 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 66 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 67 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 68 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
      
 69 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 70 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 71 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 72 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 74 
     | 
    
         
            +
              - - '>='
         
     | 
| 
      
 75 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 76 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 77 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 78 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 79 
     | 
    
         
            +
              - - '>'
         
     | 
| 
      
 80 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 81 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
      
 82 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 83 
     | 
    
         
            +
            rubyforge_project:
         
     | 
| 
      
 84 
     | 
    
         
            +
            rubygems_version: 2.1.9
         
     | 
| 
      
 85 
     | 
    
         
            +
            signing_key:
         
     | 
| 
      
 86 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 87 
     | 
    
         
            +
            summary: Cucumber extensions for Rapid7
         
     | 
| 
      
 88 
     | 
    
         
            +
            test_files: []
         
     |