ruby_raider 3.0.1 → 3.2.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.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/e2e_tests.yml +0 -17
  3. data/.github/workflows/system_tests.yml +0 -22
  4. data/README.md +8 -63
  5. data/lib/commands/scaffolding_commands.rb +1 -192
  6. data/lib/commands/utility_commands.rb +0 -52
  7. data/lib/generators/automation/templates/login.tt +1 -9
  8. data/lib/generators/automation/templates/page.tt +1 -7
  9. data/lib/generators/automation/templates/partials/initialize_selector.tt +1 -3
  10. data/lib/generators/automation/templates/partials/visit_method.tt +2 -6
  11. data/lib/generators/common_generator.rb +0 -6
  12. data/lib/generators/cucumber/cucumber_generator.rb +0 -24
  13. data/lib/generators/cucumber/templates/accessibility_steps.tt +2 -6
  14. data/lib/generators/cucumber/templates/cucumber.tt +0 -7
  15. data/lib/generators/cucumber/templates/env.tt +1 -3
  16. data/lib/generators/cucumber/templates/partials/appium_env.tt +1 -6
  17. data/lib/generators/cucumber/templates/partials/selenium_env.tt +0 -13
  18. data/lib/generators/cucumber/templates/partials/watir_env.tt +0 -13
  19. data/lib/generators/cucumber/templates/partials/web_steps.tt +4 -4
  20. data/lib/generators/cucumber/templates/world.tt +1 -3
  21. data/lib/generators/generator.rb +2 -46
  22. data/lib/generators/helper_generator.rb +4 -49
  23. data/lib/generators/infrastructure/templates/github.tt +2 -2
  24. data/lib/generators/infrastructure/templates/github_appium.tt +2 -6
  25. data/lib/generators/invoke_generators.rb +4 -25
  26. data/lib/generators/menu_generator.rb +10 -100
  27. data/lib/generators/rspec/rspec_generator.rb +0 -11
  28. data/lib/generators/rspec/templates/accessibility_spec.tt +2 -6
  29. data/lib/generators/rspec/templates/spec.tt +6 -8
  30. data/lib/generators/templates/common/gemfile.tt +0 -26
  31. data/lib/generators/templates/common/git_ignore.tt +0 -2
  32. data/lib/generators/templates/common/partials/mobile_config.tt +0 -4
  33. data/lib/generators/templates/common/partials/web_config.tt +1 -12
  34. data/lib/generators/templates/common/rakefile.tt +0 -9
  35. data/lib/generators/templates/common/read_me.tt +4 -10
  36. data/lib/generators/templates/helpers/allure_helper.tt +0 -10
  37. data/lib/generators/templates/helpers/browser_helper.tt +0 -5
  38. data/lib/generators/templates/helpers/partials/quit_driver.tt +1 -3
  39. data/lib/generators/templates/helpers/partials/screenshot.tt +1 -3
  40. data/lib/generators/templates/helpers/partials/selenium_driver.tt +0 -5
  41. data/lib/generators/templates/helpers/spec_helper.tt +2 -44
  42. data/lib/generators/templates/helpers/test_helper.tt +0 -7
  43. data/lib/ruby_raider.rb +2 -50
  44. data/lib/scaffolding/project_detector.rb +2 -9
  45. data/lib/scaffolding/scaffolding.rb +0 -109
  46. data/lib/scaffolding/templates/component.tt +1 -4
  47. data/lib/scaffolding/templates/page_object.tt +0 -10
  48. data/lib/scaffolding/templates/spec.tt +2 -6
  49. data/lib/scaffolding/templates/steps.tt +0 -2
  50. data/lib/utilities/utilities.rb +20 -33
  51. data/lib/version +1 -1
  52. data/sig/commands/scaffolding_commands.rbs +0 -12
  53. data/sig/commands/utility_commands.rbs +0 -7
  54. data/sig/generators/cucumber/cucumber_generator.rbs +0 -4
  55. data/sig/generators/generator.rbs +0 -11
  56. data/sig/generators/helper_generator.rbs +1 -6
  57. data/sig/generators/invoke_generators.rbs +1 -2
  58. data/sig/generators/menu_generator.rbs +2 -6
  59. data/sig/generators/rspec/rspec_generator.rbs +0 -2
  60. data/sig/ruby_raider.rbs +1 -3
  61. data/sig/scaffolding/project_detector.rbs +0 -1
  62. data/sig/scaffolding/scaffolding.rbs +0 -23
  63. data/sig/utilities/utilities.rbs +0 -5
  64. data/spec/commands/raider_commands_spec.rb +0 -61
  65. data/spec/integration/commands/browser_update_after_creation_spec.rb +123 -0
  66. data/spec/integration/commands/scaffolding_commands_spec.rb +0 -20
  67. data/spec/integration/commands/utility_commands_spec.rb +5 -5
  68. data/spec/integration/content/ci_content_spec.rb +6 -61
  69. data/spec/integration/content/common_content_spec.rb +0 -64
  70. data/spec/integration/content/config_content_spec.rb +0 -86
  71. data/spec/integration/content/content_helper.rb +2 -2
  72. data/spec/integration/content/gemfile_content_spec.rb +0 -71
  73. data/spec/integration/content/helper_content_spec.rb +2 -284
  74. data/spec/integration/content/page_content_spec.rb +0 -89
  75. data/spec/integration/content/syntax_validation_spec.rb +2 -2
  76. data/spec/integration/content/test_content_spec.rb +0 -119
  77. data/spec/integration/end_to_end_features_spec.rb +13 -435
  78. data/spec/integration/end_to_end_spec.rb +0 -96
  79. data/spec/integration/generators/axe_addon_spec.rb +2 -52
  80. data/spec/integration/generators/common_generator_spec.rb +1 -13
  81. data/spec/integration/generators/config_features_spec.rb +3 -81
  82. data/spec/integration/generators/github_generator_spec.rb +5 -15
  83. data/spec/integration/generators/helpers_generator_spec.rb +0 -37
  84. data/spec/integration/scaffolding_e2e_spec.rb +2 -237
  85. data/spec/integration/settings_helper.rb +1 -3
  86. data/spec/integration/spec_helper.rb +6 -11
  87. data/spec/menus/menu_generator_spec.rb +4 -107
  88. data/spec/scaffolding/scaffold_project_detector_spec.rb +4 -26
  89. data/spec/scaffolding/scaffolding_features_spec.rb +0 -183
  90. data/spec/system/selenium_spec.rb +1 -4
  91. data/spec/system/support/system_test_helper.rb +0 -1
  92. data/spec/system/watir_spec.rb +1 -4
  93. data/spec/utilities/headless_config_spec.rb +0 -7
  94. metadata +3 -102
  95. data/lib/adopter/adopt_menu.rb +0 -146
  96. data/lib/adopter/converters/base_converter.rb +0 -84
  97. data/lib/adopter/converters/identity_converter.rb +0 -53
  98. data/lib/adopter/migration_plan.rb +0 -74
  99. data/lib/adopter/migrator.rb +0 -96
  100. data/lib/adopter/plan_builder.rb +0 -275
  101. data/lib/adopter/project_analyzer.rb +0 -252
  102. data/lib/adopter/project_detector.rb +0 -157
  103. data/lib/generators/cucumber/templates/partials/capybara_env.tt +0 -38
  104. data/lib/generators/cucumber/templates/partials/capybara_world.tt +0 -6
  105. data/lib/generators/cucumber/templates/performance_feature.tt +0 -5
  106. data/lib/generators/cucumber/templates/performance_steps.tt +0 -17
  107. data/lib/generators/cucumber/templates/visual_feature.tt +0 -5
  108. data/lib/generators/cucumber/templates/visual_steps.tt +0 -19
  109. data/lib/generators/infrastructure/gitlab_generator.rb +0 -11
  110. data/lib/generators/infrastructure/templates/gitlab.tt +0 -46
  111. data/lib/generators/minitest/minitest_generator.rb +0 -35
  112. data/lib/generators/minitest/templates/accessibility_test.tt +0 -26
  113. data/lib/generators/minitest/templates/performance_test.tt +0 -18
  114. data/lib/generators/minitest/templates/test.tt +0 -64
  115. data/lib/generators/minitest/templates/visual_test.tt +0 -23
  116. data/lib/generators/rspec/templates/performance_spec.tt +0 -18
  117. data/lib/generators/rspec/templates/visual_spec.tt +0 -20
  118. data/lib/generators/templates/common/ruby_version.tt +0 -1
  119. data/lib/generators/templates/helpers/capybara_helper.tt +0 -32
  120. data/lib/generators/templates/helpers/debug_helper.tt +0 -190
  121. data/lib/generators/templates/helpers/partials/debug_diagnostics.tt +0 -7
  122. data/lib/generators/templates/helpers/partials/debug_start.tt +0 -7
  123. data/lib/generators/templates/helpers/performance_helper.tt +0 -57
  124. data/lib/generators/templates/helpers/visual_helper.tt +0 -58
  125. data/lib/llm/client.rb +0 -79
  126. data/lib/llm/config.rb +0 -57
  127. data/lib/llm/prompts.rb +0 -84
  128. data/lib/llm/provider.rb +0 -27
  129. data/lib/llm/providers/anthropic_provider.rb +0 -43
  130. data/lib/llm/providers/ollama_provider.rb +0 -56
  131. data/lib/llm/providers/openai_provider.rb +0 -42
  132. data/lib/llm/response_parser.rb +0 -67
  133. data/lib/plugin/plugin.rb +0 -111
  134. data/lib/plugin/plugin_exposer.rb +0 -55
  135. data/lib/scaffolding/crud_generator.rb +0 -94
  136. data/lib/scaffolding/dry_run_presenter.rb +0 -16
  137. data/lib/scaffolding/page_introspector.rb +0 -45
  138. data/lib/scaffolding/scaffold_menu.rb +0 -103
  139. data/lib/scaffolding/templates/page_from_url.tt +0 -75
  140. data/lib/scaffolding/templates/spec_from_page.tt +0 -31
  141. data/lib/scaffolding/templates/spec_from_url.tt +0 -46
  142. data/lib/scaffolding/url_analyzer.rb +0 -179
  143. data/sig/adopter/adopt_menu.rbs +0 -25
  144. data/sig/adopter/converters/base_converter.rbs +0 -23
  145. data/sig/adopter/converters/identity_converter.rbs +0 -16
  146. data/sig/adopter/migration_plan.rbs +0 -34
  147. data/sig/adopter/migrator.rbs +0 -21
  148. data/sig/adopter/plan_builder.rbs +0 -38
  149. data/sig/adopter/project_analyzer.rbs +0 -39
  150. data/sig/adopter/project_detector.rbs +0 -26
  151. data/sig/generators/infrastructure/gitlab_generator.rbs +0 -4
  152. data/sig/generators/minitest/minitest_generator.rbs +0 -8
  153. data/sig/llm/client.rbs +0 -15
  154. data/sig/llm/config.rbs +0 -20
  155. data/sig/llm/prompts.rbs +0 -8
  156. data/sig/llm/provider.rbs +0 -12
  157. data/sig/llm/providers/anthropic_provider.rbs +0 -16
  158. data/sig/llm/providers/ollama_provider.rbs +0 -18
  159. data/sig/llm/providers/openai_provider.rbs +0 -16
  160. data/sig/llm/response_parser.rbs +0 -13
  161. data/sig/plugin/plugin.rbs +0 -24
  162. data/sig/plugin/plugin_exposer.rbs +0 -20
  163. data/sig/scaffolding/crud_generator.rbs +0 -16
  164. data/sig/scaffolding/dry_run_presenter.rbs +0 -4
  165. data/sig/scaffolding/page_introspector.rbs +0 -14
  166. data/sig/scaffolding/scaffold_menu.rbs +0 -18
  167. data/sig/scaffolding/url_analyzer.rbs +0 -28
  168. data/spec/adopter/adopt_menu_spec.rb +0 -176
  169. data/spec/adopter/converters/identity_converter_spec.rb +0 -145
  170. data/spec/adopter/migration_plan_spec.rb +0 -113
  171. data/spec/adopter/migrator_spec.rb +0 -277
  172. data/spec/adopter/plan_builder_spec.rb +0 -298
  173. data/spec/adopter/project_analyzer_spec.rb +0 -337
  174. data/spec/adopter/project_detector_spec.rb +0 -295
  175. data/spec/generators/generator_spec.rb +0 -23
  176. data/spec/integration/content/reporter_content_spec.rb +0 -236
  177. data/spec/integration/content/skip_flags_content_spec.rb +0 -206
  178. data/spec/integration/generators/debug_helper_spec.rb +0 -68
  179. data/spec/integration/generators/gitlab_generator_spec.rb +0 -38
  180. data/spec/integration/generators/lighthouse_addon_spec.rb +0 -132
  181. data/spec/integration/generators/minitest_generator_spec.rb +0 -64
  182. data/spec/integration/generators/reporter_spec.rb +0 -159
  183. data/spec/integration/generators/skip_flags_spec.rb +0 -134
  184. data/spec/integration/generators/visual_addon_spec.rb +0 -148
  185. data/spec/llm/client_spec.rb +0 -79
  186. data/spec/llm/config_spec.rb +0 -92
  187. data/spec/llm/prompts_spec.rb +0 -49
  188. data/spec/llm/response_parser_spec.rb +0 -92
  189. data/spec/menus/adopter_adopt_menu_spec.rb +0 -97
  190. data/spec/scaffolding/page_introspector_spec.rb +0 -82
  191. data/spec/scaffolding/url_analyzer_spec.rb +0 -110
  192. data/spec/system/adopt_matrix_spec.rb +0 -537
  193. data/spec/system/adopt_spec.rb +0 -225
  194. data/spec/system/capybara_spec.rb +0 -42
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Given('I am on the home page') do
4
- <% if capybara? -%>
5
- visit '/'
6
- <% elsif watir? -%>
4
+ <% if watir? -%>
7
5
  browser.goto 'https://raider-test-site.onrender.com/'
