ruby_raider 3.9.0 → 3.11.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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +18 -29
  3. data/.github/workflows/security.yml +68 -0
  4. data/.rubocop.yml +28 -0
  5. data/README.md +23 -4
  6. data/docs/superpowers/plans/2026-10-25-failure-video-replay.md +400 -0
  7. data/docs/superpowers/plans/2026-10-26-parity-cleanup.md +233 -0
  8. data/docs/superpowers/plans/2026-10-28-failure-card.md +295 -0
  9. data/docs/superpowers/specs/2026-10-25-failure-video-replay-design.md +214 -0
  10. data/docs/superpowers/specs/2026-10-28-failure-card-design.md +210 -0
  11. data/lib/commands/scaffolding_commands.rb +3 -3
  12. data/lib/commands/utility_commands.rb +36 -6
  13. data/lib/generators/cucumber/templates/cucumber.tt +1 -1
  14. data/lib/generators/cucumber/templates/feature.tt +5 -0
  15. data/lib/generators/cucumber/templates/partials/appium_env.tt +6 -0
  16. data/lib/generators/cucumber/templates/partials/selenium_env.tt +22 -0
  17. data/lib/generators/cucumber/templates/partials/watir_env.tt +22 -0
  18. data/lib/generators/cucumber/templates/partials/web_steps.tt +4 -0
  19. data/lib/generators/helper_generator.rb +12 -1
  20. data/lib/generators/infrastructure/azure_generator.rb +1 -0
  21. data/lib/generators/infrastructure/github_generator.rb +1 -0
  22. data/lib/generators/infrastructure/templates/azure_pipelines.tt +12 -1
  23. data/lib/generators/infrastructure/templates/github.tt +12 -0
  24. data/lib/generators/infrastructure/templates/github_appium.tt +23 -0
  25. data/lib/generators/invoke_generators.rb +20 -2
  26. data/lib/generators/rspec/rspec_generator.rb +0 -1
  27. data/lib/generators/rspec/templates/spec.tt +12 -0
  28. data/lib/generators/templates/common/gemfile.tt +1 -1
  29. data/lib/generators/templates/common/git_ignore.tt +7 -1
  30. data/lib/generators/templates/common/partials/mobile_config.tt +5 -0
  31. data/lib/generators/templates/common/partials/web_config.tt +9 -1
  32. data/lib/generators/templates/common/read_me.tt +84 -2
  33. data/lib/generators/templates/helpers/browser_helper.tt +5 -1
  34. data/lib/generators/templates/helpers/driver_helper.tt +1 -0
  35. data/lib/generators/templates/helpers/partials/selenium_driver.tt +4 -1
  36. data/lib/generators/templates/helpers/session_state.tt +206 -0
  37. data/lib/generators/templates/helpers/spec_helper.tt +28 -0
  38. data/lib/generators/templates/helpers/video_helper.tt +338 -171
  39. data/lib/ruby_raider/ffmpeg.rb +280 -0
  40. data/lib/ruby_raider.rb +2 -3
  41. data/lib/scaffolding/project_detector.rb +1 -3
  42. data/lib/scaffolding/scaffolding.rb +0 -1
  43. data/lib/utilities/utilities.rb +15 -2
  44. data/lib/version +1 -1
  45. data/ruby_raider.gemspec +4 -1
  46. data/sig/commands/utility_commands.rbs +4 -1
  47. data/sig/generators/invoke_generators.rbs +2 -3
  48. data/sig/ruby_raider/ffmpeg.rbs +23 -0
  49. data/sig/utilities/utilities.rbs +1 -0
  50. data/spec/commands/raider_commands_spec.rb +56 -1
  51. data/spec/generators/fixtures/video_helper_stubs/selenium-webdriver.rb +28 -0
  52. data/spec/generators/video_helper_spec.rb +608 -0
  53. data/spec/integration/commands/browser_update_after_creation_spec.rb +7 -6
  54. data/spec/integration/commands/utility_commands_spec.rb +2 -2
  55. data/spec/integration/content/azure_content_spec.rb +33 -0
  56. data/spec/integration/content/ci_content_spec.rb +54 -0
  57. data/spec/integration/content/common_content_spec.rb +35 -0
  58. data/spec/integration/content/config_content_spec.rb +32 -0
  59. data/spec/integration/content/cucumber_reporter_content_spec.rb +47 -1
  60. data/spec/integration/content/gemfile_content_spec.rb +2 -3
  61. data/spec/integration/content/helper_content_spec.rb +178 -0
  62. data/spec/integration/content/page_content_spec.rb +0 -1
  63. data/spec/integration/content/readme_content_spec.rb +79 -0
  64. data/spec/integration/content/rspec_reporter_content_spec.rb +2 -2
  65. data/spec/integration/content/syntax_validation_spec.rb +15 -0
  66. data/spec/integration/content/test_content_spec.rb +27 -3
  67. data/spec/integration/end_to_end_features_spec.rb +0 -2
  68. data/spec/integration/end_to_end_spec.rb +275 -26
  69. data/spec/integration/generators/azure_generator_spec.rb +7 -6
  70. data/spec/integration/generators/common_generator_spec.rb +1 -1
  71. data/spec/integration/generators/helpers_generator_spec.rb +22 -0
  72. data/spec/integration/generators/invoke_generators_spec.rb +52 -0
  73. data/spec/integration/helpers/session_state_spec.rb +428 -0
  74. data/spec/integration/scaffolding_e2e_spec.rb +13 -24
  75. data/spec/scaffolding/scaffold_project_detector_spec.rb +0 -1
  76. data/spec/scaffolding/scaffolding_features_spec.rb +0 -1
  77. data/spec/system/selenium_spec.rb +0 -1
  78. data/spec/system/watir_spec.rb +0 -1
  79. data/spec/utilities/ffmpeg_spec.rb +424 -0
  80. data/spec/utilities/utilities_spec.rb +19 -2
  81. data/spec/utilities/video_command_spec.rb +120 -0
  82. metadata +65 -11
  83. data/lib/commands/adopt_commands.rb +0 -42
  84. data/lib/commands/loaded_commands.rb +0 -9
  85. data/lib/commands/plugin_commands.rb +0 -32
  86. data/sig/commands/adopt_commands.rbs +0 -8
  87. data/sig/commands/loaded_commands.rbs +0 -5
  88. data/sig/commands/plugin_commands.rbs +0 -9
