Class: RspecHelper

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/acceptance_test/rspec/rspec_helper.rb

Instance Method Summary collapse

Instance Method Details

#after_test(metadata: metadata, exception: exception) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 76

def after_test(metadata: , exception: exception)
  CapybaraHelper.instance.after_test metadata: , exception: exception

  #   driver = driver(example.metadata)
  #
  #   if driver and exception and page and not [:webkit].include? driver
  #     screenshot_maker.basedir = File.expand_path(config[:screenshots_dir])
  #
  #     screenshot_maker.make page, example.metadata
  #
  #     puts example.metadata[:full_description]
  #     puts "Screenshot: #{screenshot_maker.screenshot_url(example.metadata)}"
  #   end
  #
end

#before_test(metadata:, app_host:, driver:, browser:, wait_time:) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 53

def before_test metadata:, app_host:, driver:, browser:, wait_time:
  old_driver = Capybara.current_driver

  selected_driver = RspecHelper.instance.get_driver(, driver: driver)
  selected_browser = RspecHelper.instance.get_browser(, browser: browser)

  params = {app_host: app_host, driver: selected_driver, browser: selected_browser, wait_time: wait_time}

  CapybaraHelper.instance.before_test params

  # puts "Using driver: #{Capybara.current_driver}."
  # puts "Default wait time: #{Capybara.default_max_wait_time }."

  new_driver = Capybara.current_driver

  Capybara.current_session.instance_variable_set(:@mode, new_driver)

  if old_driver != new_driver
    .delete(old_driver)
    [new_driver] = true
  end
end

#configure(app_host:, driver: CapybaraHelper::DEFAULT_DRIVER, browser: CapybaraHelper::DEFAULT_BROWSER, wait_time: CapybaraHelper::DEFAULT_WAIT_TIME) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 14

def configure(app_host:, driver: CapybaraHelper::DEFAULT_DRIVER, browser: CapybaraHelper::DEFAULT_BROWSER,
              wait_time: CapybaraHelper::DEFAULT_WAIT_TIME)
  register_extensions

  RSpec.configure do |rspec_config|
    params = {app_host: app_host, driver: driver, browser: browser, wait_time: wait_time}

    RspecHelper.instance.configure_rspec rspec_config, params
  end
end

#configure_rspec(rspec_config, app_host:, driver: CapybaraHelper::DEFAULT_DRIVER, browser: CapybaraHelper::DEFAULT_BROWSER, wait_time: CapybaraHelper::DEFAULT_WAIT_TIME) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 40

def configure_rspec(rspec_config, app_host:, driver: CapybaraHelper::DEFAULT_DRIVER, browser: CapybaraHelper::DEFAULT_BROWSER,
                    wait_time: CapybaraHelper::DEFAULT_WAIT_TIME)
  rspec_config.around(:each) do |example|
    params = {metadata: example., app_host: app_host, driver: driver, browser: browser, wait_time: wait_time}

    RspecHelper.instance.before_test params

    example.run

    RspecHelper.instance.after_test metadata: example., exception: example.exception
  end
end

#create_shared_context(name) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 25

def create_shared_context(name)
  register_extensions

  RSpec.shared_context name do |app_host:, driver: CapybaraHelper::DEFAULT_DRIVER, browser: CapybaraHelper::DEFAULT_BROWSER,
      wait_time: CapybaraHelper::DEFAULT_WAIT_TIME|
    self.define_singleton_method(:include_context, lambda do
      params = {app_host: app_host, driver: driver, browser: browser, wait_time: wait_time}

      RspecHelper.instance.configure_rspec self, params
    end)

    include_context
  end
end

#get_browser(metadata, browser:) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 123

def get_browser(, browser:)
  #browser_name = ENV['BROWSER'].nil? ? nil : ENV['BROWSER'].to_sym

  browser_name = browser

  browser_name = [:browser] unless browser_name

  supported_browsers.each do |supported_browser|
    browser_name = supported_browser if [supported_browser]
    break if browser
  end if browser.nil?

  browser_name = CapybaraHelper::DEFAULT_BROWSER unless browser_name

  browser_name
end

#get_driver(metadata, driver:) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 106

def get_driver(, driver:)
  #driver = ENV['DRIVER'].nil? ? nil : ENV['DRIVER'].to_sym

  driver_name = driver

  driver_name = [:driver] unless driver_name

  supported_drivers.each do |supported_driver|
    driver_name = supported_driver if [supported_driver]
    break if driver
  end if driver.nil?

  driver_name = :selenium unless driver_name

  driver_name
end

#register_extensionsObject



92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 92

def register_extensions
  RSpec.configure do |conf|
    conf.filter_run_excluding :exclude => true
  end

  RSpec::configure do |config|
    config.include RSpec::Matchers::DSL
    config.include Capybara::RSpecMatchers
    config.include Capybara::DSL
  end

  # RSpec::Core::ExampleGroup.send :include, Capybara::DSL
end

#run_on_specs_finished(command) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 148

def run_on_specs_finished command
  clazz = Object.const_set("CustomFormatter", Class.new)

  clazz.class_eval do
    define_method :initialize do |_| ; end

    define_method :close do |_|
      system command

      # require 'launchy'
      #
      # ENV['BROWSER'] = '/Applications/Google\ Chrome.app'
      #
      # Launchy.open "output/wikipedia-turnip-report.html"
    end
  end

  RSpec::Core::Formatters.register clazz, :close

  RSpec::configure do |config|
    config.formatter = "CustomFormatter"
  end

  # RSpec.configure do |config|
  #   config.after(:type => :feature) do
  #     system cmd
  #   end
  # end
end

#supported_browsersObject



144
145
146
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 144

def supported_browsers
  [:chrome, :firefox]
end

#supported_driversObject



140
141
142
# File 'lib/acceptance_test/rspec/rspec_helper.rb', line 140

def supported_drivers
  [:selenium, :webkit]
end