ruby_raider 3.0.0 → 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 (193) 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 +22 -188
  6. data/lib/commands/utility_commands.rb +10 -44
  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/browser_helper.tt +1 -1
  38. data/lib/generators/templates/helpers/partials/debug_diagnostics.tt +1 -3
  39. data/lib/generators/templates/helpers/partials/debug_start.tt +1 -3
  40. data/lib/generators/templates/helpers/partials/quit_driver.tt +1 -3
  41. data/lib/generators/templates/helpers/partials/screenshot.tt +1 -3
  42. data/lib/generators/templates/helpers/partials/selenium_driver.tt +1 -1
  43. data/lib/generators/templates/helpers/spec_helper.tt +2 -39
  44. data/lib/ruby_raider.rb +2 -50
  45. data/lib/scaffolding/project_detector.rb +30 -13
  46. data/lib/scaffolding/scaffolding.rb +0 -109
  47. data/lib/scaffolding/templates/component.tt +1 -4
  48. data/lib/scaffolding/templates/page_object.tt +0 -10
  49. data/lib/scaffolding/templates/spec.tt +2 -6
  50. data/lib/scaffolding/templates/steps.tt +0 -2
  51. data/lib/utilities/utilities.rb +26 -24
  52. data/lib/version +1 -1
  53. data/sig/commands/scaffolding_commands.rbs +0 -12
  54. data/sig/commands/utility_commands.rbs +0 -6
  55. data/sig/generators/cucumber/cucumber_generator.rbs +0 -4
  56. data/sig/generators/generator.rbs +0 -11
  57. data/sig/generators/helper_generator.rbs +1 -5
  58. data/sig/generators/invoke_generators.rbs +1 -2
  59. data/sig/generators/menu_generator.rbs +2 -6
  60. data/sig/generators/rspec/rspec_generator.rbs +0 -2
  61. data/sig/ruby_raider.rbs +1 -3
  62. data/sig/scaffolding/project_detector.rbs +0 -1
  63. data/sig/scaffolding/scaffolding.rbs +0 -23
  64. data/sig/utilities/utilities.rbs +0 -4
  65. data/spec/commands/raider_commands_spec.rb +0 -61
  66. data/spec/commands/scaffolding_commands_spec.rb +22 -0
  67. data/spec/integration/commands/browser_update_after_creation_spec.rb +123 -0
  68. data/spec/integration/commands/scaffolding_commands_spec.rb +0 -20
  69. data/spec/integration/commands/utility_commands_spec.rb +9 -9
  70. data/spec/integration/content/ci_content_spec.rb +6 -61
  71. data/spec/integration/content/common_content_spec.rb +0 -64
  72. data/spec/integration/content/config_content_spec.rb +1 -51
  73. data/spec/integration/content/content_helper.rb +2 -2
  74. data/spec/integration/content/gemfile_content_spec.rb +0 -71
  75. data/spec/integration/content/helper_content_spec.rb +4 -240
  76. data/spec/integration/content/page_content_spec.rb +0 -89
  77. data/spec/integration/content/syntax_validation_spec.rb +2 -2
  78. data/spec/integration/content/test_content_spec.rb +0 -119
  79. data/spec/integration/end_to_end_features_spec.rb +13 -411
  80. data/spec/integration/end_to_end_spec.rb +0 -96
  81. data/spec/integration/generators/axe_addon_spec.rb +2 -52
  82. data/spec/integration/generators/common_generator_spec.rb +1 -13
  83. data/spec/integration/generators/config_features_spec.rb +3 -81
  84. data/spec/integration/generators/debug_helper_spec.rb +0 -20
  85. data/spec/integration/generators/github_generator_spec.rb +5 -15
  86. data/spec/integration/generators/helpers_generator_spec.rb +0 -37
  87. data/spec/integration/scaffolding_e2e_spec.rb +540 -0
  88. data/spec/integration/settings_helper.rb +1 -3
  89. data/spec/integration/spec_helper.rb +6 -11
  90. data/spec/menus/menu_generator_spec.rb +4 -107
  91. data/spec/scaffolding/scaffold_project_detector_spec.rb +42 -26
  92. data/spec/scaffolding/scaffolding_features_spec.rb +0 -183
  93. data/spec/system/selenium_spec.rb +1 -4
  94. data/spec/system/support/system_test_helper.rb +0 -1
  95. data/spec/system/watir_spec.rb +1 -4
  96. data/spec/utilities/headless_config_spec.rb +82 -0
  97. data/spec/utilities/utilities_spec.rb +105 -0
  98. metadata +7 -97
  99. data/lib/adopter/adopt_menu.rb +0 -146
  100. data/lib/adopter/converters/base_converter.rb +0 -84
  101. data/lib/adopter/converters/identity_converter.rb +0 -53
  102. data/lib/adopter/migration_plan.rb +0 -74
  103. data/lib/adopter/migrator.rb +0 -96
  104. data/lib/adopter/plan_builder.rb +0 -275
  105. data/lib/adopter/project_analyzer.rb +0 -252
  106. data/lib/adopter/project_detector.rb +0 -157
  107. data/lib/generators/cucumber/templates/partials/capybara_env.tt +0 -38
  108. data/lib/generators/cucumber/templates/partials/capybara_world.tt +0 -6
  109. data/lib/generators/cucumber/templates/performance_feature.tt +0 -5
  110. data/lib/generators/cucumber/templates/performance_steps.tt +0 -17
  111. data/lib/generators/cucumber/templates/visual_feature.tt +0 -5
  112. data/lib/generators/cucumber/templates/visual_steps.tt +0 -19
  113. data/lib/generators/infrastructure/gitlab_generator.rb +0 -11
  114. data/lib/generators/infrastructure/templates/gitlab.tt +0 -46
  115. data/lib/generators/minitest/minitest_generator.rb +0 -35
  116. data/lib/generators/minitest/templates/accessibility_test.tt +0 -26
  117. data/lib/generators/minitest/templates/performance_test.tt +0 -18
  118. data/lib/generators/minitest/templates/test.tt +0 -64
  119. data/lib/generators/minitest/templates/visual_test.tt +0 -23
  120. data/lib/generators/rspec/templates/performance_spec.tt +0 -18
  121. data/lib/generators/rspec/templates/visual_spec.tt +0 -20
  122. data/lib/generators/templates/helpers/capybara_helper.tt +0 -32
  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/gitlab_generator_spec.rb +0 -38
  179. data/spec/integration/generators/lighthouse_addon_spec.rb +0 -132
  180. data/spec/integration/generators/minitest_generator_spec.rb +0 -64
  181. data/spec/integration/generators/reporter_spec.rb +0 -159
  182. data/spec/integration/generators/skip_flags_spec.rb +0 -134
  183. data/spec/integration/generators/visual_addon_spec.rb +0 -148
  184. data/spec/llm/client_spec.rb +0 -79
  185. data/spec/llm/config_spec.rb +0 -92
  186. data/spec/llm/prompts_spec.rb +0 -49
  187. data/spec/llm/response_parser_spec.rb +0 -92
  188. data/spec/menus/adopter_adopt_menu_spec.rb +0 -97
  189. data/spec/scaffolding/page_introspector_spec.rb +0 -82
  190. data/spec/scaffolding/url_analyzer_spec.rb +0 -110
  191. data/spec/system/adopt_matrix_spec.rb +0 -537
  192. data/spec/system/adopt_spec.rb +0 -225
  193. data/spec/system/capybara_spec.rb +0 -42