metadata CHANGED
@@ -1,14 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.0
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 2026-10-25 00:00:00.000000000 Z
11
+ date: 2026-10-31 00:00:00.000000000 Z
11
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler-audit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
12
27
  - !ruby/object:Gem::Dependency
13
28
  name: rake
14
29
  requirement: !ruby/object:Gem::Requirement
@@ -29,14 +44,14 @@ dependencies:
29
44
  requirements:
30
45
  - - "~>"
31
46
  - !ruby/object:Gem::Version
32
- version: 6.1.0
47
+ version: '6.5'
33
48
  type: :development
34
49
  prerelease: false
35
50
  version_requirements: !ruby/object:Gem::Requirement
36
51
  requirements:
37
52
  - - "~>"
38
53
  - !ruby/object:Gem::Version
39
- version: 6.1.0
54
+ version: '6.5'
40
55
  - !ruby/object:Gem::Dependency
41
56
  name: rspec
42
57
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +108,34 @@ dependencies:
93
108
  - - "~>"
94
109
  - !ruby/object:Gem::Version
95
110
  version: 2.9.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: ruby_audit
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.1'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: selenium-webdriver
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.0'
96
139
  - !ruby/object:Gem::Dependency
97
140
  name: steep
98
141
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +194,7 @@ files:
151
194
  - ".github/workflows/reek.yml"
152
195
  - ".github/workflows/release.yml"
153
196
  - ".github/workflows/rubocop.yml"
197
+ - ".github/workflows/security.yml"
154
198
  - ".github/workflows/steep.yml"
155
199
  - ".github/workflows/system_tests.yml"
156
200
  - ".gitignore"
@@ -169,9 +213,11 @@ files:
169
213
  - assets/ruby_raider_logo.svg
170
214
  - bin/raider
171
215
  - bin/release