8
6
  <% else -%>
9
7
  driver.get 'https://raider-test-site.onrender.com/'
@@ -11,9 +9,7 @@ driver.get 'https://raider-test-site.onrender.com/'
11
9
  end
12
10
 
13
11
  Then('the page should be accessible') do
14
- <% if capybara? -%>
15
- expect(page).to be_axe_clean
16
- <% elsif watir? -%>
12
+ <% if watir? -%>
17
13
  expect(browser.driver).to be_axe_clean
18
14
  <% else -%>
19
15
  expect(driver).to be_axe_clean
@@ -1,8 +1 @@
1
- <%- if allure_reporter? -%>
2
1
  default: --format AllureCucumber::CucumberFormatter --out allure-results --publish-quiet --retry 0
3
- <%- else -%>
4
- default: --publish-quiet --retry 0
5
- <%- end -%>
6
- <%- if json_reporter? -%>
7
- json: --format json --out results/results.json --publish-quiet
8
- <%- end -%>
@@ -1,6 +1,4 @@
1
- <%- if capybara? -%>
2
- <%= partial('capybara_env') -%>
3
- <%- elsif selenium_based? -%>
1
+ <%- if selenium_based? -%>
4
2
  <%= partial('selenium_env') -%>
5
3
  <%- elsif mobile? -%>
