acceptance_test 1.5.5 → 1.6.0
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 +8 -8
- data/CHANGES +5 -1
- data/Gemfile +4 -1
- data/Gemfile.lock +11 -11
- data/Rakefile +0 -6
- data/features/wikipedia/step_definitions/steps.rb +2 -2
- data/lib/acceptance_test/acceptance_test.rb +57 -140
- data/lib/acceptance_test/driver_manager.rb +138 -0
- data/lib/acceptance_test/{gherkin_helper.rb → gherkin_ext.rb} +2 -5
- data/lib/acceptance_test/page_set.rb +38 -1
- data/lib/acceptance_test/turnip_ext.rb +177 -0
- data/lib/acceptance_test/version.rb +1 -1
- data/lib/tasks/rspec.rake +7 -0
- data/spec/{features/data.csv → data.csv} +0 -0
- data/spec/features/search_with_drivers.feature +4 -3
- data/spec/features/search_with_examples_from_csv.feature +1 -1
- data/spec/features/search_with_pages.feature +13 -0
- data/spec/support/pages/main_page.rb +17 -0
- data/spec/support/{wikipedia/wikipedia_page_set.rb → pages/wikipedia_pages.rb} +8 -5
- data/spec/{features → support}/steps/common_steps.rb +0 -0
- data/spec/{features → support}/steps/search_with_drivers_steps.rb +2 -17
- data/spec/{features → support}/steps/search_with_examples_from_csv_steps.rb +1 -1
- data/spec/support/steps/search_with_pages_steps.rb +37 -0
- data/spec/{features → support}/steps/search_with_table_steps.rb +1 -1
- data/spec/test_helper.rb +1 -0
- data/spec/turnip_helper.rb +8 -9
- data/spec/wikipedia_search_spec.rb +5 -0
- data/spec/wikipedia_search_with_pages_spec.rb +8 -8
- metadata +26 -19
- data/lib/acceptance_test/turnip_helper.rb +0 -76
- data/spec/support/wikipedia/main_page.rb +0 -13
- data/turnip +0 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                NWRiYjdjNWFjMTIwNDRlNjU4M2M0ZWM4ODgyYmI3MzZkZjI2MWUyZQ==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                YjczYjJkOGMxODM0ZWQ3YTY5YmIxNmQ4MmZhZTI2NmRjNmFlOWJiZA==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                MDYxNGE0YWJiNzdiMjBhMjRhMzQyMzQ3ZWRlNTQ1ZmU2MzljZjk1Mzc1NTgw
         | 
| 10 | 
            +
                MGYxN2M3YTU5ZThhZDM4NDUyMzFhZjM4OWQ2YzgyZTQ2OTNiYTNmNmY3NzZm
         | 
| 11 | 
            +
                MTI2ZDlhOTY4YzM4YmVmMTM1NzE3NTJhOWQ5MTcxZWJmNDg2YmM=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                ZmQ2YTQ0NmU0ZDNhMjIyZjFiYmI1YTg1MjI2Y2Y5NzEzODVjMDYzZjliYjdh
         | 
| 14 | 
            +
                ZTZmOWVhNzgzN2E4ZTI4MDYzNTI2NDI5NDU4ZjNjN2Y3Yzk5YWFmMDA5Y2Ix
         | 
| 15 | 
            +
                YWU1NmVkNzE4MWNiMjQxNGQ2YmFiN2I4MjU4ZjcxYmNlNGExM2M=
         | 
    
        data/CHANGES
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -12,7 +12,7 @@ end | |
| 12 12 |  | 
| 13 13 | 
             
            group :acceptance_test do
         | 
| 14 14 | 
             
              gem "activesupport", "~> 4.1.6"
         | 
| 15 | 
            -
              gem "capybara", "~> 2.4. | 
| 15 | 
            +
              gem "capybara", "~> 2.4.3"
         | 
| 16 16 | 
             
              gem "capybara-firebug", "~> 2.1.0"
         | 
| 17 17 | 
             
              gem "selenium-webdriver", "~> 2.43.0"
         | 