172
- - lib/commands/adopt_commands.rb
173
- - lib/commands/loaded_commands.rb
174
- - lib/commands/plugin_commands.rb
216
+ - docs/superpowers/plans/2026-10-25-failure-video-replay.md
217
+ - docs/superpowers/plans/2026-10-26-parity-cleanup.md
218
+ - docs/superpowers/plans/2026-10-28-failure-card.md
219
+ - docs/superpowers/specs/2026-10-25-failure-video-replay-design.md
220
+ - docs/superpowers/specs/2026-10-28-failure-card-design.md
175
221
  - lib/commands/scaffolding_commands.rb
176
222
  - lib/commands/utility_commands.rb
177
223
  - lib/generators/automation/automation_generator.rb
@@ -243,9 +289,11 @@ files:
243
289
  - lib/generators/templates/helpers/partials/quit_driver.tt
244
290
  - lib/generators/templates/helpers/partials/screenshot.tt
245
291
  - lib/generators/templates/helpers/partials/selenium_driver.tt
292
+ - lib/generators/templates/helpers/session_state.tt
246
293
  - lib/generators/templates/helpers/spec_helper.tt
247
294
  - lib/generators/templates/helpers/video_helper.tt
248
295
  - lib/ruby_raider.rb
296
+ - lib/ruby_raider/ffmpeg.rb
249
297
  - lib/scaffolding/name_normalizer.rb
250
298
  - lib/scaffolding/project_detector.rb
251
299
  - lib/scaffolding/scaffolding.rb
@@ -262,9 +310,6 @@ files:
262
310
  - lib/version
263
311
  - plugins.yml
264
312
  - ruby_raider.gemspec
265
- - sig/commands/adopt_commands.rbs
266
- - sig/commands/loaded_commands.rbs
267
- - sig/commands/plugin_commands.rbs
268
313
  - sig/commands/scaffolding_commands.rbs
269
314
  - sig/commands/utility_commands.rbs
270
315
  - sig/generators/automation/automation_generator.rbs
@@ -282,6 +327,7 @@ files:
282
327
  - sig/generators/template_renderer/partial_resolver.rbs
283
328
  - sig/generators/template_renderer/template_error.rbs
284
329
  - sig/ruby_raider.rbs
330
+ - sig/ruby_raider/ffmpeg.rbs
285
331
  - sig/scaffolding/name_normalizer.rbs
286
332
  - sig/scaffolding/project_detector.rbs
287
333
  - sig/scaffolding/scaffolding.rbs
@@ -295,7 +341,9 @@ files:
295
341
  - spec/commands/scaffolding_commands_spec.rb
296
342
  - spec/generators/fixtures/templates/test.tt
297
343
  - spec/generators/fixtures/templates/test_partial.tt
344
+ - spec/generators/fixtures/video_helper_stubs/selenium-webdriver.rb
298
345
  - spec/generators/template_renderer_spec.rb
346
+ - spec/generators/video_helper_spec.rb
299
347
  - spec/integration/commands/browser_update_after_creation_spec.rb
300
348
  - spec/integration/commands/scaffolding_commands_spec.rb
301
349
  - spec/integration/commands/utility_commands_spec.rb
@@ -322,7 +370,9 @@ files:
322
370
  - spec/integration/generators/cucumber_generator_spec.rb
323
371
  - spec/integration/generators/github_generator_spec.rb
324
372
  - spec/integration/generators/helpers_generator_spec.rb
373
+ - spec/integration/generators/invoke_generators_spec.rb
325
374
  - spec/integration/generators/rspec_generator_spec.rb
375
+ - spec/integration/helpers/session_state_spec.rb
326
376
  - spec/integration/scaffolding_e2e_spec.rb
327
377
  - spec/integration/settings_helper.rb
328
378
  - spec/integration/spec_helper.rb
@@ -334,12 +384,15 @@ files:
334
384
  - spec/system/support/system_test_helper.rb
335
385
  - spec/system/watir_spec.rb
336
386
  - spec/utilities/desktop_downloader_spec.rb
387
+ - spec/utilities/ffmpeg_spec.rb
337
388
  - spec/utilities/headless_config_spec.rb
