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
@@ -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