ruby_raider 3.0.1 → 3.1.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 (189) 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 -62
  5. data/lib/commands/scaffolding_commands.rb +1 -192
  6. data/lib/commands/utility_commands.rb +0 -43
  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 -5
  18. data/lib/generators/cucumber/templates/partials/watir_env.tt +0 -5
  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 -42
  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 +0 -4
  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/partials/debug_diagnostics.tt +1 -3
  38. data/lib/generators/templates/helpers/partials/debug_start.tt +1 -3
  39. data/lib/generators/templates/helpers/partials/quit_driver.tt +1 -3
  40. data/lib/generators/templates/helpers/partials/screenshot.tt +1 -3
  41. data/lib/generators/templates/helpers/spec_helper.tt +2 -39
  42. data/lib/ruby_raider.rb +2 -50
  43. data/lib/scaffolding/project_detector.rb +2 -9
  44. data/lib/scaffolding/scaffolding.rb +0 -109
  45. data/lib/scaffolding/templates/component.tt +1 -4
  46. data/lib/scaffolding/templates/page_object.tt +0 -10
  47. data/lib/scaffolding/templates/spec.tt +2 -6
  48. data/lib/scaffolding/templates/steps.tt +0 -2
  49. data/lib/utilities/utilities.rb +23 -29
  50. data/lib/version +1 -1
  51. data/sig/commands/scaffolding_commands.rbs +0 -12
  52. data/sig/commands/utility_commands.rbs +0 -6
  53. data/sig/generators/cucumber/cucumber_generator.rbs +0 -4
  54. data/sig/generators/generator.rbs +0 -11
  55. data/sig/generators/helper_generator.rbs +1 -5
  56. data/sig/generators/invoke_generators.rbs +1 -2
  57. data/sig/generators/menu_generator.rbs +2 -6
  58. data/sig/generators/rspec/rspec_generator.rbs +0 -2
  59. data/sig/ruby_raider.rbs +1 -3
  60. data/sig/scaffolding/project_detector.rbs +0 -1
  61. data/sig/scaffolding/scaffolding.rbs +0 -23
  62. data/sig/utilities/utilities.rbs +0 -4
  63. data/spec/commands/raider_commands_spec.rb +0 -61
  64. data/spec/integration/commands/browser_update_after_creation_spec.rb +123 -0
  65. data/spec/integration/commands/scaffolding_commands_spec.rb +0 -20
  66. data/spec/integration/commands/utility_commands_spec.rb +5 -5
  67. data/spec/integration/content/ci_content_spec.rb +6 -61
  68. data/spec/integration/content/common_content_spec.rb +0 -64
  69. data/spec/integration/content/config_content_spec.rb +1 -51
  70. data/spec/integration/content/content_helper.rb +2 -2
  71. data/spec/integration/content/gemfile_content_spec.rb +0 -71
  72. data/spec/integration/content/helper_content_spec.rb +4 -240
  73. data/spec/integration/content/page_content_spec.rb +0 -89
  74. data/spec/integration/content/syntax_validation_spec.rb +2 -2
  75. data/spec/integration/content/test_content_spec.rb +0 -119
  76. data/spec/integration/end_to_end_features_spec.rb +13 -411
  77. data/spec/integration/end_to_end_spec.rb +0 -96
  78. data/spec/integration/generators/axe_addon_spec.rb +2 -52
  79. data/spec/integration/generators/common_generator_spec.rb +1 -13
  80. data/spec/integration/generators/config_features_spec.rb +3 -81
  81. data/spec/integration/generators/debug_helper_spec.rb +0 -20
  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 -97
  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/helpers/capybara_helper.tt +0 -32
  119. data/lib/generators/templates/helpers/performance_helper.tt +0 -57
  120. data/lib/generators/templates/helpers/visual_helper.tt +0 -58
  121. data/lib/llm/client.rb +0 -79
  122. data/lib/llm/config.rb +0 -57
  123. data/lib/llm/prompts.rb +0 -84
  124. data/lib/llm/provider.rb +0 -27
  125. data/lib/llm/providers/anthropic_provider.rb +0 -43
  126. data/lib/llm/providers/ollama_provider.rb +0 -56
  127. data/lib/llm/providers/openai_provider.rb +0 -42
  128. data/lib/llm/response_parser.rb +0 -67
  129. data/lib/plugin/plugin.rb +0 -111
  130. data/lib/plugin/plugin_exposer.rb +0 -55
  131. data/lib/scaffolding/crud_generator.rb +0 -94
  132. data/lib/scaffolding/dry_run_presenter.rb +0 -16
  133. data/lib/scaffolding/page_introspector.rb +0 -45
  134. data/lib/scaffolding/scaffold_menu.rb +0 -103
  135. data/lib/scaffolding/templates/page_from_url.tt +0 -75
  136. data/lib/scaffolding/templates/spec_from_page.tt +0 -31
  137. data/lib/scaffolding/templates/spec_from_url.tt +0 -46
  138. data/lib/scaffolding/url_analyzer.rb +0 -179
  139. data/sig/adopter/adopt_menu.rbs +0 -25
  140. data/sig/adopter/converters/base_converter.rbs +0 -23
  141. data/sig/adopter/converters/identity_converter.rbs +0 -16
  142. data/sig/adopter/migration_plan.rbs +0 -34
  143. data/sig/adopter/migrator.rbs +0 -21
  144. data/sig/adopter/plan_builder.rbs +0 -38
  145. data/sig/adopter/project_analyzer.rbs +0 -39
  146. data/sig/adopter/project_detector.rbs +0 -26
  147. data/sig/generators/infrastructure/gitlab_generator.rbs +0 -4
  148. data/sig/generators/minitest/minitest_generator.rbs +0 -8
  149. data/sig/llm/client.rbs +0 -15
  150. data/sig/llm/config.rbs +0 -20
  151. data/sig/llm/prompts.rbs +0 -8
  152. data/sig/llm/provider.rbs +0 -12
  153. data/sig/llm/providers/anthropic_provider.rbs +0 -16
  154. data/sig/llm/providers/ollama_provider.rbs +0 -18
  155. data/sig/llm/providers/openai_provider.rbs +0 -16
  156. data/sig/llm/response_parser.rbs +0 -13
  157. data/sig/plugin/plugin.rbs +0 -24
  158. data/sig/plugin/plugin_exposer.rbs +0 -20
  159. data/sig/scaffolding/crud_generator.rbs +0 -16
  160. data/sig/scaffolding/dry_run_presenter.rbs +0 -4
  161. data/sig/scaffolding/page_introspector.rbs +0 -14
  162. data/sig/scaffolding/scaffold_menu.rbs +0 -18
  163. data/sig/scaffolding/url_analyzer.rbs +0 -28
  164. data/spec/adopter/adopt_menu_spec.rb +0 -176
  165. data/spec/adopter/converters/identity_converter_spec.rb +0 -145
  166. data/spec/adopter/migration_plan_spec.rb +0 -113
  167. data/spec/adopter/migrator_spec.rb +0 -277
  168. data/spec/adopter/plan_builder_spec.rb +0 -298
  169. data/spec/adopter/project_analyzer_spec.rb +0 -337
  170. data/spec/adopter/project_detector_spec.rb +0 -295
  171. data/spec/generators/generator_spec.rb +0 -23
  172. data/spec/integration/content/reporter_content_spec.rb +0 -236
  173. data/spec/integration/content/skip_flags_content_spec.rb +0 -206
  174. data/spec/integration/generators/gitlab_generator_spec.rb +0 -38
  175. data/spec/integration/generators/lighthouse_addon_spec.rb +0 -132
  176. data/spec/integration/generators/minitest_generator_spec.rb +0 -64
  177. data/spec/integration/generators/reporter_spec.rb +0 -159
  178. data/spec/integration/generators/skip_flags_spec.rb +0 -134
  179. data/spec/integration/generators/visual_addon_spec.rb +0 -148
  180. data/spec/llm/client_spec.rb +0 -79
  181. data/spec/llm/config_spec.rb +0 -92
  182. data/spec/llm/prompts_spec.rb +0 -49
  183. data/spec/llm/response_parser_spec.rb +0 -92
  184. data/spec/menus/adopter_adopt_menu_spec.rb +0 -97
  185. data/spec/scaffolding/page_introspector_spec.rb +0 -82
  186. data/spec/scaffolding/url_analyzer_spec.rb +0 -110
  187. data/spec/system/adopt_matrix_spec.rb +0 -537
  188. data/spec/system/adopt_spec.rb +0 -225
  189. data/spec/system/capybara_spec.rb +0 -42