@@ -1,225 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fileutils'
4
- require_relative '../../lib/adopter/adopt_menu'
5
- require_relative 'support/system_test_helper'
6
-
7
- describe 'Adopt end-to-end' do
8
- include SystemTestHelper
9
-
10
- let(:source_dir) { "tmp_adopt_e2e_source_#{automation}" }
11
- let(:output_dir) { "tmp_adopt_e2e_#{automation}_#{framework}" }
12
-
13
- before do
14
- FileUtils.mkdir_p("#{source_dir}/pages")
15
- FileUtils.mkdir_p("#{source_dir}/spec")
16
-
17
- File.write("#{source_dir}/Gemfile", <<~GEMFILE)
18
- gem 'rspec'
19
- gem 'selenium-webdriver'
20
- gem 'faker'
21
- GEMFILE
22
-
23
- File.write("#{source_dir}/pages/login_page.rb", <<~RUBY)
24
- class LoginPage < BasePage
25
- def login(user, pass)
26
- driver.find_element(id: 'user').send_keys user
27
- end
28
- end
29
- RUBY
30
-
31
- File.write("#{source_dir}/spec/login_spec.rb", <<~RUBY)
32
- describe 'Login' do
33
- it 'can log in' do
34
- expect(true).to eq true
35
- end
36
- end
37
- RUBY
38
- end
39
-
40
- after do
41
- FileUtils.rm_rf(source_dir)
42
- FileUtils.rm_rf(output_dir)
43
- end
44
-
45
- shared_examples 'valid adopted project' do
46
- it 'creates a complete raider project structure' do
47
- expect(File).to exist("#{output_dir}/Gemfile")
48
- expect(File).to exist("#{output_dir}/Rakefile")
49
- expect(File).to exist("#{output_dir}/Readme.md")
50
- expect(File).to exist("#{output_dir}/.rubocop.yml")
51
- end
52
-
53
- it 'converts pages into raider paths' do
54
- expect(File).to exist("#{output_dir}/page_objects/pages/login.rb")
55
- end
56
-
57
- it 'adds frozen_string_literal to converted pages' do
58
- page = File.read("#{output_dir}/page_objects/pages/login.rb")
59
- expect(page).to include('# frozen_string_literal: true')
60
- end
61
-
62
- it 'updates base class to Page' do
63
- page = File.read("#{output_dir}/page_objects/pages/login.rb")
64
- expect(page).to include('class LoginPage < Page')
65
- end
66
-
67
- it 'merges custom gems into Gemfile' do
68
- gemfile = File.read("#{output_dir}/Gemfile")
69
- expect(gemfile).to include("gem 'faker'")
70
- end
71
- end
72
-
73
- context 'selenium to selenium (identity conversion)' do
74
- let(:automation) { 'selenium' }
75
- let(:framework) { 'rspec' }
76
-
77
- before do
78
- Adopter::AdoptMenu.adopt(
79
- source_path: source_dir, output_path: output_dir,
80
- target_automation: 'selenium', target_framework: 'rspec'
81
- )
82
- end
83
-
84
- include_examples 'valid adopted project'
85
-
86
- it 'generates rspec test files' do
87
- expect(File).to exist("#{output_dir}/spec")
88
- end
89
-
90
- it 'generates selenium helpers' do
91
- expect(File).to exist("#{output_dir}/helpers/driver_helper.rb")
92
- end
93
-
94
- it 'converts page instantiation to use driver' do
95
- result = Adopter::AdoptMenu.adopt(
96
- source_path: source_dir, output_path: "#{output_dir}_check",
97
- target_automation: 'selenium', target_framework: 'rspec'
98
- )
99
-
100
- page = result[:plan].converted_pages.first.content
101
- expect(page).not_to include('LoginPage.new(browser)')
102
-
103
- FileUtils.rm_rf("#{output_dir}_check")
104
- end
105
- end
106
-
107
- context 'selenium to capybara' do
108
- let(:automation) { 'capybara' }
109
- let(:framework) { 'rspec' }
110
-
111
- before do
112
- Adopter::AdoptMenu.adopt(
113
- source_path: source_dir, output_path: output_dir,
114
- target_automation: 'capybara', target_framework: 'rspec'
115
- )
116
- end
117
-
118
- include_examples 'valid adopted project'
119
-
120
- it 'generates capybara helpers' do
121
- expect(File).to exist("#{output_dir}/helpers/capybara_helper.rb")
122
- end
123
-
124
- it 'does not generate driver_helper' do
125
- expect(File).not_to exist("#{output_dir}/helpers/driver_helper.rb")
126
- end
127
- end
128
-
129
- context 'selenium to watir + minitest' do
130
- let(:automation) { 'watir' }
131
- let(:framework) { 'minitest' }
132
-
133
- before do
134
- Adopter::AdoptMenu.adopt(
135
- source_path: source_dir, output_path: output_dir,
136
- target_automation: 'watir', target_framework: 'minitest'
137
- )
138
- end
139
-
140
- include_examples 'valid adopted project'
141
-
142
- it 'generates watir helpers' do
143
- expect(File).to exist("#{output_dir}/helpers/browser_helper.rb")
144
- end
145
-
146
- it 'generates minitest test helper' do
147
- expect(File).to exist("#{output_dir}/helpers/test_helper.rb")
148
- end
149
-
150
- it 'generates minitest test directory' do
151
- expect(File).to exist("#{output_dir}/test")
152
- end
153
- end
154
-
155
- context 'selenium to selenium + cucumber' do
156
- let(:automation) { 'selenium' }
157
- let(:framework) { 'cucumber' }
158
-
159
- before do
160
- FileUtils.mkdir_p("#{source_dir}/features/step_definitions")
161
- File.write("#{source_dir}/features/login.feature", <<~GHERKIN)
162
- Feature: Login
163
- Scenario: Valid login
164
- Given I am on the login page
165
- GHERKIN
166
- File.write("#{source_dir}/features/step_definitions/login_steps.rb", <<~RUBY)
167
- Given('I am on the login page') do
168
- @page = LoginPage.new(driver)
169
- end
170
- RUBY
171
- File.write("#{source_dir}/Gemfile", "gem 'cucumber'\ngem 'selenium-webdriver'\ngem 'faker'\n")
172
-
173
- Adopter::AdoptMenu.adopt(
174
- source_path: source_dir, output_path: output_dir,
175
- target_automation: 'selenium', target_framework: 'cucumber'
176
- )
177
- end
178
-
179
- include_examples 'valid adopted project'
180
-
181
- it 'copies feature files' do
182
- expect(File).to exist("#{output_dir}/features/login.feature")
183
- end
184
-
185
- it 'converts step definitions' do
186
- expect(File).to exist("#{output_dir}/features/step_definitions/login_steps.rb")
187
- end
188
-
189
- it 'generates cucumber support files' do
190
- expect(File).to exist("#{output_dir}/features/support/env.rb")
191
- end
192
- end
193
-
194
- context 'with config overrides' do
195
- let(:automation) { 'selenium' }
196
- let(:framework) { 'rspec' }
197
-
198
- it 'applies browser and url overrides' do
199
- Adopter::AdoptMenu.adopt(
200
- source_path: source_dir, output_path: output_dir,
201
- target_automation: 'selenium', target_framework: 'rspec',
202
- browser: 'firefox', url: 'https://example.com'
203
- )
204
-
205
- config = YAML.safe_load(File.read("#{output_dir}/config/config.yml"), permitted_classes: [Symbol])
206
- expect(config['browser']).to eq('firefox')
207
- expect(config['url']).to eq('https://example.com')
208
- end
209
- end
210
-
211
- context 'with CI platform' do
212
- let(:automation) { 'selenium' }
213
- let(:framework) { 'rspec' }
214
-
215
- it 'generates github CI configuration' do
216
- Adopter::AdoptMenu.adopt(
217
- source_path: source_dir, output_path: output_dir,
218
- target_automation: 'selenium', target_framework: 'rspec',
219
- ci_platform: 'github'
220
- )
221
-
222
- expect(File).to exist("#{output_dir}/.github")
223
- end
224
- end
225
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../lib/ruby_raider'
4
- require_relative 'support/system_test_helper'
5
-
6
- FRAMEWORKS = %w[cucumber rspec minitest].freeze unless defined?(FRAMEWORKS)
7
-
8
- describe 'Capybara based frameworks' do
9
- include SystemTestHelper
10
-
11
- before(:all) do # rubocop:disable RSpec/BeforeAfterAll
12
- FRAMEWORKS.each do |framework|
13
- RubyRaider::Raider
14
- .new.invoke(:new, nil, %W[capybara_#{framework} -p framework:#{framework} automation:capybara])
15
- end
16
- end
17
-
18
- after(:all) do # rubocop:disable RSpec/BeforeAfterAll
19
- FRAMEWORKS.each { |framework| FileUtils.rm_rf("capybara_#{framework}") }
20
- end
21
-
22
- shared_examples 'runs tests successfully' do |framework|
23
- it 'installs dependencies and runs tests without errors' do
24
- result = run_tests_with(framework, 'capybara')
25
- expect(result[:success]).to be(true),
26
- "Tests failed for capybara_#{framework}.\n" \
27
- "STDOUT: #{result[:stdout]}\nSTDERR: #{result[:stderr]}"
28
- end
29
- end
30
-
31
- context 'with rspec' do
32
- include_examples 'runs tests successfully', 'rspec'
33
- end
34
-
35
- context 'with cucumber' do
36
- include_examples 'runs tests successfully', 'cucumber'
37
- end
38
-
39
- context 'with minitest' do
40
- include_examples 'runs tests successfully', 'minitest'
41
- end
42
- end