338
389
  - spec/utilities/utilities_spec.rb
390
+ - spec/utilities/video_command_spec.rb
339
391
  homepage: https://github.com/RubyRaider/ruby_raider
340
392
  licenses:
341
393
  - MIT
342
394
  metadata: {}
395
+ post_install_message:
343
396
  rdoc_options: []
344
397
  require_paths:
345
398
  - lib
@@ -354,7 +407,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
354
407
  - !ruby/object:Gem::Version
355
408
  version: '0'
356
409
  requirements: []
357
- rubygems_version: 3.6.2
410
+ rubygems_version: 3.5.22
411
+ signing_key:
358
412
  specification_version: 4
359
413
  summary: A gem to make setup and start of UI automation projects easier
360
414
  test_files: []
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'thor'
4
- require_relative '../adopter/adopt_menu'
5
-
6
- class AdoptCommands < Thor
7
- desc 'project [SOURCE_PATH]', 'Adopts an existing test project into Ruby Raider conventions'
8
- option :parameters,
9
- type: :hash, required: false,
10
- desc: 'Parameters to bypass the menu (output_path, target_automation, target_framework, ci_platform)',
11
- aliases: 'p'
12
-
13
- def project(source_path)
14
- params = options[:parameters]
15
- if params
16
- parsed = params.transform_keys(&:to_sym)
17
- parsed[:source_path] = source_path
18
- result = Adopter::AdoptMenu.adopt(parsed)
19
- print_programmatic_results(result)
20
- else
21
- Adopter::AdoptMenu.new.run
22
- end
23
- rescue Adopter::MobileProjectError => e
24
- puts "Error: #{e.message}"
25
- exit 1
26
- rescue ArgumentError => e
27
- puts "Invalid parameters: #{e.message}"
28
- exit 1
29
- end
30
-
31
- private
32
-
33
- def print_programmatic_results(result)
34
- plan = result[:plan]
35
- results = result[:results]
36
- puts "Adoption complete: #{results[:pages]} pages, #{results[:tests]} tests, " \
37
- "#{results[:features]} features, #{results[:steps]} steps"
38
- puts "Warnings: #{plan.warnings.join('; ')}" unless plan.warnings.empty?
39
- puts "Errors: #{results[:errors].join('; ')}" unless results[:errors].empty?
40
- puts "Output: #{plan.output_path}"
41
- end
42
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'thor'
4
- require_relative '../plugin/plugin'
5
-
6
- module RubyRaider
7
- class LoadedCommands < Thor
8
- end
9
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'thor'
4
- require_relative '../plugin/plugin'
5
-
6
- module RubyRaider
7
- class PluginCommands < Thor
8
- desc 'add [NAME]', 'Adds a plugin to your project'
9
-
10
- def add(plugin_name)
11
- Plugin.add_plugin(plugin_name)
12
- end
13
-
14
- desc 'delete [NAME]', 'Deletes a plugin from your project'
15
-
16
- def delete(plugin_name)
17
- Plugin.delete_plugin(plugin_name)
18
- end
19
-
20
- desc 'local', 'Lists all the plugin in your project'
21
-
22
- def local
23
- pp Plugin.installed_plugins
24
- end
25
-
26
- desc 'list', 'Lists all the available plugin'
27
-
28
- def list
29
- pp Plugin.plugins
30
- end
31
- end
32
- end
@@ -1,8 +0,0 @@
1
- # Type definitions for AdoptCommands
2
- class AdoptCommands < Thor
3
- def project: (String source_path) -> void
4
-
5
- private
6
-
7
- def print_programmatic_results: (Hash[Symbol, untyped] result) -> void
8
- end
@@ -1,5 +0,0 @@
1
- # Type definitions for LoadedCommands
2
- module RubyRaider
3
- class LoadedCommands < Thor
4
- end
5
- end
@@ -1,9 +0,0 @@
1
- # Type definitions for PluginCommands
2
- module RubyRaider
3
- class PluginCommands < Thor
4
- def add: (String plugin_name) -> void
5
- def delete: (String plugin_name) -> void
6
- def local: () -> void
7
- def list: () -> void
8
- end
9
- end