ruby_raider 0.7.2 → 0.7.4

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.reek.yml +0 -4
  3. data/README.md +0 -1
  4. data/Rakefile +0 -6
  5. data/lib/generators/automation/automation_generator.rb +48 -1
  6. data/lib/generators/automation/templates/abstract_page.tt +1 -3
  7. data/lib/generators/cucumber/cucumber_generator.rb +16 -0
  8. data/lib/generators/cucumber/templates/partials/appium_env.tt +3 -4
  9. data/lib/generators/cucumber/templates/partials/driver_world.tt +2 -2
  10. data/lib/generators/cucumber/templates/partials/selenium_env.tt +12 -10
  11. data/lib/generators/cucumber/templates/partials/watir_env.tt +4 -32
  12. data/lib/generators/cucumber/templates/partials/watir_world.tt +1 -1
  13. data/lib/generators/helper_generator.rb +1 -6
  14. data/lib/generators/invoke_generators.rb +0 -14
  15. data/lib/generators/menu_generator.rb +9 -23
  16. data/lib/generators/rspec/rspec_generator.rb +10 -2
  17. data/lib/generators/rspec/templates/spec.tt +2 -2
  18. data/lib/generators/templates/common/read_me.tt +0 -1
  19. data/lib/generators/templates/helpers/allure_helper.tt +19 -21
  20. data/lib/generators/templates/helpers/appium_helper.tt +19 -21
  21. data/lib/generators/templates/helpers/browser_helper.tt +12 -9
  22. data/lib/generators/templates/helpers/driver_helper.tt +16 -15
  23. data/lib/generators/templates/helpers/partials/driver_and_options.tt +24 -19
  24. data/lib/generators/templates/helpers/partials/screenshot.tt +6 -3
  25. data/lib/generators/templates/helpers/spec_helper.tt +18 -18
  26. data/lib/generators/templates/helpers/visual_helper.tt +1 -3
  27. data/lib/generators/templates/helpers/visual_spec_helper.tt +2 -4
  28. data/lib/ruby_raider.rb +1 -8
  29. data/ruby_raider.gemspec +1 -2
  30. data/spec/automation_generator_spec.rb +14 -70
  31. data/spec/cucumber_generator_spec.rb +0 -32
  32. data/spec/helpers_generator_spec.rb +0 -8
  33. data/spec/rspec_generator_spec.rb +12 -31
  34. data/spec/spec_helper.rb +4 -4
  35. data/spec/support/settings_helper.rb +1 -3
  36. metadata +2 -26
  37. data/lib/desktop/components/base_component.rb +0 -18
  38. data/lib/desktop/components/runner_components.rb +0 -196
  39. data/lib/desktop/screens/runner_screen.rb +0 -20
  40. data/lib/generators/automation/automation_examples_generator.rb +0 -48
  41. data/lib/generators/automation/templates/partials/require_raider.tt +0 -5
  42. data/lib/generators/cucumber/cucumber_examples_generator.rb +0 -21
  43. data/lib/generators/rspec/rspec_examples_generator.rb +0 -17
  44. data/lib/generators/rspec/templates/base_spec.tt +0 -7
  45. data/lib/generators/templates/helpers/partials/select_driver.tt +0 -9
  46. data/lib/generators/templates/helpers/raider_helper.tt +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8710aab0ae8636ca5829f35c5a5d5076002b02caf918284b161816eeda0b6dca
4
- data.tar.gz: b69e53e10c6bfa0a8132e8975b8ce54cd412bfde5b88d465d244d9241005b4c0
3
+ metadata.gz: a03654b03c3ef053dc6816511268f25dbf4e9ce657b1753f724bb3c5143ad1fa
4
+ data.tar.gz: cd0225ec4cd76957d01f144965471e1a8bf9173ca231bd8cbdad36b37ba9c5bf
5
5
  SHA512:
6
- metadata.gz: 8bc42e8cc009974f4793e47ed2a9eba9afd651fe1309f91a247d587a63618d3302e3ee68bcaaf71378446edd30f5e6b35582ee38c55407e34973f0a1e8fa5538
7
- data.tar.gz: b189d100a0a4c47dcb6be4d58e7ff17e47ffb91c031a820db0d9f84f0a5368a3974d3cb2f846c0286cc6e6405a5cad851f3e44c79f637b41fbfc6b0bfbbaf993
6
+ metadata.gz: 4aff557676479e52920b19bce5d9e7bd5b5dfe70b6ba44cfe1a433c3367bb60f399abd3f1f7800dae85c51e1223f26866aa9ee7025ecda23e19ba93b6a42ffd2
7
+ data.tar.gz: 0f4e485e1d0b8270ef9e5a250abf0e3afcc2af50d7526387c89fc32b863ff6f6671dbd4bcc505faf659a9329eb4d2da88d86761236e693b5bc8041c2d079b904
data/.reek.yml CHANGED
@@ -7,7 +7,3 @@ detectors:
7
7
  exclude:
8
8
  - initialize
9
9
  max_statements: 10
10
-
11
- exclude_paths:
12
- - 'lib/desktop/components/*.rb'
13
- - 'lib/desktop/screens/*.rb'
data/README.md CHANGED
@@ -97,7 +97,6 @@ Commands :
97
97
  raider generate # Provides access to all the generators commands
98
98
  raider help [COMMAND] # Describe available commands or one specific command
99
99
  raider new [PROJECT_NAME] # Creates a new framework based on settings picked
100
- raider open # It opens the desktop runner
101
100
  raider open_ai # Provides access to all the open ai commands
102
101
  raider utility # Provides access to all the utility commands
103
102
  raider version # It shows the version of Ruby Raider you are currently using
data/Rakefile CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require_relative 'lib/ruby_raider'
4
4
  require_relative 'lib/commands/scaffolding_commands'
5
- require_relative 'lib/desktop/screens/runner_screen'
6
5
 
7
6
  desc 'Creates a new test project'
8
7
  task :new, [:name] do |_t, args|
@@ -28,8 +27,3 @@ desc 'Download mobile builds'
28
27
  task :builds, [:type] do |_t, args|