| 18 18 |  | 
| @@ -27,6 +27,9 @@ group :acceptance_test do | |
| 27 27 | 
             
              # Debian: sudo apt-get install libqt4-dev
         | 
| 28 28 | 
             
              # Fedora: yum install qt-webkit-devell
         | 
| 29 29 |  | 
| 30 | 
            +
              # for chrome support:
         | 
| 31 | 
            +
              # brew install chromedriver
         | 
| 32 | 
            +
             | 
| 30 33 | 
             
              # brew install phantomjs
         | 
| 31 34 | 
             
              gem "poltergeist", "~> 1.5.1"
         | 
| 32 35 | 
             
            end
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -8,7 +8,7 @@ GEM | |
| 8 8 | 
             
                  thread_safe (~> 0.1)
         | 
| 9 9 | 
             
                  tzinfo (~> 1.1)
         | 
| 10 10 | 
             
                builder (3.2.2)
         | 
| 11 | 
            -
                capybara (2.4. | 
| 11 | 
            +
                capybara (2.4.3)
         | 
| 12 12 | 
             
                  mime-types (>= 1.16)
         | 
| 13 13 | 
             
                  nokogiri (>= 1.3.3)
         | 
| 14 14 | 
             
                  rack (>= 1.0.0)
         | 
| @@ -20,7 +20,7 @@ GEM | |
| 20 20 | 
             
                capybara-webkit (1.3.0)
         | 
| 21 21 | 
             
                  capybara (>= 2.0.2, < 2.5.0)
         | 
| 22 22 | 
             
                  json
         | 
| 23 | 
            -
                childprocess (0.5. | 
| 23 | 
            +
                childprocess (0.5.5)
         | 
| 24 24 | 
             
                  ffi (~> 1.0, >= 1.0.11)
         | 
| 25 25 | 
             
                cliver (0.3.2)
         | 
| 26 26 | 
             
                cucumber (1.3.17)
         | 
| @@ -31,7 +31,7 @@ GEM | |
| 31 31 | 
             
                  multi_test (>= 0.1.1)
         | 
| 32 32 | 
             
                debugger-ruby_core_source (1.3.5)
         | 
| 33 33 | 
             
                diff-lcs (1.2.5)
         | 
| 34 | 
            -
                ffi (1.9. | 
| 34 | 
            +
                ffi (1.9.6)
         | 
| 35 35 | 
             
                file_utils (1.0.7)
         | 
| 36 36 | 
             
                gemcutter (0.7.1)
         | 
| 37 37 | 
             
                gemspec_deps_gen (1.1.2)
         | 
| @@ -42,9 +42,9 @@ GEM | |
| 42 42 | 
             
                i18n (0.6.11)
         | 
| 43 43 | 
             
                json (1.8.1)
         | 
| 44 44 | 
             
                metaclass (0.0.4)
         | 
| 45 | 
            -
                mime-types (2. | 
| 45 | 
            +
                mime-types (2.4.1)
         | 
| 46 46 | 
             
                mini_portile (0.6.0)
         | 
| 47 | 
            -
                minitest (5.4. | 
| 47 | 
            +
                minitest (5.4.2)
         | 
| 48 48 | 
             
                mocha (1.1.0)
         | 
| 49 49 | 
             
                  metaclass (~> 0.0.1)
         | 
| 50 50 | 
             
                multi_json (1.10.1)
         | 
| @@ -64,16 +64,16 @@ GEM | |
| 64 64 | 
             
                  rspec-core (~> 3.1.0)
         | 
| 65 65 | 
             
                  rspec-expectations (~> 3.1.0)
         | 
| 66 66 | 
             
                  rspec-mocks (~> 3.1.0)
         | 
| 67 | 
            -
                rspec-core (3.1. | 
| 67 | 
            +
                rspec-core (3.1.6)
         | 
| 68 68 | 
             
                  rspec-support (~> 3.1.0)
         | 
| 69 69 | 
             
                rspec-example_steps (3.0.2)
         | 
| 70 70 | 
             
                  rspec-core (>= 3.0.0)
         | 
| 71 | 
            -
                rspec-expectations (3.1. | 
| 71 | 
            +
                rspec-expectations (3.1.2)
         | 
| 72 72 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 73 73 | 
             
                  rspec-support (~> 3.1.0)
         | 
| 74 | 
            -
                rspec-mocks (3.1. | 
| 74 | 
            +
                rspec-mocks (3.1.3)
         | 
| 75 75 | 
             
                  rspec-support (~> 3.1.0)
         | 
| 76 | 
            -
                rspec-support (3.1. | 
| 76 | 
            +
                rspec-support (3.1.2)
         | 
| 77 77 | 
             
                ruby-debug-base19x (0.11.30.pre12)
         | 
| 78 78 | 
             
                  debugger-ruby_core_source (>= 1.1.4)
         | 
| 79 79 | 
             
                  rake (>= 0.8.1)
         | 
| @@ -92,7 +92,7 @@ GEM | |
| 92 92 | 
             
                tzinfo (1.2.2)
         | 
| 93 93 | 
             
                  thread_safe (~> 0.1)
         | 
| 94 94 | 
             
                websocket (1.2.1)
         | 
| 95 | 
            -
                websocket-driver (0.3. | 
| 95 | 
            +
                websocket-driver (0.3.5)
         | 
| 96 96 | 
             
                xpath (2.0.0)
         | 
| 97 97 | 
             
                  nokogiri (~> 1.3)
         | 
| 98 98 |  | 
| @@ -101,7 +101,7 @@ PLATFORMS | |
| 101 101 |  | 
| 102 102 | 
             
            DEPENDENCIES
         | 
| 103 103 | 
             
              activesupport (~> 4.1.6)
         | 
| 104 | 
            -
              capybara (~> 2.4. | 
| 104 | 
            +
              capybara (~> 2.4.3)
         | 
| 105 105 | 
             
              capybara-firebug (~> 2.1.0)
         | 
| 106 106 | 
             
              capybara-webkit (~> 1.3.0)
         | 
| 107 107 | 
             
              cucumber (~> 1.3.17)
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -40,9 +40,3 @@ end | |
| 40 40 | 
             
            #   system "mkdir -p $GEM_HOME/gems/debugger-ruby_core_source-1.2.3/lib"
         | 
| 41 41 | 
             
            #   system "cp -R ~/debugger-ruby_core_source/lib $GEM_HOME/gems/debugger-ruby_core_source-1.2.3"
         | 
| 42 42 | 
             
            # end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
            task :turnip do
         | 
| 45 | 
            -
              ARGV.shift
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              system "bundle exec rspec -r turnip/rspec #{ARGV.join(' ')}"
         | 
| 48 | 
            -
            end
         | 
| @@ -3,10 +3,10 @@ require 'yaml' | |
| 3 3 |  | 
| 4 4 | 
             
            require 'acceptance_test'
         | 
| 5 5 |  | 
| 6 | 
            -
            require 'acceptance_test/ | 
| 6 | 
            +
            require 'acceptance_test/gherkin_ext'
         | 
| 7 7 |  | 
| 8 8 | 
             
            data_reader = lambda {|source_path| CSV.read(File.expand_path(source_path)) }
         | 
| 9 | 
            -
             | 
| 9 | 
            +
            GherkinExt.instance.enable_external_source data_reader
         | 
| 10 10 |  | 
| 11 11 | 
             
            acceptance_test = AcceptanceTest.instance
         | 
| 12 12 |  | 
| @@ -1,83 +1,72 @@ | |
| 1 1 | 
             
            require 'uri'
         | 
| 2 | 
            -
            require 'fileutils'
         | 
| 3 2 | 
             
            require 'singleton'
         | 
| 4 3 |  | 
| 5 | 
            -
            require 'capybara'
         | 
| 6 | 
            -
            require "capybara/dsl"
         | 
| 7 4 | 
             
            require 'active_support/core_ext/hash'
         | 
| 8 5 |  | 
| 9 | 
            -
            require 'acceptance_test/ | 
| 10 | 
            -
            require 'acceptance_test/ | 
| 6 | 
            +
            require 'acceptance_test/driver_manager'
         | 
| 7 | 
            +
            require 'acceptance_test/gherkin_ext'
         | 
| 8 | 
            +
            require 'acceptance_test/turnip_ext'
         | 
| 11 9 |  | 
| 12 10 | 
             
            class AcceptanceTest
         | 
| 13 11 | 
             
              include Singleton
         | 
| 14 12 |  | 
| 15 | 
            -
              attr_reader :config
         | 
| 13 | 
            +
              attr_reader :config, :driver_manager
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def initialize
         | 
| 16 | 
            +
                @driver_manager = DriverManager.new
         | 
| 17 | 
            +
              end
         | 
| 16 18 |  | 
| 17 19 | 
             
              def configure config={}
         | 
| 18 20 | 
             
                if config
         | 
| 19 21 | 
             
                  @config = config.kind_of?(HashWithIndifferentAccess) ? config : HashWithIndifferentAccess.new(config)
         | 
| 20 22 | 
             
                else
         | 
| 21 23 | 
             
                  @config = HashWithIndifferentAccess.new
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  config[:screenshot_dir] = File.expand_path('tmp')
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| 26 | 
            -
                 | 
| 26 | 
            +
                @config[:browser] = 'firefox' unless @config[:browser]
         | 
| 27 | 
            +
                @config[:screenshot_dir] = File.expand_path('tmp') unless @config[:screenshot_dir]
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              def setup
         | 
| 31 | 
            +
                Capybara.app_host = AcceptanceTest.instance.config[:webapp_url]
         | 
| 27 32 |  | 
| 28 33 | 
             
                Capybara.configure do |conf|
         | 
| 29 34 | 
             
                  conf.default_wait_time = timeout_in_seconds
         | 
| 30 | 
            -
                  conf.match = :first
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                  conf.ignore_hidden_elements = false
         | 
| 33 35 | 
             
                end
         | 
| 34 36 |  | 
| 35 | 
            -
                ENV['APP_HOST'] ||= config[:webapp_url]
         | 
| 36 37 | 
             
                ENV['WAIT_TIME'] ||= Capybara.default_wait_time.to_s
         | 
| 37 38 |  | 
| 38 | 
            -
                 | 
| 39 | 
            -
             | 
| 40 | 
            -
                  require 'capybara/rspec'
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  RSpec.configure do |config|
         | 
| 43 | 
            -
                    config.filter_run_excluding :exclude => true
         | 
| 44 | 
            -
                  end
         | 
| 39 | 
            +
                Capybara.default_driver = :selenium
         | 
| 40 | 
            +
              end
         | 
| 45 41 |  | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
                  end
         | 
| 42 | 
            +
              def teardown
         | 
| 43 | 
            +
                Capybara.app_host = nil
         | 
| 49 44 |  | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
                  ;
         | 
| 45 | 
            +
                Capybara.configure do |conf|
         | 
| 46 | 
            +
                  conf.default_wait_time = 5
         | 
| 53 47 | 
             
                end
         | 
| 54 48 |  | 
| 55 | 
            -
                Capybara.default_driver = : | 
| 56 | 
            -
              end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
              def set_app_host
         | 
| 59 | 
            -
                Capybara.app_host = AcceptanceTest.instance.config[:webapp_url]
         | 
| 49 | 
            +
                Capybara.default_driver = :rack_test
         | 
| 60 50 | 
             
              end
         | 
| 61 51 |  | 
| 62 | 
            -
              def  | 
| 63 | 
            -
                 | 
| 64 | 
            -
              end
         | 
| 52 | 
            +
              def before_test metadata={}, page=nil
         | 
| 53 | 
            +
                setup unless Capybara.app_host
         | 
| 65 54 |  | 
| 66 | 
            -
             | 
| 67 | 
            -
                TurnipHelper.instance.extend_turnip
         | 
| 68 | 
            -
              end
         | 
| 55 | 
            +
                tag = driver(metadata)
         | 
| 69 56 |  | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 57 | 
            +
                if tag
         | 
| 58 | 
            +
                  driver_name = driver_manager.register_driver tag, config[:browser].to_sym, config[:selenium_url]
         | 
| 72 59 |  | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 60 | 
            +
                  if driver_name and Capybara.drivers[driver_name]
         | 
| 61 | 
            +
                    Capybara.current_driver = driver_name
         | 
| 62 | 
            +
                    Capybara.javascript_driver = driver_name
         | 
| 75 63 |  | 
| 76 | 
            -
             | 
| 64 | 
            +
                    page.instance_variable_set(:@mode, driver_name) if page
         | 
| 65 | 
            +
                  end
         | 
| 77 66 | 
             
                end
         | 
| 78 67 | 
             
              end
         | 
| 79 68 |  | 
| 80 | 
            -
              def  | 
| 69 | 
            +
              def after_test metadata={}, exception=nil, page=nil
         | 
| 81 70 | 
             
                driver = driver(metadata)
         | 
| 82 71 |  | 
| 83 72 | 
             
                if driver and exception and page and not [:webkit].include? driver
         | 
| @@ -94,6 +83,7 @@ class AcceptanceTest | |
| 94 83 | 
             
                end
         | 
| 95 84 |  | 
| 96 85 | 
             
                Capybara.current_driver = Capybara.default_driver
         | 
| 86 | 
            +
                Capybara.javascript_driver = Capybara.default_driver
         | 
| 97 87 | 
             
              end
         | 
| 98 88 |  | 
| 99 89 | 
             
              def create_shared_context name
         | 
| @@ -120,7 +110,7 @@ class AcceptanceTest | |
| 120 110 | 
             
                if tags.size > 0
         | 
| 121 111 | 
             
                  tag = tags.first.to_sym
         | 
| 122 112 |  | 
| 123 | 
            -
                  if  | 
| 113 | 
            +
                  if driver_manager.supported_drivers.include? tag
         | 
| 124 114 | 
             
                    metadata[:driver] = tag
         | 
| 125 115 | 
             
                  end
         | 
| 126 116 | 
             
                end
         | 
| @@ -128,12 +118,24 @@ class AcceptanceTest | |
| 128 118 | 
             
                metadata
         | 
| 129 119 | 
             
              end
         | 
| 130 120 |  | 
| 121 | 
            +
              def extend_turnip
         | 
| 122 | 
            +
                shared_context_name = "#{random_name}AcceptanceTest"
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                create_shared_context shared_context_name
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                TurnipExt.shared_context_with_turnip shared_context_name
         | 
| 127 | 
            +
              end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
              def enable_external_source data_reader
         | 
| 130 | 
            +
                GherkinExt.enable_external_source data_reader
         | 
| 131 | 
            +
              end
         | 
| 132 | 
            +
             | 
| 131 133 | 
             
              def driver metadata
         | 
| 132 134 | 
             
                driver = ENV['DRIVER'].nil? ? nil : ENV['DRIVER'].to_sym
         | 
| 133 135 |  | 
| 134 136 | 
             
                driver = metadata[:driver] if driver.nil?
         | 
| 135 137 |  | 
| 136 | 
            -
                 | 
| 138 | 
            +
                driver_manager.supported_drivers.each do |supported_driver|
         | 
| 137 139 | 
             
                  driver = supported_driver if metadata[supported_driver]
         | 
| 138 140 | 
             
                  break if driver
         | 
| 139 141 | 
             
                end
         | 
| @@ -143,13 +145,9 @@ class AcceptanceTest | |
| 143 145 | 
             
                driver
         | 
| 144 146 | 
             
              end
         | 
| 145 147 |  | 
| 146 | 
            -
              def selenium_driver? driver
         | 
| 147 | 
            -
             | 
| 148 | 
            -
              end
         | 
| 149 | 
            -
             | 
| 150 | 
            -
              def self.supported_drivers
         | 
| 151 | 
            -
                [:webkit, :selenium, :poltergeist, :selenium_remote]
         | 
| 152 | 
            -
              end
         | 
| 148 | 
            +
              # def selenium_driver? driver
         | 
| 149 | 
            +
              #   driver.to_s =~ /selenium/
         | 
| 150 | 
            +
              # end
         | 
| 153 151 |  | 
| 154 152 | 
             
              def configure_rspec object=nil
         | 
| 155 153 | 
             
                acceptance_test = self
         | 
| @@ -165,11 +163,11 @@ class AcceptanceTest | |
| 165 163 | 
             
                end
         | 
| 166 164 |  | 
| 167 165 | 
             
                rspec_conf.around(:each) do |example|
         | 
| 168 | 
            -
                  acceptance_test. | 
| 166 | 
            +
                  acceptance_test.before_test(example.metadata, page)
         | 
| 169 167 |  | 
| 170 168 | 
             
                  example.run
         | 
| 171 169 |  | 
| 172 | 
            -
                  acceptance_test. | 
| 170 | 
            +
                  acceptance_test.after_test(example.metadata, example.exception, page)
         | 
| 173 171 | 
             
                end
         | 
| 174 172 | 
             
              end
         | 
| 175 173 |  | 
| @@ -187,92 +185,8 @@ class AcceptanceTest | |
| 187 185 | 
             
                end
         | 
| 188 186 | 
             
              end
         | 
| 189 187 |  | 
| 190 | 
            -
              def  | 
| 191 | 
            -
                 | 
| 192 | 
            -
                  when :webkit
         | 
| 193 | 
            -
                    require "capybara-webkit"
         | 
| 194 | 
            -
             | 
| 195 | 
            -
                  when :selenium
         | 
| 196 | 
            -
                    # nothing
         | 
| 197 | 
            -
             | 
| 198 | 
            -
                  when :selenium_with_firebug
         | 
| 199 | 
            -
                    require 'capybara/firebug'
         | 
| 200 | 
            -
             | 
| 201 | 
            -
                  #Capybara.register_driver :selenium_with_firebug do |app|
         | 
| 202 | 
            -
                  #  profile = Selenium::WebDriver::Firefox::Profile.new
         | 
| 203 | 
            -
                  #  profile.enable_firebug
         | 
| 204 | 
            -
                  #  Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
         | 
| 205 | 
            -
                  #end
         | 
| 206 | 
            -
             | 
| 207 | 
            -
                  #Selenium::WebDriver::Firefox::Profile.firebug_version = '1.11.2'
         | 
| 208 | 
            -
                  when :selenium_chrome
         | 
| 209 | 
            -
                    unless Capybara.drivers[:selenium_chrome]
         | 
| 210 | 
            -
                      Capybara.register_driver :selenium_chrome do |app|
         | 
| 211 | 
            -
                        Capybara::Selenium::Driver.new(app, :browser => :chrome)
         | 
| 212 | 
            -
                      end
         | 
| 213 | 
            -
                    end
         | 
| 214 | 
            -
             | 
| 215 | 
            -
                  when :poltergeist
         | 
| 216 | 
            -
                    require 'capybara/poltergeist'
         | 
| 217 | 
            -
             | 
| 218 | 
            -
                    unless Capybara.drivers[:poltergeist]
         | 
| 219 | 
            -
                      Capybara.register_driver :poltergeist do |app|
         | 
| 220 | 
            -
                        Capybara::Poltergeist::Driver.new(app, { debug: false })
         | 
| 221 | 
            -
                      end
         | 
| 222 | 
            -
                    end
         | 
| 223 | 
            -
             | 
| 224 | 
            -
                  when :selenium_remote
         | 
| 225 | 
            -
                    unless Capybara.drivers[:selenium_remote]
         | 
| 226 | 
            -
                      Capybara.register_driver :selenium_remote do |app|
         | 
| 227 | 
            -
                        Capybara::Selenium::Driver.new(app, {:browser => :remote, :url => config[:selenium_url]})
         | 
| 228 | 
            -
             | 
| 229 | 
            -
                        #profile = Selenium::WebDriver::Firefox::Profile.new
         | 
| 230 | 
            -
                        #profile.enable_firebug
         | 
| 231 | 
            -
                        #
         | 
| 232 | 
            -
                        #Capybara::Driver::Selenium.new(app, {
         | 
| 233 | 
            -
                        #  :browser => :remote,
         | 
| 234 | 
            -
                        #  :url => selenium_url,
         | 
| 235 | 
            -
                        #  :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
         | 
| 236 | 
            -
                        #})
         | 
| 237 | 
            -
                      end
         | 
| 238 | 
            -
                    end
         | 
| 239 | 
            -
                  when :selenium_safari
         | 
| 240 | 
            -
                    unless Capybara.drivers[:selenium_safari]
         | 
| 241 | 
            -
                      Capybara.register_driver :selenium_safari do |app|
         | 
| 242 | 
            -
                        Capybara::Selenium::Driver.new(app, :browser => :safari)
         | 
| 243 | 
            -
                      end
         | 
| 244 | 
            -
                    end
         | 
| 245 | 
            -
                  else
         | 
| 246 | 
            -
                    # nothing
         | 
| 247 | 
            -
                end
         | 
| 248 | 
            -
              end
         | 
| 249 | 
            -
             | 
| 250 | 
            -
              def select_driver driver
         | 
| 251 | 
            -
                if selenium_driver?(driver)
         | 
| 252 | 
            -
                  if driver == :selenium_remote
         | 
| 253 | 
            -
                    Capybara.current_driver = driver
         | 
| 254 | 
            -
                    Capybara.javascript_driver = driver
         | 
| 255 | 
            -
                  else
         | 
| 256 | 
            -
                    if acceptance_config_exist?
         | 
| 257 | 
            -
                      Capybara.current_driver = driver
         | 
| 258 | 
            -
                      Capybara.javascript_driver = driver
         | 
| 259 | 
            -
                    else
         | 
| 260 | 
            -
                      if Capybara.drivers[driver]
         | 
| 261 | 
            -
                        Capybara.current_driver = driver
         | 
| 262 | 
            -
                        Capybara.javascript_driver = driver
         | 
| 263 | 
            -
                      end
         | 
| 264 | 
            -
                    end
         | 
| 265 | 
            -
                  end
         | 
| 266 | 
            -
                else
         | 
| 267 | 
            -
                  if Capybara.drivers[driver]
         | 
| 268 | 
            -
                    Capybara.current_driver = driver
         | 
| 269 | 
            -
                    Capybara.javascript_driver = driver
         | 
| 270 | 
            -
                  end
         | 
| 271 | 
            -
                end
         | 
| 272 | 
            -
              end
         | 
| 273 | 
            -
             | 
| 274 | 
            -
              def acceptance_config_exist?
         | 
| 275 | 
            -
                not config.nil?
         | 
| 188 | 
            +
              def random_name
         | 
| 189 | 
            +
                ('a'..'z').to_a.shuffle[0, 12].join
         | 
| 276 190 | 
             
              end
         | 
| 277 191 |  | 
| 278 192 | 
             
              # def self.get_localhost
         | 
| @@ -285,4 +199,7 @@ class AcceptanceTest | |
| 285 199 | 
             
              # ensure
         | 
| 286 200 | 
             
              #   Socket.do_not_reverse_lookup = orig
         | 
| 287 201 | 
             
              # end
         | 
| 202 | 
            +
             | 
| 203 | 
            +
              # ip = `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | cut -d ' ' -f2`.strip
         | 
| 204 | 
            +
              # Capybara.app_host = http://#{ip}:#{Capybara.server_port}
         | 
| 288 205 | 
             
            end
         | 
| @@ -0,0 +1,138 @@ | |
| 1 | 
            +
            require 'capybara'
         | 
| 2 | 
            +
            #require "capybara/dsl"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class DriverManager
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              def initialize
         | 
| 7 | 
            +
                Capybara.configure do |conf|
         | 
| 8 | 
            +
                  #conf.default_wait_time = timeout_in_seconds
         | 
| 9 | 
            +
                  conf.match = :first
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  conf.ignore_hidden_elements = false
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                # try to load capybara-related rspec library
         | 
| 15 | 
            +
                begin
         | 
| 16 | 
            +
                  require 'capybara/rspec'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  RSpec.configure do |conf|
         | 
| 19 | 
            +
                    conf.filter_run_excluding :exclude => true
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  RSpec.configure do |conf|
         | 
| 23 | 
            +
                    conf.include Capybara::DSL
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  RSpec::Core::ExampleGroup.send :include, Capybara::DSL
         | 
| 27 | 
            +
                rescue
         | 
| 28 | 
            +
                  ;
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def supported_drivers
         | 
| 33 | 
            +
                [:selenium, :selenium_remote, :webkit, :poltergeist]
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def register_driver tag, browser, selenium_url
         | 
| 37 | 
            +
                driver_name, properties = *recognize_driver(tag, browser)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                if driver_name
         | 
| 40 | 
            +
                  unless Capybara.drivers[driver_name]
         | 
| 41 | 
            +
                    if driver_name == :poltergeist
         | 
| 42 | 
            +
                      Capybara.register_driver :poltergeist do |app|
         | 
| 43 | 
            +
                        Capybara::Poltergeist::Driver.new(app, { debug: false })
         | 
| 44 | 
            +
                      end
         | 
| 45 | 
            +
                    else
         | 
| 46 | 
            +
                      if driver_name =~ /remote/
         | 
| 47 | 
            +
                        properties[:browser] = :remote
         | 
| 48 | 
            +
                        properties[:url] = selenium_url
         | 
| 49 | 
            +
                        properties[:desired_capabilities] = capabilities if capabilities
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                        Capybara.register_driver driver_name do |app|
         | 
| 52 | 
            +
                          Capybara::Selenium::Driver.new(app, properties)
         | 
| 53 | 
            +
                        end
         | 
| 54 | 
            +
                      else
         | 
| 55 | 
            +
                        properties[:browser] = browser
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                        Capybara.register_driver driver_name do |app|
         | 
| 58 | 
            +
                          Capybara::Selenium::Driver.new(app, properties)
         | 
| 59 | 
            +
                        end
         | 
| 60 | 
            +
                      end
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                driver_name
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              private
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              def recognize_driver tag, browser
         | 
| 71 | 
            +
                properties = {}
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                driver_name =
         | 
| 74 | 
            +
                    case tag
         | 
| 75 | 
            +
                      when :webkit
         | 
| 76 | 
            +
                        require "capybara-webkit"
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                        :webkit
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                      when :selenium
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                        case browser
         | 
| 83 | 
            +
                          when :firefox
         | 
| 84 | 
            +
                            :selenium_firefox
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                          when :firefox_with_firebug
         | 
| 87 | 
            +
                            require 'capybara/firebug'
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                            :selenium_firefox_with_firebug
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                          when :chrome
         | 
| 92 | 
            +
                            :selenium_chrome
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                          when :safari
         | 
| 95 | 
            +
                            :selenium_safari
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                          when :ie, :internet_explorer
         | 
| 98 | 
            +
                            :selenium_ie
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                          else
         | 
| 101 | 
            +
                            :unsupported
         | 
| 102 | 
            +
                        end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                      when :poltergeist
         | 
| 105 | 
            +
                        require 'capybara/poltergeist'
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                        :poltergeist
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                      when :selenium_remote
         | 
| 110 | 
            +
                        case browser
         | 
| 111 | 
            +
                          when :firefox
         | 
| 112 | 
            +
                            :selenium_remote_firefox
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                          when :firefox_with_firebug
         | 
| 115 | 
            +
                            require 'capybara/firebug'
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                            profile = Selenium::WebDriver::Firefox::Profile.new
         | 
| 118 | 
            +
                            profile.enable_firebug
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                            properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                            :selenium_remote_firefox_with_firebug
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                          when :ie
         | 
| 125 | 
            +
                            properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.internet_explorer
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                            :selenium_remote_ie
         | 
| 128 | 
            +
                          else
         | 
| 129 | 
            +
                            :unsupported
         | 
| 130 | 
            +
                        end
         | 
| 131 | 
            +
                      else
         | 
| 132 | 
            +
                        :unsupported
         | 
| 133 | 
            +
                    end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                [driver_name, properties]
         | 
| 136 | 
            +
              end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
            end
         |