@@ -79,32 +79,6 @@ describe 'Page object content' do
79
79
  end
80
80
  end
81
81
 
82
- shared_examples 'capybara login page' do |project_name|
83
- subject(:login) { read_generated(project_name, 'page_objects/pages/login.rb') }
84
-
85
- it 'uses fill_in for input' do
86
- expect(login).to include('fill_in')
87
- end
88
-
89
- it 'uses click_button' do
90
- expect(login).to include('click_button')
91
- end
92
-
93
- it 'has no private element methods' do
94
- expect(login).not_to include('private')
95
- expect(login).not_to match(/def username_field/)
96
- end
97
-
98
- it 'does not include Selenium methods' do
99
- expect(login).not_to include('find_element')
100
- expect(login).not_to include('send_keys')
101
- end
102
-
103
- it 'does not include Watir methods' do
104
- expect(login).not_to include('browser.text_field')
105
- end
106
- end
107
-
108
82
  # --- Abstract page ---
109
83
 
110
84
  shared_examples 'valid abstract page' do |project_name|
@@ -159,30 +133,6 @@ describe 'Page object content' do
159
133
  end
160
134
  end
161
135
 
162
- shared_examples 'capybara abstract page' do |project_name|
163
- subject(:page) { read_generated(project_name, 'page_objects/abstract/page.rb') }
164
-
165
- it 'includes Capybara::DSL' do
166
- expect(page).to include('include Capybara::DSL')
167
- end
168
-
169
- it 'uses visit_page method' do
170
- expect(page).to match(/def visit_page/)
171
- end
172
-
173
- it 'uses Capybara.visit' do
174
- expect(page).to include('Capybara.visit')
175
- end
176
-
177
- it 'does not have attr_reader :driver' do
178
- expect(page).not_to include('attr_reader :driver')
179
- end
180
-
181
- it 'does not have initialize with driver' do
182
- expect(page).not_to match(/def initialize\(driver\)/)
183
- end
184
- end
185
-
186
136
  # --- Contexts ---
