ruby_raider 3.11.0 → 3.12.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/reek.yml +5 -1
  3. data/.github/workflows/release.yml +2 -1
  4. data/.github/workflows/system_tests.yml +1 -1
  5. data/.reek.yml +13 -0
  6. data/README.md +43 -4
  7. data/lib/commands/utility_commands.rb +1 -1
  8. data/lib/generators/automation/automation_generator.rb +15 -10
  9. data/lib/generators/automation/templates/appium_caps.tt +2 -4
  10. data/lib/generators/automation/templates/home.tt +1 -2
  11. data/lib/generators/automation/templates/login.tt +6 -6
  12. data/lib/generators/automation/templates/page.tt +10 -3
  13. data/lib/generators/automation/templates/partials/home_page_selector.tt +4 -6
  14. data/lib/generators/automation/templates/partials/pdp_page_selector.tt +4 -6
  15. data/lib/generators/automation/templates/pdp.tt +3 -2
  16. data/lib/generators/cucumber/cucumber_generator.rb +15 -2
  17. data/lib/generators/cucumber/templates/partials/driver_world.tt +9 -0
  18. data/lib/generators/cucumber/templates/partials/mobile_steps.tt +1 -1
  19. data/lib/generators/cucumber/templates/partials/selenium_env.tt +4 -0
  20. data/lib/generators/cucumber/templates/partials/web_steps.tt +4 -0
  21. data/lib/generators/generator.rb +15 -4
  22. data/lib/generators/helper_generator.rb +8 -0
  23. data/lib/generators/invoke_generators.rb +23 -0
  24. data/lib/generators/menu_generator.rb +26 -14
  25. data/lib/generators/rspec/rspec_generator.rb +10 -3
  26. data/lib/generators/rspec/templates/spec.tt +15 -1
  27. data/lib/generators/template_renderer/template_error.rb +8 -8
  28. data/lib/generators/templates/common/partials/mobile_config.tt +1 -0
  29. data/lib/generators/templates/common/partials/web_config.tt +1 -1
  30. data/lib/generators/templates/common/read_me.tt +508 -24
  31. data/lib/generators/templates/helpers/partials/selenium_driver.tt +1 -3
  32. data/lib/generators/templates/helpers/raider_element.tt +159 -0
  33. data/lib/generators/templates/helpers/session_state.tt +45 -5
  34. data/lib/generators/templates/helpers/spec_helper.tt +9 -1
  35. data/lib/generators/templates/helpers/wait_helper.tt +470 -0
  36. data/lib/ruby_raider/ffmpeg.rb +7 -7
  37. data/lib/ruby_raider.rb +2 -0
  38. data/lib/scaffolding/project_detector.rb +6 -0
  39. data/lib/scaffolding/scaffolding.rb +4 -0
  40. data/lib/scaffolding/templates/component.tt +4 -0
  41. data/lib/scaffolding/templates/page_object.tt +8 -0
  42. data/lib/version +1 -1
  43. data/sig/generators/generator.rbs +2 -0
  44. data/sig/scaffolding/project_detector.rbs +1 -0
  45. data/sig/scaffolding/scaffolding.rbs +1 -0
  46. data/spec/commands/raider_commands_spec.rb +24 -0
  47. data/spec/fixtures/watir_master/cucumber_watir/Readme.md.snapshot +175 -0
  48. data/spec/fixtures/watir_master/cucumber_watir/features/step_definitions/login_steps.rb.snapshot +24 -0
  49. data/spec/fixtures/watir_master/cucumber_watir/page_objects/abstract/page.rb.snapshot +39 -0
  50. data/spec/fixtures/watir_master/cucumber_watir/page_objects/pages/login.rb.snapshot +33 -0
  51. data/spec/fixtures/watir_master/rspec_watir/Readme.md.snapshot +174 -0
  52. data/spec/fixtures/watir_master/rspec_watir/page_objects/abstract/page.rb.snapshot +39 -0
  53. data/spec/fixtures/watir_master/rspec_watir/page_objects/pages/login.rb.snapshot +33 -0
  54. data/spec/fixtures/watir_master/rspec_watir/spec/login_page_spec.rb.snapshot +49 -0
  55. data/spec/integration/commands/scaffolding_commands_spec.rb +49 -0
  56. data/spec/integration/commands/utility_commands_spec.rb +8 -0
  57. data/spec/integration/content/config_content_spec.rb +44 -0
  58. data/spec/integration/content/helper_content_spec.rb +79 -0
  59. data/spec/integration/content/page_content_spec.rb +75 -4
  60. data/spec/integration/content/readme_content_spec.rb +126 -5
  61. data/spec/integration/content/syntax_validation_spec.rb +23 -0
  62. data/spec/integration/content/test_content_spec.rb +57 -0
  63. data/spec/integration/end_to_end_spec.rb +50 -28
  64. data/spec/integration/generators/automation_generator_spec.rb +50 -0
  65. data/spec/integration/generators/common_generator_spec.rb +20 -0
  66. data/spec/integration/generators/config_features_spec.rb +2 -2
  67. data/spec/integration/generators/cucumber_generator_spec.rb +36 -0
  68. data/spec/integration/generators/helpers_generator_spec.rb +38 -0
  69. data/spec/integration/generators/invoke_generators_spec.rb +70 -0
  70. data/spec/integration/generators/rspec_generator_spec.rb +20 -0
  71. data/spec/integration/helpers/session_state_spec.rb +46 -0
  72. data/spec/integration/helpers/wait_helper_mobile_spec.rb +281 -0
  73. data/spec/integration/helpers/wait_helper_spec.rb +496 -0
  74. data/spec/integration/helpers/wait_helper_support.rb +183 -0
  75. data/spec/integration/settings_helper.rb +4 -1
  76. data/spec/integration/spec_helper.rb +2 -2
  77. data/spec/menus/menu_generator_spec.rb +64 -2
  78. data/spec/scaffolding/scaffold_project_detector_spec.rb +12 -0
  79. metadata +15 -2