6
4
  <%= partial('appium_env') -%>
@@ -1,20 +1,15 @@
1
1
  require 'tmpdir'
2
2
  require_relative '../../helpers/allure_helper'
3
- require_relative '../../helpers/video_helper'
4
3
 
5
4
  Before do
6
5
  AllureHelper.configure
7
6
  driver.start_driver
8
- @video_recorder = VideoHelper.recorder_for(driver)
9
- @video_recorder&.start(self.class.to_s)
10
7
  end
11
8
 
12
9
  After do |scenario|
13
- video_file = @video_recorder&.stop
14
- AllureHelper.add_video(scenario.name, video_file)
15
10
  Dir.mktmpdir do |temp_folder|
16
11
  screenshot = driver.screenshot("#{temp_folder}/#{scenario.name}.png")
17
12
  AllureHelper.add_screenshot(scenario.name, screenshot)
18
13
  end
19
14
  driver.quit_driver
20
- end
15
+ end
@@ -7,8 +7,6 @@ require 'rspec'
7
7
  require 'tmpdir'
8
8
  require 'yaml'
9
9
  require_relative '../../helpers/allure_helper'
10
- require_relative '../../helpers/video_helper'
11
- require_relative '../../helpers/debug_helper'
12
10
 
13
11
  Before do