187
137
 
188
138
  context 'with rspec and selenium' do
@@ -201,14 +151,6 @@ describe 'Page object content' do
201
151
  include_examples 'watir abstract page', name
202
152
  end
203
153
 
204
- context 'with rspec and capybara' do
205
- name = "#{FrameworkIndex::RSPEC}_#{AutomationIndex::CAPYBARA}"
206
- include_examples 'valid login page', name
207
- include_examples 'capybara login page', name
208
- include_examples 'valid abstract page', name
209
- include_examples 'capybara abstract page', name
210
- end
211
-
212
154
  context 'with cucumber and selenium' do
213
155
  name = "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::SELENIUM}"
214
156
  include_examples 'valid login page', name
@@ -225,35 +167,4 @@ describe 'Page object content' do
225
167
  include_examples 'watir abstract page', name
226
168
  end
227
169
 
228
- context 'with cucumber and capybara' do
229
- name = "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::CAPYBARA}"
230
- include_examples 'valid login page', name
231
- include_examples 'capybara login page', name
232
- include_examples 'valid abstract page', name
233
- include_examples 'capybara abstract page', name
234
- end
235
-
236
- context 'with minitest and selenium' do
237
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::SELENIUM}"
238
- include_examples 'valid login page', name
239
- include_examples 'selenium login page', name
240
- include_examples 'valid abstract page', name
241
- include_examples 'selenium abstract page', name
242
- end
243
-
244
- context 'with minitest and watir' do
245
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::WATIR}"
246
- include_examples 'valid login page', name
247
- include_examples 'watir login page', name
248
- include_examples 'valid abstract page', name
249
- include_examples 'watir abstract page', name
250
- end
251
-
252
- context 'with minitest and capybara' do
253
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CAPYBARA}"
254
- include_examples 'valid login page', name
255
- include_examples 'capybara login page', name
256
- include_examples 'valid abstract page', name
257
- include_examples 'capybara abstract page', name
258
- end
259
170
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  require_relative 'content_helper'
4
4
 
5
- SYNTAX_WEB_AUTOMATIONS = %w[selenium watir capybara].freeze
6
- SYNTAX_ALL_FRAMEWORKS = %w[cucumber rspec minitest].freeze
5
+ SYNTAX_WEB_AUTOMATIONS = %w[selenium watir].freeze
6
+ SYNTAX_ALL_FRAMEWORKS = %w[cucumber rspec].freeze
7
7
 
8
8
  describe 'Ruby syntax validation' do
9
9
  SYNTAX_ALL_FRAMEWORKS.each do |framework|
@@ -68,92 +68,6 @@ describe 'Test file content' do
68
68
  end
69
69
  end
70
70
 
