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,236 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'content_helper'
4
- require 'fileutils'
5
-
6
- describe 'Reporter content validation' do
7
- include InvokeGenerators
8
-
9
- # Generate projects with different reporter configurations
10
- before(:all) do # rubocop:disable RSpec/BeforeAfterAll
11
- %w[allure junit both none].each do |reporter|
12
- %w[rspec cucumber minitest].each do |framework|
13
- name = "reporter_#{reporter}_#{framework}"
14
- InvokeGenerators.generate_framework(
15
- automation: 'selenium', framework:, name:, reporter:
16
- )
17
- end
18
- end
19
- end
20
-
21
- after(:all) do # rubocop:disable RSpec/BeforeAfterAll
22
- %w[allure junit both none].each do |reporter|
23
- %w[rspec cucumber minitest].each do |framework|
24
- FileUtils.rm_rf("reporter_#{reporter}_#{framework}")
25
- end
26
- end
27
- end
28
-
29
- # --- Shared examples ---
30
-
31
- shared_examples 'project with allure' do |project_name|
32
- it 'generates allure_helper.rb' do
33
- expect(File).to exist("#{project_name}/helpers/allure_helper.rb")
34
- end
35
-
36
- it 'creates allure-results directory' do
37
- expect(File).to exist("#{project_name}/allure-results")
38
- end
39
-
40
- it 'includes allure-results in .gitignore' do
41
- gitignore = read_generated(project_name, '.gitignore')
42
- expect(gitignore).to include('allure-results')
43
- end
44
- end
45
-
46
- shared_examples 'project without allure' do |project_name|
47
- it 'does not generate allure_helper.rb' do
48
- expect(File).not_to exist("#{project_name}/helpers/allure_helper.rb")
49
- end
50
-
51
- it 'does not create allure-results directory' do
52
- expect(File).not_to exist("#{project_name}/allure-results")
53
- end
54
-
55
- it 'does not include allure-results in .gitignore' do
56
- gitignore = read_generated(project_name, '.gitignore')
57
- expect(gitignore).not_to include('allure-results')
58
- end
59
- end
60
-
61
- shared_examples 'rspec with allure reporter' do |project_name|
62
- it 'includes allure gems in Gemfile' do
63
- gemfile = read_generated(project_name, 'Gemfile')
64
- expect(gemfile).to include("gem 'allure-rspec'")
65
- expect(gemfile).to include("gem 'allure-ruby-commons'")
66
- end
67
-
68
- it 'references AllureHelper in spec_helper' do
69
- helper = read_generated(project_name, 'helpers/spec_helper.rb')
70
- expect(helper).to include("require_relative 'allure_helper'")
71
- expect(helper).to include('AllureHelper.configure')
72
- expect(helper).to include('config.formatter = AllureHelper.formatter')
73
- end
74
-
75
- it 'allure_helper has valid Ruby syntax' do
76
- content = read_generated(project_name, 'helpers/allure_helper.rb')
77
- expect(content).to have_valid_ruby_syntax
78
- end
79
- end
80
-
81
- shared_examples 'rspec without allure reporter' do |project_name|
82
- it 'does not include allure gems in Gemfile' do
83
- gemfile = read_generated(project_name, 'Gemfile')
84
- expect(gemfile).not_to include("gem 'allure-rspec'")
85
- end
86
-
87
- it 'does not reference AllureHelper in spec_helper' do
88
- helper = read_generated(project_name, 'helpers/spec_helper.rb')
89
- expect(helper).not_to include('AllureHelper')
90
- end
91
- end
92
-
93
- shared_examples 'rspec with junit reporter' do |project_name|
94
- it 'includes rspec_junit_formatter gem in Gemfile' do
95
- gemfile = read_generated(project_name, 'Gemfile')
96
- expect(gemfile).to include("gem 'rspec_junit_formatter'")
97
- end
98
-
99
- it 'configures junit formatter in spec_helper' do
100
- helper = read_generated(project_name, 'helpers/spec_helper.rb')
101
- expect(helper).to include("config.add_formatter('RspecJunitFormatter', 'results/junit.xml')")
102
- end
103
- end
104
-
105
- shared_examples 'rspec without junit reporter' do |project_name|
106
- it 'does not include rspec_junit_formatter gem in Gemfile' do
107
- gemfile = read_generated(project_name, 'Gemfile')
108
- expect(gemfile).not_to include("gem 'rspec_junit_formatter'")
109
- end
110
-
111
- it 'does not configure junit formatter in spec_helper' do
112
- helper = read_generated(project_name, 'helpers/spec_helper.rb')
113
- expect(helper).not_to include('RspecJunitFormatter')
114
- end
115
- end
116
-
117
- shared_examples 'cucumber with allure reporter' do |project_name|
118
- it 'includes allure-cucumber gem in Gemfile' do
119
- gemfile = read_generated(project_name, 'Gemfile')
120
- expect(gemfile).to include("gem 'allure-cucumber'")
121
- end
122
-
123
- it 'configures allure formatter in cucumber.yml' do
124
- cucumber_yml = read_generated(project_name, 'cucumber.yml')
125
- expect(cucumber_yml).to include('AllureCucumber::CucumberFormatter')
126
- expect(cucumber_yml).to include('--out allure-results')
127
- end
128
- end
129
-
130
- shared_examples 'cucumber without allure reporter' do |project_name|
131
- it 'does not include allure-cucumber gem in Gemfile' do
132
- gemfile = read_generated(project_name, 'Gemfile')
133
- expect(gemfile).not_to include("gem 'allure-cucumber'")
134
- end
135
-
136
- it 'does not configure allure formatter in cucumber.yml' do
137
- cucumber_yml = read_generated(project_name, 'cucumber.yml')
138
- expect(cucumber_yml).not_to include('AllureCucumber')
139
- end
140
- end
141
-
142
- shared_examples 'valid ruby files' do |project_name|
143
- it 'generates spec_helper or test_helper with valid syntax' do
144
- %w[helpers/spec_helper.rb helpers/test_helper.rb].each do |path|
145
- file = File.join(project_name, path)
146
- next unless File.exist?(file)
147
-
148
- content = File.read(file)
149
- expect(content).to have_valid_ruby_syntax
150
- expect(content).to have_frozen_string_literal
151
- end
152
- end
153
- end
154
-
155
- # --- reporter: allure ---
156
-
157
- context 'with reporter: allure' do
158
- context 'and rspec' do
159
- name = 'reporter_allure_rspec'
160
- it_behaves_like 'project with allure', name
161
- it_behaves_like 'rspec with allure reporter', name
162
- it_behaves_like 'rspec without junit reporter', name
163
- it_behaves_like 'valid ruby files', name
164
- end
165
-
166
- context 'and cucumber' do
167
- name = 'reporter_allure_cucumber'
168
- it_behaves_like 'project with allure', name
169
- it_behaves_like 'cucumber with allure reporter', name
170
- it_behaves_like 'valid ruby files', name
171
- end
172
- end
173
-
174
- # --- reporter: junit ---
175
-
176
- context 'with reporter: junit' do
177
- context 'and rspec' do
178
- name = 'reporter_junit_rspec'
179
- it_behaves_like 'project without allure', name
180
- it_behaves_like 'rspec without allure reporter', name
181
- it_behaves_like 'rspec with junit reporter', name
182
- it_behaves_like 'valid ruby files', name
183
- end
184
-
185
- context 'and cucumber' do
186
- name = 'reporter_junit_cucumber'
187
- it_behaves_like 'project without allure', name
188
- it_behaves_like 'cucumber without allure reporter', name
189
- it_behaves_like 'valid ruby files', name
190
- end
191
- end
192
-
193
- # --- reporter: both ---
194
-
195
- context 'with reporter: both' do
196
- context 'and rspec' do
197
- name = 'reporter_both_rspec'
198
- it_behaves_like 'project with allure', name
199
- it_behaves_like 'rspec with allure reporter', name
200
- it_behaves_like 'rspec with junit reporter', name
201
- it_behaves_like 'valid ruby files', name
202
- end
203
-
204
- context 'and cucumber' do
205
- name = 'reporter_both_cucumber'
206
- it_behaves_like 'project with allure', name
207
- it_behaves_like 'cucumber with allure reporter', name
208
- it_behaves_like 'valid ruby files', name
209
- end
210
- end
211
-
212
- # --- reporter: none ---
213
-
214
- context 'with reporter: none' do
215
- context 'and rspec' do
216
- name = 'reporter_none_rspec'
217
- it_behaves_like 'project without allure', name
218
- it_behaves_like 'rspec without allure reporter', name
219
- it_behaves_like 'rspec without junit reporter', name
220
- it_behaves_like 'valid ruby files', name
221
- end
222
-
223
- context 'and cucumber' do
224
- name = 'reporter_none_cucumber'
225
- it_behaves_like 'project without allure', name
226
- it_behaves_like 'cucumber without allure reporter', name
227
- it_behaves_like 'valid ruby files', name
228
- end
229
-
230
- context 'and minitest' do
231
- name = 'reporter_none_minitest'
232
- it_behaves_like 'project without allure', name
233
- it_behaves_like 'valid ruby files', name
234
- end
235
- end
236
- end
@@ -1,206 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'content_helper'
4
- require 'fileutils'
5
-
6
- describe 'Skip flags content validation' do
7
- include InvokeGenerators
8
-
9
- before(:all) do # rubocop:disable RSpec/BeforeAfterAll
10
- {
11
- 'skip_allure_content' => { skip_allure: true },
12
- 'skip_video_content' => { skip_video: true },
13
- 'skip_ci_content' => { skip_ci: true, ci_platform: 'github' },
14
- 'skip_all_content' => { skip_allure: true, skip_video: true, skip_ci: true, ci_platform: 'github' }
15
- }.each do |name, flags|
16
- InvokeGenerators.generate_framework(
17
- { automation: 'selenium', framework: 'rspec', name: }.merge(flags)
18
- )
19
- end
20
- end
21
-
22
- after(:all) do # rubocop:disable RSpec/BeforeAfterAll
23
- %w[skip_allure_content skip_video_content skip_ci_content skip_all_content].each do |name|
24
- FileUtils.rm_rf(name)
25
- end
26
- end
27
-
28
- # --- skip_allure content validation ---
29
-
30
- describe '--skip-allure file content' do
31
- let(:name) { 'skip_allure_content' }
32
-
33
- it 'Gemfile excludes allure gems' do
34
- gemfile = read_generated(name, 'Gemfile')
35
- expect(gemfile).not_to include('allure-rspec')
36
- expect(gemfile).not_to include('allure-ruby-commons')
37
- end
38
-
39
- it 'Gemfile still includes core gems' do
40
- gemfile = read_generated(name, 'Gemfile')
41
- expect(gemfile).to include("gem 'rake'")
42
- expect(gemfile).to include("gem 'rspec'")
43
- expect(gemfile).to include("gem 'selenium-webdriver'")
44
- expect(gemfile).to include("gem 'rspec-retry'")
45
- end
46
-
47
- it 'spec_helper does not reference AllureHelper' do
48
- helper = read_generated(name, 'helpers/spec_helper.rb')
49
- expect(helper).not_to include('AllureHelper')
50
- expect(helper).not_to include('allure_helper')
51
- end
52
-
53
- it 'spec_helper still has retry config' do
54
- helper = read_generated(name, 'helpers/spec_helper.rb')
55
- expect(helper).to include("require 'rspec/retry'")
56
- expect(helper).to include('config.verbose_retry = true')
57
- expect(helper).to include("config.default_retry_count = ENV.fetch('RETRY_COUNT', 0).to_i")
58
- end
59
-
60
- it 'spec_helper has valid Ruby syntax' do
61
- helper = read_generated(name, 'helpers/spec_helper.rb')
62
- expect(helper).to have_valid_ruby_syntax
63
- end
64
-
65
- it '.gitignore excludes allure-results' do
66
- gitignore = read_generated(name, '.gitignore')
67
- expect(gitignore).not_to include('allure-results')
68
- end
69
-
70
- it '.gitignore still includes spec/examples.txt' do
71
- gitignore = read_generated(name, '.gitignore')
72
- expect(gitignore).to include('spec/examples.txt')
73
- end
74
-
75
- it 'Rakefile still has tag tasks' do
76
- rakefile = read_generated(name, 'Rakefile')
77
- expect(rakefile).to include('RakeTask.new(:smoke)')
78
- expect(rakefile).to include('RakeTask.new(:regression)')
79
- end
80
-
81
- it '.rspec file still exists with correct content' do
82
- rspec = read_generated(name, '.rspec')
83
- expect(rspec).to include('--require helpers/spec_helper')
84
- expect(rspec).to include('--format documentation')
85
- end
86
- end
87
-
88
- # --- skip_video content validation ---
89
-
90
- describe '--skip-video file content' do
91
- let(:name) { 'skip_video_content' }
92
-
93
- it 'spec_helper does not reference video_helper' do
94
- helper = read_generated(name, 'helpers/spec_helper.rb')
95
- expect(helper).not_to include('video_helper')
96
- end
97
-
98
- it 'spec_helper still includes AllureHelper' do
99
- helper = read_generated(name, 'helpers/spec_helper.rb')
100
- expect(helper).to include('AllureHelper')
101
- end
102
-
103
- it 'spec_helper has valid Ruby syntax' do
104
- helper = read_generated(name, 'helpers/spec_helper.rb')
105
- expect(helper).to have_valid_ruby_syntax
106
- end
107
-
108
- it 'Gemfile still includes allure gems' do
109
- gemfile = read_generated(name, 'Gemfile')
110
- expect(gemfile).to include("gem 'allure-rspec'")
111
- end
112
- end
113
-
114
- # --- skip_ci content validation ---
115
-
116
- describe '--skip-ci file content' do
117
- let(:name) { 'skip_ci_content' }
118
-
119
- it 'does not generate GitHub Actions directory' do
120
- expect(File).not_to exist("#{name}/.github")
121
- end
122
-
123
- it 'still generates Gemfile with all gems' do
124
- gemfile = read_generated(name, 'Gemfile')
125
- expect(gemfile).to include("gem 'rspec'")
126
- expect(gemfile).to include("gem 'allure-rspec'")
127
- expect(gemfile).to include("gem 'rspec-retry'")
128
- end
129
-
130
- it 'still generates all helpers' do
131
- expect(File).to exist("#{name}/helpers/spec_helper.rb")
132
- expect(File).to exist("#{name}/helpers/allure_helper.rb")
133
- expect(File).to exist("#{name}/helpers/video_helper.rb")
134
- expect(File).to exist("#{name}/helpers/driver_helper.rb")
135
- end
136
- end
137
-
138
- # --- all skip flags combined ---
139
-
140
- describe 'all skip flags combined' do
141
- let(:name) { 'skip_all_content' }
142
-
143
- it 'Gemfile has no allure gems' do
144
- gemfile = read_generated(name, 'Gemfile')
145
- expect(gemfile).not_to include('allure')
146
- end
147
-
148
- it 'Gemfile still has core gems' do
149
- gemfile = read_generated(name, 'Gemfile')
150
- expect(gemfile).to include("gem 'rspec'")
151
- expect(gemfile).to include("gem 'selenium-webdriver'")
152
- expect(gemfile).to include("gem 'rspec-retry'")
153
- end
154
-
155
- it 'has no allure_helper.rb' do
156
- expect(File).not_to exist("#{name}/helpers/allure_helper.rb")
157
- end
158
-
159
- it 'has no video_helper.rb' do
160
- expect(File).not_to exist("#{name}/helpers/video_helper.rb")
161
- end
162
-
163
- it 'has no CI files' do
164
- expect(File).not_to exist("#{name}/.github")
165
- end
166
-
167
- it 'spec_helper has no allure or video references' do
168
- helper = read_generated(name, 'helpers/spec_helper.rb')
169
- expect(helper).not_to include('AllureHelper')
170
- expect(helper).not_to include('allure_helper')
171
- expect(helper).not_to include('video_helper')
172
- end
173
-
174
- it 'spec_helper has valid Ruby syntax' do
175
- helper = read_generated(name, 'helpers/spec_helper.rb')
176
- expect(helper).to have_valid_ruby_syntax
177
- end
178
-
179
- it 'spec_helper still has retry and persistence config' do
180
- helper = read_generated(name, 'helpers/spec_helper.rb')
181
- expect(helper).to include("require 'rspec/retry'")
182
- expect(helper).to include("config.example_status_persistence_file_path = 'spec/examples.txt'")
183
- end
184
-
185
- it 'Rakefile still has tag tasks' do
186
- rakefile = read_generated(name, 'Rakefile')
187
- expect(rakefile).to include('RakeTask.new(:smoke)')
188
- end
189
-
190
- it 'all generated .rb files have valid syntax' do
191
- Dir.glob("#{name}/**/*.rb").each do |file|
192
- content = File.read(file)
193
- expect(content).to have_valid_ruby_syntax,
194
- "#{file} has invalid Ruby syntax"
195
- end
196
- end
197
-
198
- it 'all generated .rb files (except abstract) have frozen_string_literal' do
199
- Dir.glob("#{name}/**/*.rb").reject { |f| f.include?('/abstract/') }.each do |file|
200
- content = File.read(file)
201
- expect(content).to have_frozen_string_literal,
202
- "#{file} is missing frozen_string_literal"
203
- end
204
- end
205
- end
206
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../lib/generators/infrastructure/gitlab_generator'
4
- require_relative '../spec_helper'
5
-
6
- describe GitlabGenerator do
7
- shared_examples 'selects gitlab as an infrastructure option' do |name|
8
- it 'creates a gitlab infrastructure file' do
9
- expect(File).to exist("#{name}/gitlab-ci.yml")
10
- end
11
- end
12
-
13
- shared_examples 'does not select any infrastructure option' do |name|
14
- it 'does not create a gitlab infrastructure file' do
15
- expect(File).not_to exist("#{name}/gitlab-ci.yml")
16
- end
17
- end
18
-
19
- context 'with rspec and selenium' do
20
- include_examples 'selects gitlab as an infrastructure option', "#{FrameworkIndex::RSPEC}_#{AutomationIndex::SELENIUM}_#{CI_PLATFORMS[2]}"
21
- include_examples 'does not select any infrastructure option', "#{FrameworkIndex::RSPEC}_#{AutomationIndex::SELENIUM}"
22
- end
23
-
24
- context 'with rspec and watir' do
25
- include_examples 'selects gitlab as an infrastructure option', "#{FrameworkIndex::RSPEC}_#{AutomationIndex::WATIR}_#{CI_PLATFORMS[2]}"
26
- include_examples 'does not select any infrastructure option', "#{FrameworkIndex::RSPEC}_#{AutomationIndex::WATIR}"
27
- end
28
-
29
- context 'with cucumber and selenium' do
30
- include_examples 'selects gitlab as an infrastructure option', "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::SELENIUM}_#{CI_PLATFORMS[2]}"
31
- include_examples 'does not select any infrastructure option', "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::SELENIUM}"
32
- end
33
-
34
- context 'with cucumber and watir' do
35
- include_examples 'selects gitlab as an infrastructure option', "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::WATIR}_#{CI_PLATFORMS[2]}"
36
- include_examples 'does not select any infrastructure option', "#{FrameworkIndex::CUCUMBER}_#{AutomationIndex::WATIR}"
37
- end
38
- end
@@ -1,132 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fileutils'
4
- require_relative '../../../lib/generators/invoke_generators'
5
- require_relative '../settings_helper'
6
-
7
- describe 'Lighthouse addon generation' do
8
- include InvokeGenerators
9
- include SettingsHelper
10
-
11
- # rubocop:disable RSpec/BeforeAfterAll, RSpec/InstanceVariable
12
- before(:all) do
13
- @lighthouse_projects = []
14
- %w[rspec cucumber minitest].each do |framework|
15
- %w[selenium watir capybara].each do |automation|
16
- name = "lighthouse_#{framework}_#{automation}"
17
- @lighthouse_projects << { name:, framework:, automation: }
18
- InvokeGenerators.generate_framework(
19
- automation:, framework:, name:, performance: true
20
- )
21
- end
22
- end
23
- end
24
-
25
- after(:all) do
26
- @lighthouse_projects.each { |p| FileUtils.rm_rf(p[:name]) }
27
- end
28
- # rubocop:enable RSpec/BeforeAfterAll, RSpec/InstanceVariable
29
-
30
- context 'with rspec and selenium' do
31
- let(:name) { 'lighthouse_rspec_selenium' }
32
-
33
- it 'creates performance_helper.rb' do
34
- expect(File).to exist("#{name}/helpers/performance_helper.rb")
35
- end
36
-
37
- it 'creates performance_spec.rb' do
38
- expect(File).to exist("#{name}/spec/performance_spec.rb")
39
- end
40
-
41
- it 'performance helper has valid Ruby syntax' do
42
- content = File.read("#{name}/helpers/performance_helper.rb")
43
- expect { RubyVM::InstructionSequence.compile(content) }.not_to raise_error
44
- end
45
-
46
- it 'performance spec has valid Ruby syntax' do
47
- content = File.read("#{name}/spec/performance_spec.rb")
48
- expect { RubyVM::InstructionSequence.compile(content) }.not_to raise_error
49
- end
50
- end
51
-
52
- context 'with cucumber and selenium' do
53
- let(:name) { 'lighthouse_cucumber_selenium' }
54
-
55
- it 'creates performance_helper.rb' do
56
- expect(File).to exist("#{name}/helpers/performance_helper.rb")
57
- end
58
-
59
- it 'creates performance.feature' do
60
- expect(File).to exist("#{name}/features/performance.feature")
61
- end
62
-
63
- it 'creates performance_steps.rb' do
64
- expect(File).to exist("#{name}/features/step_definitions/performance_steps.rb")
65
- end
66
- end
67
-
68
- context 'with minitest and selenium' do
69
- let(:name) { 'lighthouse_minitest_selenium' }
70
-
71
- it 'creates performance_helper.rb' do
72
- expect(File).to exist("#{name}/helpers/performance_helper.rb")
73
- end
74
-
75
- it 'creates test_performance.rb' do
76
- expect(File).to exist("#{name}/test/test_performance.rb")
77
- end
78
-
79
- it 'performance test has valid Ruby syntax' do
80
- content = File.read("#{name}/test/test_performance.rb")
81
- expect { RubyVM::InstructionSequence.compile(content) }.not_to raise_error
82
- end
83
- end
84
-
85
- context 'with rspec and watir' do
86
- let(:name) { 'lighthouse_rspec_watir' }
87
-
88
- it 'creates performance_helper.rb' do
89
- expect(File).to exist("#{name}/helpers/performance_helper.rb")
90
- end
91
-
92
- it 'creates performance_spec.rb' do
93
- expect(File).to exist("#{name}/spec/performance_spec.rb")
94
- end
95
- end
96
-
97
- context 'with rspec and capybara' do
98
- let(:name) { 'lighthouse_rspec_capybara' }
99
-
100
- it 'creates performance_helper.rb' do
101
- expect(File).to exist("#{name}/helpers/performance_helper.rb")
102
- end
103
-
104
- it 'creates performance_spec.rb' do
105
- expect(File).to exist("#{name}/spec/performance_spec.rb")
106
- end
107
- end
108
-
109
- context 'without performance flag' do
110
- let(:name) { 'no_lighthouse_rspec_selenium' }
111
-
112
- # rubocop:disable RSpec/BeforeAfterAll
113
- before(:all) do
114
- InvokeGenerators.generate_framework(
115
- automation: 'selenium', framework: 'rspec', name: 'no_lighthouse_rspec_selenium'
116
- )
117
- end
118
-
119
- after(:all) do
120
- FileUtils.rm_rf('no_lighthouse_rspec_selenium')
121
- end
122
- # rubocop:enable RSpec/BeforeAfterAll
123
-
124
- it 'does not create performance_helper.rb' do
125
- expect(File).not_to exist("#{name}/helpers/performance_helper.rb")
126
- end
127
-
128
- it 'does not create performance_spec.rb' do
129
- expect(File).not_to exist("#{name}/spec/performance_spec.rb")
130
- end
131
- end
132
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../lib/generators/minitest/minitest_generator'
4
- require_relative '../spec_helper'
5
-
6
- describe MinitestGenerator do
7
- shared_examples 'creates factory files' do |project_name|
8
- it 'creates a model factory file' do
9
- expect(File).to exist("#{project_name}/models/model_factory.rb")
10
- end
11
-
12
- it 'creates the data for the factory' do
13
- expect(File).to exist("#{project_name}/models/data/users.yml")
14
- end
15
- end
16
-
17
- shared_examples 'creates minitest files examples' do |project_name, file_name|
18
- it 'creates a test file' do
19
- expect(File).to exist("#{project_name}/test/test_#{file_name}_page.rb")
20
- end
21
- end
22
-
23
- shared_examples 'creates test helper' do |project_name|
24
- it 'creates a test helper file' do
25
- expect(File).to exist("#{project_name}/helpers/test_helper.rb")
26
- end
27
- end
28
-
29
- context 'with minitest and selenium' do
30
- include_examples 'creates factory files', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::SELENIUM}"
31
- include_examples 'creates minitest files examples',
32
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::SELENIUM}", 'login'
33
- include_examples 'creates test helper', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::SELENIUM}"
34
- end
35
-
36
- context 'with minitest and watir' do
37
- include_examples 'creates factory files', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::WATIR}"
38
- include_examples 'creates minitest files examples',
39
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::WATIR}", 'login'
40
- include_examples 'creates test helper', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::WATIR}"
41
- end
42
-
43
- context 'with minitest and capybara' do
44
- include_examples 'creates factory files', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CAPYBARA}"
45
- include_examples 'creates minitest files examples',
46
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CAPYBARA}", 'login'
47
- include_examples 'creates test helper', "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CAPYBARA}"
48
- end
49
-
50
- context 'with minitest and appium android' do
51
- include_examples 'creates minitest files examples',
52
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::ANDROID}", 'pdp'
53
- end
54
-
55
- context 'with minitest and appium ios' do
56
- include_examples 'creates minitest files examples',
57
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::IOS}", 'pdp'
58
- end
59
-
60
- context 'with minitest and appium cross platform' do
61
- include_examples 'creates minitest files examples',
62
- "#{FrameworkIndex::MINITEST}_#{AutomationIndex::CROSS_PLATFORM}", 'pdp'
63
- end
64
- end