@@ -28,8 +28,8 @@ module LazyProjectGenerator
28
28
  GENERATED = Set.new
29
29
  MUTEX = Mutex.new
30
30
 
31
- def ensure_project(framework:, automation:)
32
- settings = create_settings(framework:, automation:)
31
+ def ensure_project(framework:, automation:, examples: true)
32
+ settings = create_settings(framework:, automation:, examples:)
33
33
  project_name = settings[:name]
34
34
 
35
35
  MUTEX.synchronize do
@@ -21,8 +21,9 @@ RSpec.describe MenuGenerator do
21
21
 
22
22
  expect(menu).to have_received(:choice).with(:Selenium, anything)
23
23
  expect(menu).to have_received(:choice).with(:Appium, anything)
24
- expect(menu).to have_received(:choice).with(:Watir, anything)
25
24
  expect(menu).to have_received(:choice).with(:Quit, anything)
25
+ expect(menu).not_to have_received(:choice).with(:Watir, anything)
26
+ expect(menu).to have_received(:choice).exactly(3).times
26
27
  end
27
28
  end
28
29
 
@@ -186,7 +187,7 @@ RSpec.describe MenuGenerator do
186
187
 
187
188
  menu_generator.send(:select_accessibility, 'Rspec', 'selenium')
188
189
 
189
- expect(menu_generator).to have_received(:select_ci).with('Rspec', 'selenium', accessibility: false)
190
+ expect(menu_generator).to have_received(:select_ci).with('Rspec', 'selenium', accessibility: false, examples: true)
190
191
  end
191
192
 
192
193
  it 'is skipped for mobile' do
@@ -206,4 +207,65 @@ RSpec.describe MenuGenerator do
206
207
  )
207
208
  end
208
209
  end
210
+
211
+ describe 'example tests question' do
212
+ let(:menu) { double('menu') } # rubocop:disable RSpec/VerifiedDoubles
213
+
214
+ before do
215
+ allow(menu).to receive(:choice)
216
+ allow(menu_generator).to receive(:generate_framework)
217
+ allow(menu_generator).to receive(:system)
218
+ allow(prompt).to receive(:say)
219
+ allow(prompt).to receive(:yes?).and_return(false)
220
+ end
221
+
222
+ it 'is asked after the test framework question' do
223
+ allow(prompt).to receive(:select).with('Please select your test framework').and_yield(menu)
224
+ allow(menu).to receive(:choice).with(:Rspec, anything) { |_, action| action.call }
225
+ allow(menu_generator).to receive(:select_examples)
226
+
227
+ menu_generator.choose_test_framework('selenium')
228
+
229
+ expect(menu_generator).to have_received(:select_examples).with('Rspec', 'selenium')
230
+ end
231
+
232
+ it 'offers Yes first, so yes is the default' do
233
+ allow(prompt).to receive(:select).with('Do you want example tests?').and_yield(menu)
234
+ allow(menu).to receive(:choice).with(:Yes, anything) { |_, action| action.call }
235
+ allow(menu_generator).to receive(:select_accessibility)
236
+
237
+ menu_generator.send(:select_examples, 'Rspec', 'selenium')
238
+
239
+ expect(menu).to have_received(:choice).with(:Yes, anything).ordered
240
+ expect(menu).to have_received(:choice).with(:No, anything).ordered
241
+ expect(menu).to have_received(:choice).with(:Quit, anything).ordered
242
+ expect(menu_generator).to have_received(:select_accessibility).with('Rspec', 'selenium', examples: true)
243
+ end
244
+
245
+ it 'carries No through to generate_framework as examples: false' do
246
+ allow(prompt).to receive(:select).with('Do you want example tests?').and_yield(menu)
247
+ allow(menu).to receive(:choice).with(:No, anything) { |_, action| action.call }
248
+ allow(prompt).to receive(:select).with('Add accessibility testing (axe)?').and_yield(menu)
249
+ allow(menu).to receive(:choice).with(:No, anything) { |_, action| action.call }
250
+ allow(prompt).to receive(:select).with('Which CI provider?').and_yield(menu)
251
+ allow(menu).to receive(:choice).with('GitHub Actions', anything) { |_, action| action.call }
252
+
253
+ menu_generator.send(:select_examples, 'Rspec', 'selenium')
254
+
255
+ expect(menu_generator).to have_received(:generate_framework).with(
256
+ hash_including(automation: 'selenium', framework: 'rspec', examples: false)
257
+ )
258
+ end
259
+
260
+ it 'carries No through for mobile, which has no accessibility question' do
261
+ allow(prompt).to receive(:select).with('Do you want example tests?').and_yield(menu)
262
+ allow(menu).to receive(:choice).with(:No, anything) { |_, action| action.call }
263
+
264
+ menu_generator.send(:select_examples, 'Cucumber', 'ios')
265
+
266
+ expect(menu_generator).to have_received(:generate_framework).with(
267
+ hash_including(automation: 'ios', framework: 'cucumber', examples: false)
268
+ )
269
+ end
270
+ end
209
271
  end