14
12
  viewport = YAML.load_file('config/config.yml')['viewport']
@@ -17,20 +15,9 @@ Before do
17
15
  else
18
16
  driver.manage.window.maximize
19
17
  end
20
- @video_recorder = VideoHelper.recorder_for(driver)
21
- @video_recorder&.start(self.class.to_s)
22
- DebugHelper.enable_network_logging(driver)
23
- @debug_action_logger = DebugHelper.action_logger_for(self.class.to_s)
24
18
  end
25
19
 
26
20
  After do |scenario|
27
- if scenario.failed?
28
- DebugHelper.capture_failure_diagnostics(driver, scenario.name, exception: scenario.exception)
29
- DebugHelper.capture_network_logs(DebugHelper.resolve_selenium_driver(driver), DebugHelper.sanitize(scenario.name))
30
- end
31
- @debug_action_logger&.close
32
- video_file = @video_recorder&.stop
33
- AllureHelper.add_video(scenario.name, video_file)
34
21
  Dir.mktmpdir do |temp_folder|
35
22
  screenshot = driver.save_screenshot("#{temp_folder}/#{scenario.name}.png")
36
23
  AllureHelper.add_screenshot(scenario.name, screenshot)
@@ -3,8 +3,6 @@
3
3
  require 'tmpdir'
4
4
  require 'yaml'
5
5
  require_relative '../../helpers/allure_helper'
6
- require_relative '../../helpers/video_helper'
7
- require_relative '../../helpers/debug_helper'
8
6
 
9
7
  Before do
10
8
  viewport = YAML.load_file('config/config.yml')['viewport']
@@ -13,20 +11,9 @@ Before do
13
11
  else
14
12
  browser.window.maximize
15
13
  end
16
- @video_recorder = VideoHelper.recorder_for(browser)
17
- @video_recorder&.start(self.class.to_s)
18
- DebugHelper.enable_network_logging(browser)
19
- @debug_action_logger = DebugHelper.action_logger_for(self.class.to_s)
20
14
  end
21
15
 
22
16
  After do |scenario|
23
- if scenario.failed?
24
- DebugHelper.capture_failure_diagnostics(browser, scenario.name, exception: scenario.exception)
25
- DebugHelper.capture_network_logs(DebugHelper.resolve_selenium_driver(browser), DebugHelper.sanitize(scenario.name))
26
- end
27
- @debug_action_logger&.close
28
- video_file = @video_recorder&.stop
29
- AllureHelper.add_video(scenario.name, video_file)
30
17
  Dir.mktmpdir do |temp_folder|
31
18
  screenshot = browser.screenshot.save("#{temp_folder}/#{scenario.name}.png")
32
19
  AllureHelper.add_screenshot(scenario.name, screenshot)
@@ -9,8 +9,8 @@ require_relative '../../page_objects/pages/login'
9
9
 
10
10
  Given("I'm a {user} on the login page") do |user|
11
11
  @user = user
12
- @login_page = <% if capybara? %>Login.new<% elsif watir? %>Login.new(browser)<% else %>Login.new(driver)<% end %>
13
- @login_page.<% if capybara? %>visit_page<% else %>visit<% end %>
12
+ @login_page = <% if watir? %>Login.new(browser)<% else %>Login.new(driver)<% end %>
13
+ @login_page.visit
14
14
  end
15
15
 
16
16
  When('I login with my credentials') do
@@ -19,7 +19,7 @@ When('I login with my credentials') do
19
19
  end
20
20
 
21
21
  Then("I'm logged in") do
22
- account_page = <% if capybara? %>Account.new<% elsif watir? %>Account.new(browser)<% else %>Account.new(driver)<% end %>
23
- account_page.<% if capybara? %>visit_page<% else %>visit<% end %>
22
+ account_page = <% if watir? %>Account.new(browser)<% else %>Account.new(driver)<% end %>
23
+ account_page.visit
24
24
  expect(account_page.header.customer_name).to eq "Welcome back #{@user['name']}"
25
25
  end
@@ -1,6 +1,4 @@
1
- <%- if capybara? -%>
2
- <%=- partial('capybara_world', strip: true) -%>
3
- <%- elsif watir? -%>
1
+ <%- if watir? -%>
4
2
  <%=- partial('watir_world', strip: true) -%>
5
3
  <%- else -%>
6
4
  <%=- partial('driver_world', strip: true) -%>