71
- shared_examples 'capybara rspec spec' do |project_name|
72
- subject(:spec) { read_generated(project_name, 'spec/login_page_spec.rb') }
73
-
74
- it 'instantiates Login without arguments' do
75
- expect(spec).to include('Login.new')
76
- expect(spec).not_to match(/Login\.new\((?:driver|browser)\)/)
77
- end
78
-
79
- it 'uses visit_page method' do
80
- expect(spec).to include('.visit_page')
81
- end
82
- end
83
-
84
- # --- Minitest tests ---
85
-
86
- shared_examples 'valid minitest test' do |project_name|
87
- subject(:test) { read_generated(project_name, 'test/test_login_page.rb') }
88
-
89
- it 'has frozen_string_literal' do
90
- expect(test).to have_frozen_string_literal
91
- end
92
-
93
- it 'has valid Ruby syntax' do
94
- expect(test).to have_valid_ruby_syntax
95
- end
96
-
97
- it 'defines class inheriting from Minitest::Test' do
98
- expect(test).to match(/class TestLogin < Minitest::Test/)
99
- end
100
-
101
- it 'requires test_helper' do
102
- expect(test).to include("require_relative '../helpers/test_helper'")
103
- end
104
-
105
- it 'has setup method' do
106
- expect(test).to match(/def setup/)
107
- end
108
-
109
- it 'has teardown method' do
110
- expect(test).to match(/def teardown/)
111
- end
112
-
113
- it 'has test methods' do
114
- expect(test).to match(/def test_login_with_right_credentials/)
115
- expect(test).to match(/def test_login_with_wrong_credentials/)
116
- end
117
-
118
- it 'uses assert_equal' do
119
- expect(test).to include('assert_equal')
120
- end
121
- end
122
-
123
- shared_examples 'selenium minitest test' do |project_name|
124
- subject(:test) { read_generated(project_name, 'test/test_login_page.rb') }
125
-
126
- it 'instantiates Login with driver' do
127
- expect(test).to include('Login.new(driver)')
128
- end
129
-
130
- it 'uses visit method' do
131
- expect(test).to include('.visit')
132
- expect(test).not_to include('.visit_page')
133
- end
134
- end
135
-
136
- shared_examples 'watir minitest test' do |project_name|
137
- subject(:test) { read_generated(project_name, 'test/test_login_page.rb') }
138
-
139
- it 'instantiates Login with browser' do
140
- expect(test).to include('Login.new(browser)')
141
- end
142
- end
143
-
144
- shared_examples 'capybara minitest test' do |project_name|
145
- subject(:test) { read_generated(project_name, 'test/test_login_page.rb') }
146
-
147
- it 'instantiates Login without arguments' do
148
- expect(test).to include('Login.new')
149
- expect(test).not_to match(/Login\.new\((?:driver|browser)\)/)
150
- end
151
-
152
- it 'uses visit_page method' do
153
- expect(test).to include('.visit_page')
154
- end
155
- end
156
-
157
71
  # --- Cucumber features and steps ---
158
72
 
159
73
  shared_examples 'valid cucumber feature' do |project_name|
@@ -212,32 +126,6 @@ describe 'Test file content' do
212
126
  include_examples 'watir rspec spec', name
213
127
  end
214
128
 
215
- context 'with rspec and capybara' do
216
- name = "#{FrameworkIndex::RSPEC}_#{AutomationIndex::CAPYBARA}"
217
- include_examples 'valid rspec spec', name
218
- include_examples 'capybara rspec spec', name
219
- end
220
-
221
- # --- Minitest contexts ---
222
-
223
- context 'with minitest and selenium' do
224
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::SELENIUM}"
225
- include_examples 'valid minitest test', name
226
- include_examples 'selenium minitest test', name
227
- end
228
-
229
- context 'with minitest and watir' do
230
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::WATIR}"
231
- include_examples 'valid minitest test', name
232
- include_examples 'watir minitest test', name
233
- end
234
-
235
- context 'with minitest and capybara' do
236
- name = "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CAPYBARA}"
237
- include_examples 'valid minitest test', name
238
- include_examples 'capybara minitest test', name
239
- end
240
-
241
129
  # --- Cucumber contexts ---
242
130
 
243
131
  context 'with cucumber and selenium' do
@@ -256,11 +144,4 @@ describe 'Test file content' do
256
144
  include_examples 'valid cucumber config', name
257
145
  end
258
146
 
259
- context 'with cucumber and capybara' do
260
- name = "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::CAPYBARA}"
261
- include_examples 'valid cucumber feature', name
262
- include_examples 'valid cucumber env', name
263
- include_examples 'valid cucumber world', name
264
- include_examples 'valid cucumber config', name
265
- end
266
147
  end