@@ -84,6 +84,18 @@ RSpec.describe ScaffoldProjectDetector do
84
84
  end
85
85
  end
86
86
 
87
+ describe '.wait_helper?' do
88
+ it 'is true when helpers/wait_helper.rb exists' do
89
+ FileUtils.mkdir_p('helpers')
90
+ File.write('helpers/wait_helper.rb', "# frozen_string_literal: true\n")
91
+ expect(described_class.wait_helper?).to be true
92
+ end
93
+
94
+ it 'is false when the file does not exist' do
95
+ expect(described_class.wait_helper?).to be false
96
+ end
97
+ end
98
+
87
99
  describe '.config' do
88
100
  it 'returns empty hash when config missing' do
89
101
  expect(described_class.config).to eq({})
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.0
4
+ version: 3.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-31 00:00:00.000000000 Z
11
+ date: 2026-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler-audit
@@ -289,9 +289,11 @@ files:
289
289
  - lib/generators/templates/helpers/partials/quit_driver.tt
290
290
  - lib/generators/templates/helpers/partials/screenshot.tt
291
291
  - lib/generators/templates/helpers/partials/selenium_driver.tt
292
+ - lib/generators/templates/helpers/raider_element.tt
292
293
  - lib/generators/templates/helpers/session_state.tt
293
294
  - lib/generators/templates/helpers/spec_helper.tt
294
295
  - lib/generators/templates/helpers/video_helper.tt
296
+ - lib/generators/templates/helpers/wait_helper.tt
295
297
  - lib/ruby_raider.rb
296
298
  - lib/ruby_raider/ffmpeg.rb
297
299
  - lib/scaffolding/name_normalizer.rb
@@ -339,6 +341,14 @@ files:
339
341
  - sig/vendor/tty_prompt.rbs
340
342
  - spec/commands/raider_commands_spec.rb
341
343
  - spec/commands/scaffolding_commands_spec.rb
344
+ - spec/fixtures/watir_master/cucumber_watir/Readme.md.snapshot
345
+ - spec/fixtures/watir_master/cucumber_watir/features/step_definitions/login_steps.rb.snapshot
346
+ - spec/fixtures/watir_master/cucumber_watir/page_objects/abstract/page.rb.snapshot
347
+ - spec/fixtures/watir_master/cucumber_watir/page_objects/pages/login.rb.snapshot
348
+ - spec/fixtures/watir_master/rspec_watir/Readme.md.snapshot
349
+ - spec/fixtures/watir_master/rspec_watir/page_objects/abstract/page.rb.snapshot
350
+ - spec/fixtures/watir_master/rspec_watir/page_objects/pages/login.rb.snapshot
351
+ - spec/fixtures/watir_master/rspec_watir/spec/login_page_spec.rb.snapshot
342
352
  - spec/generators/fixtures/templates/test.tt
343
353
  - spec/generators/fixtures/templates/test_partial.tt
344
354
  - spec/generators/fixtures/video_helper_stubs/selenium-webdriver.rb
@@ -373,6 +383,9 @@ files:
373
383
  - spec/integration/generators/invoke_generators_spec.rb
374
384
  - spec/integration/generators/rspec_generator_spec.rb
375
385
  - spec/integration/helpers/session_state_spec.rb
386
+ - spec/integration/helpers/wait_helper_mobile_spec.rb
387
+ - spec/integration/helpers/wait_helper_spec.rb
388
+ - spec/integration/helpers/wait_helper_support.rb
376
389
  - spec/integration/scaffolding_e2e_spec.rb
377
390
  - spec/integration/settings_helper.rb
378
391
  - spec/integration/spec_helper.rb