@@ -7,8 +7,6 @@ class Generator < Thor::Group
7
7
  include Thor::Actions
8
8
  include TemplateRenderer
9
9
 
10
- LATEST_RUBY = '3.4'
11
-
12
10
  argument :automation
13
11
  argument :framework
14
12
  argument :name
@@ -16,7 +14,7 @@ class Generator < Thor::Group
16
14
  def self.source_paths
17
15
  base_path = File.dirname(__FILE__)
18
16
  %W[#{base_path}/automation/templates #{base_path}/cucumber/templates
19
- #{base_path}/rspec/templates #{base_path}/minitest/templates
17
+ #{base_path}/rspec/templates
20
18
  #{base_path}/templates #{base_path}/infrastructure/templates ]
21
19
  end
22
20
 
@@ -53,68 +51,26 @@ class Generator < Thor::Group
53
51
  args.include?('rspec')
54
52
  end
55
53
 
56
- def minitest?
57
- args.include?('minitest')
58
- end
59
-
60
54
  def selenium?
61
55
  args.include?('selenium')
62
56
  end
63
57
 
64
- def capybara?
65
- args.include?('capybara')
66
- end
67
-
68
- def visual_addon?
69
- args.include?('visual_addon')
70
- end
71
-
72
58
  def watir?
73
59
  args.include?('watir')
74
60
  end
75
61
 
76
62
  def web?
77
- (args & %w[selenium watir capybara]).count.positive?
63
+ (args & %w[selenium watir]).count.positive?
78
64
  end
79
65
 
80
66
  def axe_addon?
81
67
  args.include?('axe_addon')
82
68
  end
83
69
 
84
- def lighthouse_addon?
85
- args.include?('lighthouse_addon')
86
- end
87
-
88
70
  def selenium_based?
89
71
  args.include?('selenium')
90
72
  end
91
73
 
92
- def skip_allure?
93
- args.include?('skip_allure')
94
- end
95
-
96
- def skip_video?
97
- args.include?('skip_video')
98
- end
99
-
100
- def allure_reporter?
101
- has_reporter = args.any? { |a| a&.start_with?('reporter_') }
102
- has_reporter ? args.include?('reporter_allure') : !skip_allure?
103
- end
104
-
105
- def junit_reporter?
106
- args.include?('reporter_junit')
107
- end
108
-
109
- def json_reporter?
110
- args.include?('reporter_json')
111
- end
112
-
113
- def ruby_version
114
- arg = args.find { |a| a&.start_with?('ruby_version:') }
115
- arg ? arg.split(':', 2).last : LATEST_RUBY
116
- end
117
-
118
74
  private
119
75
 
120
76
  def _initializer
@@ -6,84 +6,39 @@ class HelpersGenerator < Generator
6
6
  def generate_helpers
7
7
  generate_browser_helper
8
8
  generate_driver_helper
9
- generate_capybara_helper
10
9
  generate_appium_helper
11
10
  generate_allure_helper
12
- generate_video_helper
13
- generate_debug_helper
14
- generate_visual_helper
15
- generate_performance_helper
16
-
17
- if minitest?
18
- generate_test_helper
19
- else
20
- generate_spec_helper
21
- end
11
+ generate_spec_helper
22
12
  end
23
13
 
24
14
  private
25
15
 
26
16
  def generate_allure_helper
27
- return unless allure_reporter?
28
-
29
17
  template('helpers/allure_helper.tt', "#{name}/helpers/allure_helper.rb")
30
18
  end
31
19
 
32
- def generate_video_helper
33
- return if skip_video?
34
-
35
- template('helpers/video_helper.tt', "#{name}/helpers/video_helper.rb")
36
- end
37
-
38
20
  def generate_browser_helper
39
- return if selenium_based? || mobile? || capybara?
21
+ return if selenium_based? || mobile?
40
22
 
41
23
  template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
42
24
  end
43
25
 
44
26
  def generate_spec_helper
45
- return if cucumber? || minitest?
27
+ return if cucumber?
46
28
 
47
29
  template('helpers/spec_helper.tt', "#{name}/helpers/spec_helper.rb")
48
30
  end
49
31
 
50
32
  def generate_driver_helper
51
- return if watir? || capybara?
33
+ return if watir?
52
34
 
53
35
  template('helpers/driver_helper.tt', "#{name}/helpers/driver_helper.rb")
54
36
  end
55
37
 
56
- def generate_capybara_helper
57
- return unless capybara?
58
-
59
- template('helpers/capybara_helper.tt', "#{name}/helpers/capybara_helper.rb")
60
- end
61
-
62
38
  def generate_appium_helper
63
39
  return unless cross_platform?
64
40
 
65
41
  template('helpers/appium_helper.tt', "#{name}/helpers/appium_helper.rb")
66
42
  end
67
43
 
68
- def generate_test_helper
69
- template('helpers/test_helper.tt', "#{name}/helpers/test_helper.rb")
70
- end
71
-
72
- def generate_debug_helper
73
- return unless web?
74
-
75
- template('helpers/debug_helper.tt', "#{name}/helpers/debug_helper.rb")
76
- end
77
-
78
- def generate_visual_helper
79
- return unless visual_addon? && web?
80
-
81
- template('helpers/visual_helper.tt', "#{name}/helpers/visual_helper.rb")
82
- end
83
-
84
- def generate_performance_helper
85
- return unless lighthouse_addon? && web?
86
-
87
- template('helpers/performance_helper.tt', "#{name}/helpers/performance_helper.rb")
88
- end
89
44
  end
@@ -22,7 +22,7 @@ jobs:
22
22
  - name: Set up Ruby
23
23
  uses: ruby/setup-ruby@v1
24
24
  with:
25
- ruby-version: <%= ruby_version %>.0
25
+ ruby-version: 3.4.0
26
26
  bundler-cache: true
27
27
 
28
28
  - name: Set up Chrome
@@ -34,7 +34,7 @@ jobs:
34
34
  run: mkdir -p allure-results
35
35
 
36
36
  - name: Run tests
37
- run: <%- if framework == 'cucumber' -%>bundle exec cucumber features --format pretty<%- elsif minitest? -%>bundle exec ruby -Itest test/test_login_page.rb<%- else -%>bundle exec rspec spec --format documentation<%- end %>
37
+ run: <%- if framework == 'cucumber' -%>bundle exec cucumber features --format pretty<%- else -%>bundle exec rspec spec --format documentation<%- end %>
38
38
  env:
39
39
  HEADLESS: true
40
40
 
@@ -14,7 +14,7 @@ jobs:
14
14
  - uses: actions/checkout@v4
15
15
  - uses: ruby/setup-ruby@v1
16
16
  with:
17
- ruby-version: <%= ruby_version %>.0
17
+ ruby-version: 3.4.0
18
18
  bundler-cache: true
19
19
 
20
20
  - name: Download iOS app
@@ -47,8 +47,6 @@ jobs:
47
47
  - name: Run tests
48
48
  <%- if cucumber? -%>
49
49
  run: bundle exec cucumber features/ --format pretty
50
- <%- elsif minitest? -%>
51
- run: bundle exec ruby -Itest test/test_pdp_page.rb
52
50
  <%- else -%>
53
51
  run: bundle exec rspec spec/ --format documentation
54
52
  <%- end -%>
@@ -63,7 +61,7 @@ jobs:
63
61
  - uses: actions/checkout@v4
64
62
  - uses: ruby/setup-ruby@v1
65
63
  with:
66
- ruby-version: <%= ruby_version %>.0
64
+ ruby-version: 3.4.0
67
65
  bundler-cache: true
68
66
 
69
67
  - name: Download Android app
@@ -98,8 +96,6 @@ jobs:
98
96
  script: |
99
97
  <%- if cucumber? -%>
100
98
  bundle exec cucumber features/ --format pretty
101
- <%- elsif minitest? -%>
102
- bundle exec ruby -Itest test/test_pdp_page.rb
103
99
  <%- else -%>
104
100
  bundle exec rspec spec/ --format documentation
105
101
  <%- end -%>
@@ -1,10 +1,8 @@
1
1
  require_relative 'infrastructure/github_generator'
2
- require_relative 'infrastructure/gitlab_generator'
3
2
  require_relative 'automation/automation_generator'
4
3
  require_relative 'common_generator'
5
4
  require_relative 'cucumber/cucumber_generator'
6
5
  require_relative 'helper_generator'
7
- require_relative 'minitest/minitest_generator'
8
6
  require_relative 'rspec/rspec_generator'
9
7
 
10
8
  module InvokeGenerators
@@ -14,14 +12,13 @@ module InvokeGenerators
14
12
  generators = %w[Automation Common Helpers]
15
13
  framework = structure[:framework]
16
14
  add_generator(generators, framework.capitalize)
17
- add_generator(generators, structure[:ci_platform].capitalize) if !structure[:skip_ci] && (structure[:ci_platform])
18
- extra_args = collect_skip_flags(structure)
15
+ add_generator(generators, 'Github')
16
+ extra_args = collect_flags(structure)
19
17
  generators.each do |generator|
20
18
  invoke_generator({
21
19
  automation: structure[:automation],
22
20
  framework:,
23
21
  generator:,
24
- ci_platform: structure[:ci_platform],
25
22
  name: structure[:name],
26
23
  extra_args:
27
24
  })
@@ -36,7 +33,7 @@ module InvokeGenerators
36
33
  GENERATOR_CLASSES = Hash.new { |h, k| h[k] = Object.const_get("#{k}Generator") }
37
34
 
38
35
  def invoke_generator(structure = {})
39
- args = [structure[:automation], structure[:framework], structure[:name], structure[:ci_platform]]
36
+ args = [structure[:automation], structure[:framework], structure[:name]]
40
37
  args.concat(structure[:extra_args] || [])
41
38
  generator_class = GENERATOR_CLASSES[structure[:generator]]
42
39
  generator = generator_class.new(args)
@@ -45,30 +42,12 @@ module InvokeGenerators
45
42
  generator.invoke_all
46
43
  end
47
44
 
48
- def collect_skip_flags(structure)
45
+ def collect_flags(structure)
49
46
  flags = []
50
- flags << 'skip_allure' if structure[:skip_allure]
51
- flags << 'skip_video' if structure[:skip_video]
52
47
  flags << 'axe_addon' if structure[:accessibility] && !mobile_automation?(structure[:automation])
53
- flags << 'visual_addon' if structure[:visual] && !mobile_automation?(structure[:automation])
54
- flags << 'lighthouse_addon' if structure[:performance] && !mobile_automation?(structure[:automation])
55
- flags << "ruby_version:#{structure[:ruby_version]}" if structure[:ruby_version]
56
- flags.concat(reporter_flags(structure[:reporter]))
57
48
  flags
58
49
  end
59
50
 
60
- def reporter_flags(reporter)
61
- case reporter
62
- when 'allure' then ['reporter_allure']
63
- when 'junit' then ['reporter_junit']
64
- when 'json' then ['reporter_json']
65
- when 'both' then %w[reporter_allure reporter_junit]
66
- when 'all' then %w[reporter_allure reporter_junit reporter_json]
67
- when 'none' then ['reporter_none']
68
- else []
69
- end
70
- end
71
-
72
51
  def mobile_automation?(automation)
73
52
  %w[ios android cross_platform].include?(automation)
74
53
  end
@@ -29,12 +29,7 @@ class MenuGenerator
29
29
  structure = {
30
30
  automation: options[:automation],
31
31
  framework: options[:framework],
32
- ci_platform: options[:ci_platform],
33
- reporter: options[:reporter],
34
32
  accessibility: options[:accessibility],
35
- visual: options[:visual],
36
- performance: options[:performance],
37
- ruby_version: options[:ruby_version],
38
33
  name: @name
39
34
  }
40
35
  generate_framework(structure)
@@ -74,88 +69,24 @@ class MenuGenerator
74
69
 
75
70
  def select_test_framework(automation)
76
71
  prompt.select('Please select your test framework') do |menu|
77
- menu.choice :Cucumber, -> { select_ci_platform('Cucumber', automation) }
78
- menu.choice :Rspec, -> { select_ci_platform('Rspec', automation) }
79
- menu.choice :Minitest, -> { select_ci_platform('Minitest', automation) }
72
+ menu.choice :Cucumber, -> { select_accessibility('Cucumber', automation) }
73
+ menu.choice :Rspec, -> { select_accessibility('Rspec', automation) }
80
74
  menu.choice :Quit, -> { exit }
81
75
  end
82
76
  end
83
77
 
84
- FrameworkOptions = Struct.new(:automation, :framework, :ci_platform, :reporter, :accessibility, :visual, :performance,
85
- :ruby_version)
78
+ FrameworkOptions = Struct.new(:automation, :framework, :accessibility)
86
79
 
87
80
  def create_framework_options(params)
88
- FrameworkOptions.new(params[:automation], params[:framework], params[:ci_platform], params[:reporter],
89
- params[:accessibility], params[:visual], params[:performance], params[:ruby_version])
81
+ FrameworkOptions.new(params[:automation], params[:framework], params[:accessibility])
90
82
  end
91
83
 
92
- def select_reporter(framework, automation_type, ci_platform = nil)
93
- prompt.select('Select your test reporter') do |menu|
94
- menu.choice :Allure, -> { select_accessibility(framework, automation_type, ci_platform, 'allure') }
95
- menu.choice :JUnit, -> { select_accessibility(framework, automation_type, ci_platform, 'junit') }
96
- menu.choice :JSON, -> { select_accessibility(framework, automation_type, ci_platform, 'json') }
97
- menu.choice :Both, -> { select_accessibility(framework, automation_type, ci_platform, 'both') }
98
- menu.choice :All, -> { select_accessibility(framework, automation_type, ci_platform, 'all') }
99
- menu.choice :None, -> { select_accessibility(framework, automation_type, ci_platform, 'none') }
100
- menu.choice :Quit, -> { exit }
101
- end
102
- end
103
-
104
- def select_accessibility(framework, automation_type, ci_platform = nil, reporter = nil)
105
- return create_framework(framework, automation_type, ci_platform:, reporter:) if mobile_automation?(automation_type)
84
+ def select_accessibility(framework, automation_type)
85
+ return create_framework(framework, automation_type) if mobile_automation?(automation_type)
106
86
 
107
87
  prompt.select('Add accessibility testing (axe)?') do |menu|
108
- menu.choice :Yes, -> { select_visual(framework, automation_type, ci_platform, reporter, accessibility: true) }
109
- menu.choice :No, -> { select_visual(framework, automation_type, ci_platform, reporter) }
110
- menu.choice :Quit, -> { exit }
111
- end
112
- end
113
-
114
- def select_visual(framework, automation_type, ci_platform = nil, reporter = nil, accessibility: false)
115
- prompt.select('Add visual regression testing?') do |menu|
116
- menu.choice :Yes, lambda {
117
- select_performance(framework, automation_type, ci_platform, reporter, accessibility:, visual: true)
118
- }
119
- menu.choice :No, lambda {
120
- select_performance(framework, automation_type, ci_platform, reporter, accessibility:)
121
- }
122
- menu.choice :Quit, -> { exit }
123
- end
124
- end
125
-
126
- def select_performance(framework, automation_type, ci_platform = nil, reporter = nil, accessibility: false,
127
- visual: false)
128
- prompt.select('Add Lighthouse performance auditing?') do |menu|
129
- menu.choice :Yes, lambda {
130
- select_ruby_version(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:,
131
- performance: true)
132
- }
133
- menu.choice :No, lambda {
134
- select_ruby_version(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:)
135
- }
136
- menu.choice :Quit, -> { exit }
137
- end
138
- end
139
-
140
- def select_ruby_version(framework, automation_type, ci_platform: nil, reporter: nil, accessibility: false,
141
- visual: false, performance: false)
142
- prompt.select('Select Ruby version for your project') do |menu|
143
- menu.choice :'3.4 (latest)', lambda {
144
- create_framework(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:, performance:,
145
- ruby_version: '3.4')
146
- }
147
- menu.choice :'3.3', lambda {
148
- create_framework(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:, performance:,
149
- ruby_version: '3.3')
150
- }
151
- menu.choice :'3.2', lambda {
152
- create_framework(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:, performance:,
153
- ruby_version: '3.2')
154
- }
155
- menu.choice :'3.1', lambda {
156
- create_framework(framework, automation_type, ci_platform:, reporter:, accessibility:, visual:, performance:,
157
- ruby_version: '3.1')
158
- }
88
+ menu.choice :Yes, -> { create_framework(framework, automation_type, accessibility: true) }
89
+ menu.choice :No, -> { create_framework(framework, automation_type) }
159
90
  menu.choice :Quit, -> { exit }
160
91
  end
161
92
  end
@@ -164,26 +95,15 @@ class MenuGenerator
164
95
  %w[ios android cross_platform].include?(automation_type)
165
96
  end
166
97
 
167
- def create_framework(framework, automation_type, ci_platform: nil, reporter: nil, accessibility: false,
168
- visual: false, performance: false, ruby_version: nil)
98
+ def create_framework(framework, automation_type, accessibility: false)
169
99
  options = create_framework_options(automation: automation_type,
170
100
  framework: framework.downcase,
171
- ci_platform:,
172
- reporter:,
173
- accessibility:,
174
- visual:,
175
- performance:,
176
- ruby_version:)
101
+ accessibility:)
177
102
 