29
28
  ScaffoldingCommands.new.invoke(:download_builds, nil, %W[#{args.type}])
30
29
  end
31
-
32
- desc 'Open the run screen'
33
- task :runner do
34
- RunnerScreen.new.launch
35
- end
@@ -6,9 +6,13 @@ class AutomationGenerator < Generator
6
6
  def generate_automation_files
7
7
  if mobile?
8
8
  generate_appium_settings
9
+ generate_home_page
10
+ generate_pdp_page
9
11
  else
10
- generate_abstract_component
11
12
  generate_visual_options
13
+ generate_components
14
+ generate_model_files
15
+ generate_pages
12
16
  end
13
17
 
14
18
  generate_abstract_page
@@ -16,6 +20,21 @@ class AutomationGenerator < Generator
16
20
 
17
21
  private
18
22
 
23
+ def generate_pages
24
+ generate_login_page
25
+ generate_account_page
26
+ end
27
+
28
+ def generate_components
29
+ generate_abstract_component
30
+ generate_header_component
31
+ end
32
+
33
+ def generate_model_files
34
+ generate_model_factory
35
+ generate_model_data
36
+ end
37
+
19
38
  def generate_abstract_page
20
39
  template('abstract_page.tt', "#{name}/page_objects/abstract/abstract_page.rb")
21
40
  end
@@ -33,4 +52,32 @@ class AutomationGenerator < Generator
33
52
 
34
53
  template('visual_options.tt', "#{name}/config/options.yml")
35
54
  end
55
+
56
+ def generate_login_page
57
+ template('login_page.tt', "#{name}/page_objects/pages/login_page.rb")
58
+ end
59
+
60
+ def generate_account_page
61
+ template('account_page.tt', "#{name}/page_objects/pages/account_page.rb")
62
+ end
63
+
64
+ def generate_home_page
65
+ template('home_page.tt', "#{name}/page_objects/pages/home_page.rb")
66
+ end
67
+
68
+ def generate_pdp_page
69
+ template('pdp_page.tt', "#{name}/page_objects/pages/pdp_page.rb")
70
+ end
71
+
72
+ def generate_header_component
73
+ template('component.tt', "#{name}/page_objects/components/header_component.rb")
74
+ end
75
+
76
+ def generate_model_factory
77
+ template('factory.tt', "#{name}/models/model_factory.rb")
78
+ end
79
+
80
+ def generate_model_data
81
+ template('data.tt', "#{name}/models/data/users.yml")
82
+ end
36
83
  end
@@ -1,8 +1,6 @@
1
- <%= ERB.new(File.read(File.expand_path('./partials/require_raider.tt', __dir__)), trim_mode: '-').result(binding) -%>
2
-
3
1
  class AbstractPage
4
2
  <% if automation == 'cross_platform' -%>
5
- include Raider::AppiumHelper
3
+ include AppiumHelper
6
4
  <% end -%>
7
5
  <%= ERB.new(File.read(File.expand_path('./partials/initialize_selector.tt', __dir__))).result(binding) -%>
8
6
  <%= ERB.new(File.read(File.expand_path('./partials/visit_method.tt', __dir__))).result(binding) -%>
@@ -3,6 +3,18 @@
3
3
  require_relative '../generator'
4
4
 
5
5
  class CucumberGenerator < Generator
6
+ def generate_feature
7
+ template('feature.tt', "#{name}/features/#{template_name}.feature")
8
+ end
9
+
10
+ def generate_steps
11
+ template('steps.tt', "#{name}/features/step_definitions/#{template_name}_steps.rb")
12
+ end
13
+
14
+ def generate_user_factory
15
+ template('user_factory.tt', "#{name}/models/user_factory.rb")
16
+ end
17
+
6
18
  def generate_env_file
7
19
  template('env.tt', "#{name}/features/support/env.rb")
8
20
  end
@@ -14,4 +26,8 @@ class CucumberGenerator < Generator
14
26
  def generate_cucumber_file
15
27
  template('cucumber.tt', "#{name}/cucumber.yml")
16
28
  end
29
+
30
+ def template_name
31
+ @template_name ||= (@_initializer.first & %w[android ios cross_platform]).empty? ? 'login' : 'home'
32
+ end
17
33
  end
@@ -1,15 +1,14 @@
1
1
  require_relative '../../helpers/driver_helper'
2
2
 
3
- include Raider::DriverHelper
3
+ include DriverHelper
4
4
 
5
5
  Before do
6
- Raider::AllureHelper.configure
7
- new_driver
6
+ AllureHelper.configure
8
7
  driver.start_driver
9
8
  end
10
9
 
11
10
  After do |scenario|
12
11
  driver.screenshot("allure-results/screenshots/#{scenario.name}.png")
13
- Raider::AllureHelper.add_screenshot(scenario.name)
12
+ AllureHelper.add_screenshot(scenario.name)
14
13
  driver.quit_driver
15
14
  end
@@ -5,7 +5,7 @@ require_relative '../../helpers/visual_helper'
5
5
  <%- if automation == 'selenium' -%>
6
6
  require_relative '../../models/user_factory'
7
7
 
8
- World(Raider::DriverHelper<%- if visual_automation -%>, Raider::VisualHelper<%- end -%>)
8
+ World(DriverHelper<%- if visual_automation -%>, VisualHelper<%- end -%>)
9
9
  <%- else -%>
10
- World(Raider::DriverHelper)
10
+ World(DriverHelper)
11
11
  <%- end -%>
@@ -1,23 +1,24 @@
1
1
  <%- if visual_automation -%>
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative '../../helpers/allure_helper'
4
5
  require_relative '../../helpers/driver_helper'
5
6
  require_relative '../../helpers/visual_helper'
6
7
 
7
- include Raider::DriverHelper
8
- include Raider::VisualHelper
8
+ include DriverHelper
9
+ include VisualHelper
9
10
 
10
11
  Before do
11
12
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
12
- @grid_runner = create_grid_runner
13
- @eyes = create_eyes(@grid_runner)
14
- configure_eyes @eyes
15
- @driver = @eyes.open(driver: new_driver)
13
+ @grid_runner = VisualHelper.create_grid_runner
14
+ @eyes = VisualHelper.create_eyes(@grid_runner)
15
+ VisualHelper.configure_eyes @eyes
16
+ @driver = @eyes.open(driver: driver)
16
17
  end
17
18
 
18
19
  After do |scenario|
19
20
  driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
20
- Raider::AllureHelper.add_screenshot(scenario.name)
21
+ AllureHelper.add_screenshot(scenario.name)
21
22
  @eyes.close
22
23
  @driver.quit
23
24
  @eyes.abort_async
@@ -29,16 +30,17 @@ end
29
30
  # frozen_string_literal: true
30
31
 
31
32
  require_relative '../../helpers/driver_helper'
33
+ require_relative '../../helpers/allure_helper'
32
34
 
33
- include Raider::DriverHelper
35
+ include DriverHelper
34
36
 
35
37
  Before do
36
- new_driver
38
+ driver
37
39
  end
38
40
 
39
41
  After do |scenario|
40
42
  driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
41
- Raider::AllureHelper.add_screenshot(scenario.name)
43
+ AllureHelper.add_screenshot(scenario.name)
42
44
  driver.quit
43
45
  end
44
46
  <%- end -%>
@@ -1,44 +1,16 @@
1
- <%- if visual_automation -%>
2
1
  # frozen_string_literal: true
3
2
 
3
+ require_relative '../../helpers/allure_helper'
4
4
  require_relative '../../helpers/browser_helper'
5
- require_relative '../../helpers/visual_helper'
6
5
 
7
- include Raider::BrowserHelper
8
- include Raider::VisualHelper
6
+ include BrowserHelper
9
7
 
10
8
  Before do
11
- OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
12
- @grid_runner = create_grid_runner
13
- @eyes = create_eyes(@grid_runner)
14
- configure_eyes @eyes
15
- @browser = @eyes.open(driver: new_browser.driver)
9
+ browser
16
10
  end
17
11
 
18
12
  After do |scenario|
19
13
  browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
20
- Raider::AllureHelper.add_screenshot(scenario.name)
21
- @eyes.close
22
- @browser.quit
23
- @eyes.abort_async
24
- results = @grid_runner.get_all_test_results
25
- puts results
26
- end
27
-
28
- <%- else -%>
29
- # frozen_string_literal: true
30
-
31
- require_relative '../../helpers/browser_helper'
32
-
33
- include Raider::BrowserHelper
34
-
35
- Before do
36
- new_browser
37
- end
38
-
39
- After do |scenario|
40
- browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
41
- Raider::AllureHelper.add_screenshot(scenario.name)
14
+ AllureHelper.add_screenshot(scenario.name)
42
15
  browser.quit
43
16
  end
44
- <%- end -%>
@@ -1,4 +1,4 @@
1
1
  require_relative '../../helpers/browser_helper'
2
2
  require_relative '../../models/user_factory'
3
3
 
4
- World(Raider::BrowserHelper)
4
+ World(BrowserHelper)
@@ -4,7 +4,6 @@ require_relative 'generator'
4
4
 
5
5
  class HelpersGenerator < Generator
6
6
  def generate_helpers
7
- generate_raider_helper
8
7
  generate_browser_helper
9
8
  generate_driver_helper
10
9
  generate_appium_helper
@@ -20,16 +19,12 @@ class HelpersGenerator < Generator
20
19
 
21
20
  private
22
21
 
23
- def generate_raider_helper
24
- template('helpers/raider_helper.tt', "#{name}/helpers/raider.rb")
25
- end
26
-
27
22
  def generate_allure_helper
28
23
  template('helpers/allure_helper.tt', "#{name}/helpers/allure_helper.rb")
29
24
  end
30
25
 
31
26
  def generate_browser_helper
32
- return if selenium?
27
+ return if selenium? || mobile?
33
28
 
34
29
  template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
35
30
  end
@@ -1,11 +1,8 @@
1
1
  require_relative 'automation/automation_generator'
2
- require_relative 'automation/automation_examples_generator'
3
2
  require_relative 'common_generator'
4
3
  require_relative 'cucumber/cucumber_generator'
5
- require_relative 'cucumber/cucumber_examples_generator'
6
4
  require_relative 'helper_generator'
7
5
  require_relative 'rspec/rspec_generator'
8
- require_relative 'rspec/rspec_examples_generator'
9
6
 
10
7
  # :reek:FeatureEnvy { enabled: false }
11
8
  # :reek:UtilityFunction { enabled: false }
@@ -14,7 +11,6 @@ module InvokeGenerators
14
11
  generators = %w[Automation Common Helpers]
15
12
  framework = structure[:framework]
16
13
  add_generator(generators, framework.capitalize)
17
- generators = add_examples(generators) if structure[:examples]
18
14
  generators.each do |generator|
19
15
  invoke_generator({
20
16
  automation: structure[:automation],
@@ -30,16 +26,6 @@ module InvokeGenerators
30
26
  gens.each { |generator| generators.push generator }
31
27
  end
32
28
 
33
- def add_examples(generators)
34
- if generators.include?('Cucumber')
35
- generators.push('CucumberExamples')
36
- else
37
- generators.push('RspecExamples')
38
- end
39
-
40
- generators.push('AutomationExamples')
41
- end
42
-
43
29
  def invoke_generator(structure = {})
44
30
  Object.const_get("#{structure[:generator]}Generator")
45
31
  .new([structure[:automation],
@@ -39,8 +39,7 @@ class MenuGenerator
39
39
  automation: options[:automation],
40
40
  framework: options[:framework],
41
41
  name: @name,
42
- visual: options[:visual_automation],
43
- examples: options[:with_examples]
42
+ visual: options[:visual_automation]
44
43
  }
45
44
  generate_framework(structure)
46
45
  system "cd #{name} && gem install bundler && bundle install"
@@ -59,36 +58,23 @@ class MenuGenerator
59
58
 
60
59
  def select_test_framework(automation)
61
60
  prompt.select('Please select your test framework') do |menu|
62
- menu.choice :Cucumber, -> { select_example_files('Cucumber', automation) }
63
- menu.choice :Rspec, -> { select_example_files('Rspec', automation) }
61
+ menu.choice :Cucumber, -> { create_framework('Cucumber', automation) }
62
+ menu.choice :Rspec, -> { create_framework('Rspec', automation) }
64
63
  menu.choice :Quit, -> { exit }
65
64
  end
66
65
  end
67
66
 
68
- def select_example_files(framework, automation)
69
- prompt.select('Would you like to create example files?') do |menu|
70
- menu.choice :Yes, -> { framework_with_examples(framework, automation) }
71
- menu.choice :No, -> { framework_without_examples(framework, automation) }
72
- menu.choice :Quit, -> { exit }
73
- end
74
- end
75
-
76
- FrameworkOptions = Struct.new(:automation, :framework, :visual_automation, :with_examples)
67
+ FrameworkOptions = Struct.new(:automation, :framework, :visual_automation)
77
68
 
78
69
  def create_framework_options(params)
79
- FrameworkOptions.new(params[:automation], params[:framework], params[:visual_automation], params[:with_examples])
80
- end
81
-
82
- def framework_with_examples(framework, automation_type)
83
- visual_automation = choose_visual_automation if %w[selenium].include?(automation_type)
84
- options = create_framework_options(automation: automation_type, framework: framework.downcase, visual_automation: visual_automation, with_examples: true)
85
- set_up_framework(options)
86
- prompt.say("You have chosen to use #{framework} with #{automation_type}")
70
+ FrameworkOptions.new(params[:automation], params[:framework], params[:visual_automation])
87
71
  end
88
72
 
89
- def framework_without_examples(framework, automation_type)
73
+ def create_framework(framework, automation_type)
90
74
  visual_automation = choose_visual_automation if %w[selenium].include?(automation_type)
91
- options = create_framework_options(automation: automation_type, framework: framework.downcase, visual_automation: visual_automation, with_examples: false)
75
+ options = create_framework_options(automation: automation_type,
76
+ framework: framework.downcase,
77
+ visual_automation: visual_automation)
92
78
  set_up_framework(options)
93
79
  prompt.say("You have chosen to use #{framework} with #{automation_type}")
94
80
  end
@@ -3,7 +3,15 @@
3
3
  require_relative '../generator'
4
4
 
5
5
  class RspecGenerator < Generator
6
- def generate_base_spec
7
- template('base_spec.tt', "#{name}/spec/base_spec.rb")
6
+ def generate_login_spec
7
+ return if mobile?
8
+
9
+ template('spec.tt', "#{name}/spec/login_page_spec.rb")
10
+ end
11
+
12
+ def generate_pdp_spec
13
+ return unless mobile?
14
+
15
+ template('spec.tt', "#{name}/spec/pdp_page_spec.rb")
8
16
  end
9
17
  end
@@ -1,7 +1,7 @@
1
1
  <%- if %w[selenium watir].include? automation -%>
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative 'base_spec'
4
+ require_relative '../helpers/spec_helper'
5
5
  require_relative '../models/model_factory'
6
6
  require_relative '../page_objects/pages/account_page'
7
7
  require_relative '../page_objects/pages/login_page'
@@ -43,8 +43,8 @@ describe 'Login' do
43
43
  end
44
44
  end
45
45
  <%- else -%>
46
+ require_relative '../helpers/spec_helper'
46
47
  require_relative '../page_objects/pages/home_page'
47
- require_relative 'base_spec'
48
48
  require_relative '../page_objects/pages/pdp_page'
49
49
 
50
50
  class PdpSpec < BaseSpec
@@ -93,7 +93,6 @@ Commands :
93
93
  raider generate # Provides access to all the generators commands
94
94
  raider help [COMMAND] # Describe available commands or one specific command
95
95
  raider new [PROJECT_NAME] # Creates a new framework based on settings picked
96
- raider open # It opens the desktop runner
97
96
  raider open_ai # Provides access to all the open ai commands
98
97
  raider utility # Provides access to all the utility commands
99
98
  raider version # It shows the version of Ruby Raider you are currently using
@@ -4,30 +4,28 @@
4
4
  <%- allure = ERB.new(File.read(File.expand_path('./partials/allure_imports.tt', __dir__))).result(binding).strip! -%>
5
5
 
6
6
 
7
- module Raider
8
- module AllureHelper
9
- class << self
10
- def configure
11
- <%= allure %>.configure do |config|
12
- config.results_directory = 'allure-results'
13
- config.clean_results_directory = true
14
- end
7
+ module AllureHelper
8
+ class << self
9
+ def configure
10
+ <%= allure %>.configure do |config|
11
+ config.results_directory = 'allure-results'
12
+ config.clean_results_directory = true
15
13
  end
14
+ end
16
15
 
17
- def add_screenshot(screenshot_name)
18
- Allure.add_attachment(
19
- name: name,
20
- source: File.open("allure-results/screenshots/#{screenshot_name}.png"),
21
- type: Allure::ContentType::PNG,
22
- test_case: true
23
- )
24
- end
16
+ def add_screenshot(screenshot_name)
17
+ Allure.add_attachment(
18
+ name: name,
19
+ source: File.open("allure-results/screenshots/#{screenshot_name}.png"),
20
+ type: Allure::ContentType::PNG,
21
+ test_case: true
22
+ )
23
+ end
25
24
 
26
- <%- if framework == 'rspec' -%>
27
- def formatter
28
- AllureRspecFormatter
29
- end
30
- <%- end -%>
25
+ <%- if framework == 'rspec' -%>
26
+ def formatter
27
+ AllureRspecFormatter
31
28
  end
29
+ <%- end -%>
32
30
  end
33
31
  end
@@ -1,29 +1,27 @@
1
- module Raider
2
- module AppiumHelper
3
- def element(opts = {})
4
- return driver.find_element(strategy(opts) => selector(opts)) if opts[os]
1
+ module AppiumHelper
2
+ def element(opts = {})
3
+ return driver.find_element(strategy(opts) => selector(opts)) if opts[os]
5
4
 
6
- driver.find_element(opts)
7
- end
5
+ driver.find_element(opts)
6
+ end
8
7
 
9
- def elements(opts = {})
10
- return driver.find_elements(strategy(opts) => selector(opts)) if opts[os]
8
+ def elements(opts = {})
9
+ return driver.find_elements(strategy(opts) => selector(opts)) if opts[os]
11
10
 
12
- driver.find_elements(opts)
13
- end
11
+ driver.find_elements(opts)
12
+ end
14
13
 
15
- def os
16
- driver.appium_device
17
- end
14
+ def os
15
+ driver.appium_device
16
+ end
18
17
 
19
- private
18
+ private
20
19
 
21
- def strategy(opts)
22
- opts[os].keys.first
23
- end
20
+ def strategy(opts)
21
+ opts[os].keys.first
22
+ end
24
23
 
25
- def selector(opts)
26
- opts[os][strategy(opts)]
27
- end
28
- end
24
+ def selector(opts)
25
+ opts[os][strategy(opts)]
26
+ end
29
27
  end
@@ -5,15 +5,18 @@ require 'selenium-webdriver'
5
5
  require 'watir'
6
6
  require 'webdrivers'
7
7
 
8
- module Raider
9
- module BrowserHelper
10
- attr_reader :browser
8
+ module BrowserHelper
11
9
 
12
- def new_browser(*args)
13
- @config = YAML.load_file('config/config.yml')
14
- browser = @config['browser'].to_sym
15
- args = args.empty? ? @config['browser_options'] : args
16
- @browser = Watir::Browser.new(browser, options: { args: args })
17
- end
10
+ def browser(*args)
11
+ @browser ||= create_browser(*args)
12
+ end
13
+
14
+ private
15
+
16
+ def create_browser(*args)
17
+ @config = YAML.load_file('config/config.yml')
18
+ browser = @config['browser'].to_sym
19
+ args = args.empty? ? @config['browser_options'] : args
20
+ @browser = Watir::Browser.new(browser, options: { args: args })
18
21
  end
19
22
  end
@@ -7,24 +7,25 @@ require 'webdrivers'
7
7
  require 'appium_lib'
8
8
  <% end -%>
9
9
 
10
- module Raider
11
- module DriverHelper
12
- attr_reader :driver
10
+ module DriverHelper
11
+ <% if automation == 'selenium' -%>
12
+ def driver(*opts)
13
+ @driver ||= create_driver(*opts)
14
+ end
15
+ <% else -%>
16
+ def driver
17
+ @driver ||= create_driver
18
+ end
19
+ <%- end -%>
13
20
 
14
- <%= ERB.new(File.read(File.expand_path('./partials/driver_and_options.tt', __dir__)), trim_mode: '-').result(binding).strip! %>
15
-
16
- <% if automation == 'cross_platform' -%>
17
21
  private
18
22
 
19
- def config
20
- YAML.load_file('config/config.yml')
21
- end
22
- <% end -%>
23
+ <%= ERB.new(File.read(File.expand_path('./partials/driver_and_options.tt', __dir__)), trim_mode: '-').result(binding).strip! %>
24
+
23
25
  <%- if automation != 'selenium' -%>
24
- # :reek:UtilityFunction
25
- def caps
26
- YAML.load_file('config/capabilities.yml')
27
- end
26
+ # :reek:UtilityFunction
27
+ def caps
28
+ YAML.load_file('config/capabilities.yml')
29
+ end
28
30
  <%- end -%>
29
31
  end
30
- end