178
103
  puts 'Chosen Options:'
179
104
  puts " Automation Type: #{options[:automation]}"
180
105
  puts " Framework: #{options[:framework]}"
181
- puts " CI Platform: #{options[:ci_platform]}" if options[:ci_platform]
182
- puts " Reporter: #{options[:reporter]}" if options[:reporter]
183
106
  puts ' Accessibility: enabled' if options[:accessibility]
184
- puts ' Visual Testing: enabled' if options[:visual]
185
- puts ' Performance Auditing: enabled' if options[:performance]
186
- puts " Ruby Version: #{options[:ruby_version]}" if options[:ruby_version]
187
107
 
188
108
  set_up_framework(options)
189
109
  prompt.say("You have chosen to use #{framework} with #{automation_type}")
@@ -204,17 +124,7 @@ class MenuGenerator
204
124
 
205
125
  def automation_options(menu)
206
126
  menu.choice :Selenium, -> { choose_test_framework('selenium') }
207
- menu.choice :Capybara, -> { choose_test_framework('capybara') }
208
127
  menu.choice :Appium, -> { choose_test_framework('appium') }
209
128
  menu.choice :Watir, -> { choose_test_framework('watir') }
210
129
  end
211
-
212
- def select_ci_platform(framework, automation)
213
- prompt.select('Would you like to configure CI?') do |menu|
214
- menu.choice :'Github Actions', -> { select_reporter(framework, automation, 'github') }
215
- menu.choice :'Gitlab CI/CD', -> { select_reporter(framework, automation, 'gitlab') }
216
- menu.choice :No, -> { select_reporter(framework, automation) }
217
- menu.choice :Quit, -> { exit }
218
- end
219
- end
220
130
  end
@@ -15,21 +15,10 @@ class RspecGenerator < Generator
15
15
  template('spec.tt', "#{name}/spec/pdp_page_spec.rb")
16
16
  end
17
17
 
18
- def generate_visual_spec
19
- return unless visual_addon? && web?
20
-
21
- template('visual_spec.tt', "#{name}/spec/visual_spec.rb")
22
- end
23
-
24
18
  def generate_accessibility_spec
25
19
  return unless axe_addon? && web?
26
20
 
27
21
  template('accessibility_spec.tt', "#{name}/spec/accessibility_spec.rb")
28
22
  end
29
23
 
30
- def generate_performance_spec
31
- return unless lighthouse_addon? && web?
32
-
33
- template('performance_spec.tt', "#{name}/spec/performance_spec.rb")
34
- end
35
24
  end
@@ -4,9 +4,7 @@ require_relative '../helpers/spec_helper'
4
4
 
5
5
  describe 'Accessibility' do
6
6
  before do
7
- <% if capybara? -%>
8
- visit '/'
9
- <% elsif watir? -%>
7
+ <% if watir? -%>
10
8
  browser.goto 'https://raider-test-site.onrender.com/'
11
9
  <% else -%>
12
10
  driver.get 'https://raider-test-site.onrender.com/'
@@ -14,9 +12,7 @@ driver.get 'https://raider-test-site.onrender.com/'
14
12
  end
15
13
 
16
14
  it 'has no accessibility violations on the page' do
17
- <% if capybara? -%>
18
- expect(page).to be_axe_clean
19
- <% elsif watir? -%>
15
+ <% if watir? -%>
20
16
  expect(browser.driver).to be_axe_clean
21
17
  <% else -%>
22
18
  expect(driver).to be_axe_clean