ruby_raider 2.0.0 → 3.0.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 (224) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/e2e_tests.yml +58 -0
  3. data/.github/workflows/steep.yml +21 -0
  4. data/.gitignore +1 -1
  5. data/.reek.yml +46 -4
  6. data/.ruby-version +1 -1
  7. data/README.md +138 -77
  8. data/Steepfile +22 -0
  9. data/assets/ruby_raider_logo.svg +51 -0
  10. data/lib/adopter/adopt_menu.rb +11 -15
  11. data/lib/adopter/converters/base_converter.rb +1 -2
  12. data/lib/adopter/converters/identity_converter.rb +3 -6
  13. data/lib/adopter/migration_plan.rb +0 -1
  14. data/lib/adopter/plan_builder.rb +2 -5
  15. data/lib/adopter/project_analyzer.rb +1 -5
  16. data/lib/adopter/project_detector.rb +3 -5
  17. data/lib/commands/adopt_commands.rb +0 -1
  18. data/lib/commands/plugin_commands.rb +0 -2
  19. data/lib/commands/scaffolding_commands.rb +220 -37
  20. data/lib/commands/utility_commands.rb +82 -2
  21. data/lib/generators/automation/automation_generator.rb +0 -7
  22. data/lib/generators/automation/templates/partials/element.tt +1 -1
  23. data/lib/generators/automation/templates/partials/initialize_selector.tt +0 -7
  24. data/lib/generators/automation/templates/partials/url_methods.tt +0 -1
  25. data/lib/generators/common_generator.rb +12 -0
  26. data/lib/generators/cucumber/cucumber_generator.rb +36 -0
  27. data/lib/generators/cucumber/templates/accessibility_feature.tt +5 -0
  28. data/lib/generators/cucumber/templates/accessibility_steps.tt +21 -0
  29. data/lib/generators/cucumber/templates/cucumber.tt +8 -1
  30. data/lib/generators/cucumber/templates/feature.tt +0 -4
  31. data/lib/generators/cucumber/templates/partials/appium_env.tt +5 -0
  32. data/lib/generators/cucumber/templates/partials/capybara_env.tt +19 -1
  33. data/lib/generators/cucumber/templates/partials/driver_world.tt +1 -4
  34. data/lib/generators/cucumber/templates/partials/selenium_env.tt +22 -35
  35. data/lib/generators/cucumber/templates/partials/watir_env.tt +20 -1
  36. data/lib/generators/cucumber/templates/partials/web_steps.tt +6 -12
  37. data/lib/generators/cucumber/templates/performance_feature.tt +5 -0
  38. data/lib/generators/cucumber/templates/performance_steps.tt +17 -0
  39. data/lib/generators/cucumber/templates/visual_feature.tt +5 -0
  40. data/lib/generators/cucumber/templates/visual_steps.tt +19 -0
  41. data/lib/generators/generator.rb +38 -7
  42. data/lib/generators/helper_generator.rb +24 -7
  43. data/lib/generators/infrastructure/templates/github.tt +1 -1
  44. data/lib/generators/infrastructure/templates/github_appium.tt +2 -2
  45. data/lib/generators/infrastructure/templates/gitlab.tt +1 -1
  46. data/lib/generators/invoke_generators.rb +42 -9
  47. data/lib/generators/menu_generator.rb +120 -11
  48. data/lib/generators/minitest/minitest_generator.rb +16 -4
  49. data/lib/generators/minitest/templates/accessibility_test.tt +26 -0
  50. data/lib/generators/minitest/templates/performance_test.tt +18 -0
  51. data/lib/generators/minitest/templates/test.tt +5 -34
  52. data/lib/generators/minitest/templates/visual_test.tt +23 -0
  53. data/lib/generators/rspec/rspec_generator.rb +16 -4
  54. data/lib/generators/rspec/templates/accessibility_spec.tt +25 -0
  55. data/lib/generators/rspec/templates/performance_spec.tt +18 -0
  56. data/lib/generators/rspec/templates/spec.tt +5 -35
  57. data/lib/generators/rspec/templates/visual_spec.tt +20 -0
  58. data/lib/generators/template_renderer/partial_cache.rb +11 -1
  59. data/lib/generators/template_renderer/partial_resolver.rb +17 -10
  60. data/lib/generators/template_renderer.rb +17 -1
  61. data/lib/generators/templates/common/gemfile.tt +21 -6
  62. data/lib/generators/templates/common/git_ignore.tt +6 -1
  63. data/lib/generators/templates/common/partials/mobile_config.tt +5 -1
  64. data/lib/generators/templates/common/partials/web_config.tt +16 -7
  65. data/lib/generators/templates/common/rakefile.tt +36 -0
  66. data/lib/generators/templates/common/read_me.tt +41 -91
  67. data/lib/generators/templates/common/rspec.tt +3 -0
  68. data/lib/generators/templates/common/ruby_version.tt +1 -0
  69. data/lib/generators/templates/helpers/allure_helper.tt +11 -0
  70. data/lib/generators/templates/helpers/browser_helper.tt +12 -2
  71. data/lib/generators/templates/helpers/capybara_helper.tt +5 -1
  72. data/lib/generators/templates/helpers/debug_helper.tt +190 -0
  73. data/lib/generators/templates/helpers/driver_helper.tt +2 -10
  74. data/lib/generators/templates/helpers/partials/appium_driver.tt +0 -2
  75. data/lib/generators/templates/helpers/partials/debug_diagnostics.tt +7 -0
  76. data/lib/generators/templates/helpers/partials/debug_start.tt +7 -0
  77. data/lib/generators/templates/helpers/partials/driver_and_options.tt +1 -3
  78. data/lib/generators/templates/helpers/partials/selenium_driver.tt +8 -7
  79. data/lib/generators/templates/helpers/partials/video_start.tt +9 -0
  80. data/lib/generators/templates/helpers/partials/video_stop.tt +4 -0
  81. data/lib/generators/templates/helpers/performance_helper.tt +57 -0
  82. data/lib/generators/templates/helpers/spec_helper.tt +57 -8
  83. data/lib/generators/templates/helpers/test_helper.tt +69 -1
  84. data/lib/generators/templates/helpers/video_helper.tt +270 -0
  85. data/lib/generators/templates/helpers/visual_helper.tt +39 -46
  86. data/lib/llm/client.rb +79 -0
  87. data/lib/llm/config.rb +57 -0
  88. data/lib/llm/prompts.rb +84 -0
  89. data/lib/llm/provider.rb +27 -0
  90. data/lib/llm/providers/anthropic_provider.rb +43 -0
  91. data/lib/llm/providers/ollama_provider.rb +56 -0
  92. data/lib/llm/providers/openai_provider.rb +42 -0
  93. data/lib/llm/response_parser.rb +67 -0
  94. data/lib/plugin/plugin.rb +22 -20
  95. data/lib/plugin/plugin_exposer.rb +16 -38
  96. data/lib/ruby_raider.rb +47 -12
  97. data/lib/scaffolding/crud_generator.rb +94 -0
  98. data/lib/scaffolding/dry_run_presenter.rb +16 -0
  99. data/lib/scaffolding/name_normalizer.rb +63 -0
  100. data/lib/scaffolding/page_introspector.rb +45 -0
  101. data/lib/scaffolding/project_detector.rb +72 -0
  102. data/lib/scaffolding/scaffold_menu.rb +103 -0
  103. data/lib/scaffolding/scaffolding.rb +158 -11
  104. data/lib/scaffolding/templates/component.tt +30 -0
  105. data/lib/scaffolding/templates/feature.tt +4 -4
  106. data/lib/scaffolding/templates/helper.tt +15 -1
  107. data/lib/scaffolding/templates/page_from_url.tt +75 -0
  108. data/lib/scaffolding/templates/page_object.tt +50 -1
  109. data/lib/scaffolding/templates/spec.tt +33 -2
  110. data/lib/scaffolding/templates/spec_from_page.tt +31 -0
  111. data/lib/scaffolding/templates/spec_from_url.tt +46 -0
  112. data/lib/scaffolding/templates/steps.tt +17 -5
  113. data/lib/scaffolding/url_analyzer.rb +179 -0
  114. data/lib/utilities/desktop_downloader.rb +177 -0
  115. data/lib/utilities/logo.rb +83 -0
  116. data/lib/utilities/utilities.rb +53 -20
  117. data/lib/version +1 -1
  118. data/ruby_raider.gemspec +1 -0
  119. data/sig/adopter/adopt_menu.rbs +25 -0
  120. data/sig/adopter/converters/base_converter.rbs +23 -0
  121. data/sig/adopter/converters/identity_converter.rbs +16 -0
  122. data/sig/adopter/migration_plan.rbs +34 -0
  123. data/sig/adopter/migrator.rbs +21 -0
  124. data/sig/adopter/plan_builder.rbs +38 -0
  125. data/sig/adopter/project_analyzer.rbs +39 -0
  126. data/sig/adopter/project_detector.rbs +26 -0
  127. data/sig/commands/adopt_commands.rbs +8 -0
  128. data/sig/commands/loaded_commands.rbs +5 -0
  129. data/sig/commands/plugin_commands.rbs +9 -0
  130. data/sig/commands/scaffolding_commands.rbs +28 -0
  131. data/sig/commands/utility_commands.rbs +21 -0
  132. data/sig/generators/automation/automation_generator.rbs +20 -0
  133. data/sig/generators/common_generator.rbs +12 -0
  134. data/sig/generators/cucumber/cucumber_generator.rbs +16 -0
  135. data/sig/generators/generator.rbs +40 -0
  136. data/sig/generators/helper_generator.rbs +18 -0
  137. data/sig/generators/infrastructure/github_generator.rbs +5 -0
  138. data/sig/generators/infrastructure/gitlab_generator.rbs +4 -0
  139. data/sig/generators/invoke_generators.rbs +10 -0
  140. data/sig/generators/menu_generator.rbs +29 -0
  141. data/sig/generators/minitest/minitest_generator.rbs +8 -0
  142. data/sig/generators/rspec/rspec_generator.rbs +8 -0
  143. data/sig/generators/template_renderer/partial_cache.rbs +20 -0
  144. data/sig/generators/template_renderer/partial_resolver.rbs +20 -0
  145. data/sig/generators/template_renderer/template_error.rbs +19 -0
  146. data/sig/generators/template_renderer.rbs +10 -0
  147. data/sig/llm/client.rbs +15 -0
  148. data/sig/llm/config.rbs +20 -0
  149. data/sig/llm/prompts.rbs +8 -0
  150. data/sig/llm/provider.rbs +12 -0
  151. data/sig/llm/providers/anthropic_provider.rbs +16 -0
  152. data/sig/llm/providers/ollama_provider.rbs +18 -0
  153. data/sig/llm/providers/openai_provider.rbs +16 -0
  154. data/sig/llm/response_parser.rbs +13 -0
  155. data/sig/plugin/plugin.rbs +24 -0
  156. data/sig/plugin/plugin_exposer.rbs +20 -0
  157. data/sig/ruby_raider.rbs +15 -0
  158. data/sig/scaffolding/crud_generator.rbs +16 -0
  159. data/sig/scaffolding/dry_run_presenter.rbs +4 -0
  160. data/sig/scaffolding/name_normalizer.rbs +17 -0
  161. data/sig/scaffolding/page_introspector.rbs +14 -0
  162. data/sig/scaffolding/project_detector.rbs +14 -0
  163. data/sig/scaffolding/scaffold_menu.rbs +18 -0
  164. data/sig/scaffolding/scaffolding.rbs +55 -0
  165. data/sig/scaffolding/url_analyzer.rbs +28 -0
  166. data/sig/utilities/desktop_downloader.rbs +23 -0
  167. data/sig/utilities/logger.rbs +13 -0
  168. data/sig/utilities/logo.rbs +16 -0
  169. data/sig/utilities/utilities.rbs +30 -0
  170. data/sig/vendor/thor.rbs +34 -0
  171. data/sig/vendor/tty_prompt.rbs +15 -0
  172. data/spec/adopter/adopt_menu_spec.rb +12 -12
  173. data/spec/adopter/migration_plan_spec.rb +1 -1
  174. data/spec/adopter/migrator_spec.rb +2 -2
  175. data/spec/adopter/project_detector_spec.rb +1 -1
  176. data/spec/commands/raider_commands_spec.rb +129 -0
  177. data/spec/generators/generator_spec.rb +23 -0
  178. data/spec/integration/commands/scaffolding_commands_spec.rb +1 -1
  179. data/spec/integration/commands/utility_commands_spec.rb +23 -3
  180. data/spec/integration/content/ci_content_spec.rb +119 -0
  181. data/spec/integration/content/common_content_spec.rb +288 -0
  182. data/spec/integration/content/config_content_spec.rb +175 -0
  183. data/spec/integration/content/content_helper.rb +32 -0
  184. data/spec/integration/content/gemfile_content_spec.rb +209 -0
  185. data/spec/integration/content/helper_content_spec.rb +485 -0
  186. data/spec/integration/content/page_content_spec.rb +259 -0
  187. data/spec/integration/content/reporter_content_spec.rb +236 -0
  188. data/spec/integration/content/skip_flags_content_spec.rb +206 -0
  189. data/spec/integration/content/syntax_validation_spec.rb +30 -0
  190. data/spec/integration/content/test_content_spec.rb +266 -0
  191. data/spec/integration/end_to_end_features_spec.rb +690 -0
  192. data/spec/integration/end_to_end_spec.rb +52 -16
  193. data/spec/integration/generators/automation_generator_spec.rb +0 -12
  194. data/spec/integration/generators/axe_addon_spec.rb +150 -0
  195. data/spec/integration/generators/common_generator_spec.rb +12 -13
  196. data/spec/integration/generators/config_features_spec.rb +155 -0
  197. data/spec/integration/generators/debug_helper_spec.rb +68 -0
  198. data/spec/integration/generators/helpers_generator_spec.rb +0 -12
  199. data/spec/integration/generators/lighthouse_addon_spec.rb +132 -0
  200. data/spec/integration/generators/minitest_generator_spec.rb +0 -6
  201. data/spec/integration/generators/reporter_spec.rb +159 -0
  202. data/spec/integration/generators/skip_flags_spec.rb +134 -0
  203. data/spec/integration/generators/visual_addon_spec.rb +148 -0
  204. data/spec/integration/settings_helper.rb +0 -3
  205. data/spec/integration/spec_helper.rb +30 -13
  206. data/spec/llm/client_spec.rb +79 -0
  207. data/spec/llm/config_spec.rb +92 -0
  208. data/spec/llm/prompts_spec.rb +49 -0
  209. data/spec/llm/response_parser_spec.rb +92 -0
  210. data/spec/menus/adopter_adopt_menu_spec.rb +97 -0
  211. data/spec/menus/menu_generator_spec.rb +263 -0
  212. data/spec/scaffolding/name_normalizer_spec.rb +113 -0
  213. data/spec/scaffolding/page_introspector_spec.rb +82 -0
  214. data/spec/scaffolding/scaffold_project_detector_spec.rb +104 -0
  215. data/spec/scaffolding/scaffolding_features_spec.rb +311 -0
  216. data/spec/scaffolding/url_analyzer_spec.rb +110 -0
  217. data/spec/system/adopt_matrix_spec.rb +537 -0
  218. data/spec/system/adopt_spec.rb +225 -0
  219. data/spec/system/support/system_test_helper.rb +0 -2
  220. data/spec/utilities/desktop_downloader_spec.rb +92 -0
  221. metadata +150 -5
  222. data/lib/generators/automation/templates/visual_options.tt +0 -16
  223. data/lib/generators/templates/helpers/partials/axe_driver.tt +0 -10
  224. data/lib/generators/templates/helpers/visual_spec_helper.tt +0 -35
@@ -0,0 +1,38 @@
1
+ # Type definitions for Adopter::PlanBuilder
2
+ module Adopter
3
+ class PlanBuilder
4
+ def initialize: (Hash[Symbol, untyped] analysis, Hash[Symbol, untyped] params) -> void
5
+ def build: () -> MigrationPlan
6
+
7
+ private
8
+
9
+ def build_skeleton_structure: () -> Hash[Symbol, untyped]
10
+ def plan_page_conversions: () -> Array[ConvertedFile]
11
+ def plan_test_conversions: () -> Array[ConvertedFile]
12
+ def plan_feature_conversions: () -> Array[ConvertedFile]
13
+ def plan_step_conversions: () -> Array[ConvertedFile]
14
+ def convert_page: (String content, Hash[Symbol, untyped] page) -> String
15
+ def convert_page_dsl: (String content, Hash[Symbol, untyped] page, Symbol source_dsl, String target) -> String
16
+ def find_page_converter: (Symbol source_dsl, String target) -> (^(String, Hash[Symbol, untyped]) -> String)?
17
+ def page_converters: () -> Hash[Symbol, ^(String, Hash[Symbol, untyped]) -> String]
18
+ def convert_test: (String content, Hash[Symbol, untyped] test) -> String
19
+ def convert_test_framework: (String content, Hash[Symbol, untyped] test, Symbol source_framework, String target) -> String
20
+ def find_test_converter: (Symbol source_framework, String target) -> (^(String, Hash[Symbol, untyped]) -> String)?
21
+ def test_converters: () -> Hash[Symbol, ^(String, Hash[Symbol, untyped]) -> String]
22
+ def identity_converter: () -> Converters::IdentityConverter
23
+ def restructure_page: (String content) -> String
24
+ def restructure_test: (String content) -> String
25
+ def convert_step_page_references: (String content) -> String
26
+ def raider_page_path: (String class_name) -> String
27
+ def raider_test_path: (Hash[Symbol, untyped] test) -> String
28
+ def raider_feature_path: (String source_path) -> String
29
+ def raider_step_path: (String source_path) -> String
30
+ def extract_config_overrides: () -> Hash[String, untyped]
31
+ def same_automation_dsl?: (Symbol source_dsl, String target) -> bool
32
+ def normalize_dsl: (Symbol dsl) -> String
33
+ def target_cucumber?: () -> bool
34
+ def page_conversion_notes: () -> String
35
+ def test_conversion_notes: (Symbol source_type) -> String
36
+ def add_warning: (String message) -> void
37
+ end
38
+ end
@@ -0,0 +1,39 @@
1
+ # Type definitions for Adopter::ProjectAnalyzer
2
+ module Adopter
3
+ class MobileProjectError < StandardError
4
+ end
5
+
6
+ class ProjectAnalyzer
7
+ KNOWN_FRAMEWORK_GEMS: Array[String]
8
+ PAGE_DSL_PATTERNS: Hash[Symbol, Regexp]
9
+ PAGE_CLASS_PATTERNS: Array[Regexp]
10
+ TEST_FILE_PATTERNS: Hash[Symbol, Hash[Symbol, untyped]]
11
+ HELPER_ROLES: Hash[Symbol, Regexp]
12
+
13
+ def initialize: (String source_path, ?Hash[Symbol, untyped]? overrides) -> void
14
+ def analyze: () -> Hash[Symbol, untyped]
15
+
16
+ private
17
+
18
+ def validate_web_only!: (Hash[Symbol, untyped] detection) -> void
19
+ def discover_pages: () -> Array[Hash[Symbol, untyped]]
20
+ def discover_tests: () -> Array[Hash[Symbol, untyped]]
21
+ def discover_helpers: () -> Array[Hash[Symbol, untyped]]
22
+ def discover_features: () -> Array[Hash[Symbol, untyped]]
23
+ def discover_step_definitions: () -> Array[Hash[Symbol, untyped]]
24
+ def discover_custom_gems: () -> Array[String]
25
+ def detect_page_dsl: () -> Symbol
26
+ def detect_page_dir: () -> String?
27
+ def ruby_files_in: (String dir) -> Array[String]
28
+ def relative_path: (String absolute) -> String
29
+ def page_like?: (String content) -> bool
30
+ def extract_class_name: (String content) -> String?
31
+ def extract_base_class: (String content) -> String?
32
+ def extract_public_methods: (String content) -> Array[String]
33
+ def extract_test_methods: (String content, Symbol type) -> Array[String]
34
+ def extract_modules: (String content) -> Array[String]
35
+ def detect_helper_role: (String content) -> Symbol
36
+ def count_scenarios: (String content) -> Integer
37
+ def count_steps: (String content) -> Integer
38
+ end
39
+ end
@@ -0,0 +1,26 @@
1
+ # Type definitions for Adopter::ProjectDetector
2
+ module Adopter
3
+ module ProjectDetector
4
+ GEM_AUTOMATION_MAP: Hash[String, String]
5
+ GEM_FRAMEWORK_MAP: Hash[String, String]
6
+ BROWSERS: Array[String]
7
+
8
+ def self?.detect: (String path) -> Hash[Symbol, String?]
9
+ def self?.detect_automation: (String path) -> String?
10
+ def self?.detect_framework: (String path) -> String?
11
+ def self?.detect_page_path: (String path) -> String?
12
+ def self?.detect_spec_path: (String path) -> String?
13
+ def self?.detect_feature_path: (String path) -> String?
14
+ def self?.detect_helper_path: (String path) -> String?
15
+ def self?.detect_browser: (String path) -> String?
16
+ def self?.detect_url: (String path) -> String?
17
+ def self?.detect_ci_platform: (String path) -> String?
18
+ def self?.parse_gemfile: (String path) -> Array[String]
19
+
20
+ private
21
+
22
+ def self?.detect_automation_from_requires: (String path) -> String?
23
+ def self?.find_existing_dir: (String path, Array[String] candidates) -> String?
24
+ def self?.helper_and_config_files: (String path) -> Array[String]
25
+ end
26
+ end
@@ -0,0 +1,8 @@
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
@@ -0,0 +1,5 @@
1
+ # Type definitions for LoadedCommands
2
+ module RubyRaider
3
+ class LoadedCommands < Thor
4
+ end
5
+ end
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,28 @@
1
+ # Type definitions for ScaffoldingCommands
2
+ class ScaffoldingCommands < Thor
3
+ def page: (String name) -> void
4
+ def feature: (String name) -> void
5
+ def spec: (String name) -> void
6
+ def helper: (String name) -> void
7
+ def steps: (String name) -> void
8
+ def component: (String name) -> void
9
+ def scaffold: (*String names) -> void
10
+ def destroy: (*String names) -> void
11
+ def from_url: (String url) -> void
12
+
13
+ private
14
+
15
+ def load_config_path: (String type) -> String?
16
+ def delete_scaffolding: (String name, String type) -> void
17
+ def generate_scaffolding: (String name, String type, String? path, ?uses: Array[String]?) -> void
18
+ def dry_run_preview: (String name, String type) -> void
19
+ def generate_default_scaffold: (String name) -> void
20
+ def generate_selected_components: (String name, Array[String] components) -> void
21
+ def generate_crud: (String name) -> void
22
+ def generate_spec_from_page: (String name, String source_file, ?ai: bool) -> void
23
+ def generate_model_data: (String name) -> void
24
+ def model_template: (String name) -> String
25
+ def destroy_scaffold: (String name, ?Array[String]? components) -> void
26
+ def detect_scaffold_types: () -> Array[String]
27
+ def interactive_scaffold: () -> void
28
+ end
@@ -0,0 +1,21 @@
1
+ # Type definitions for UtilityCommands
2
+ class UtilityCommands < Thor
3
+ def path: (String default_path) -> void
4
+ def url: (String default_url) -> void
5
+ def browser: (?String? default_browser) -> void
6
+ def browser_options: (*String opts) -> void
7
+ def raid: () -> void
8
+ def config: () -> void
9
+ def timeout: (String seconds) -> void
10
+ def viewport: (String dimensions) -> void
11
+ def platform: (String platform) -> void
12
+ def debug: (String toggle) -> void
13
+ def start_appium: () -> void
14
+ def desktop: () -> void
15
+ def llm: (?String? provider) -> void
16
+
17
+ private
18
+
19
+ def configure_llm: (String provider) -> void
20
+ def show_llm_status: () -> void
21
+ end
@@ -0,0 +1,20 @@
1
+ # Type definitions for AutomationGenerator
2
+ class AutomationGenerator < Generator
3
+ def generate_automation_files: () -> void
4
+
5
+ private
6
+
7
+ def generate_pages: () -> void
8
+ def generate_components: () -> void
9
+ def generate_model_files: () -> void
10
+ def generate_abstract_page: () -> void
11
+ def generate_abstract_component: () -> void
12
+ def generate_appium_settings: () -> void
13
+ def generate_login_page: () -> void
14
+ def generate_account_page: () -> void
15
+ def generate_home_page: () -> void
16
+ def generate_pdp_page: () -> void
17
+ def generate_header_component: () -> void
18
+ def generate_model_factory: () -> void
19
+ def generate_model_data: () -> void
20
+ end
@@ -0,0 +1,12 @@
1
+ # Type definitions for CommonGenerator
2
+ class CommonGenerator < Generator
3
+ def generate_readme_file: () -> void
4
+ def generate_config_file: () -> void
5
+ def generate_rake_file: () -> void
6
+ def generate_gemfile: () -> void
7
+ def generate_reek_file: () -> void
8
+ def generate_rubocop_file: () -> void
9
+ def generate_gitignore_file: () -> void
10
+ def generate_rspec_file: () -> void
11
+ def create_allure_folder: () -> void
12
+ end
@@ -0,0 +1,16 @@
1
+ # Type definitions for CucumberGenerator
2
+ class CucumberGenerator < Generator
3
+ def generate_feature: () -> void
4
+ def generate_steps: () -> void
5
+ def generate_user_factory: () -> void
6
+ def generate_env_file: () -> void
7
+ def generate_world: () -> void
8
+ def generate_cucumber_file: () -> void
9
+ def generate_visual_feature: () -> void
10
+ def generate_visual_steps: () -> void
11
+ def generate_accessibility_feature: () -> void
12
+ def generate_accessibility_steps: () -> void
13
+ def generate_performance_feature: () -> void
14
+ def generate_performance_steps: () -> void
15
+ def template_name: () -> String
16
+ end
@@ -0,0 +1,40 @@
1
+ # Type definitions for the base Generator class
2
+ class Generator < Thor::Group
3
+ include Thor::Actions
4
+ include TemplateRenderer
5
+
6
+ def self.source_paths: () -> Array[String]
7
+ def self.clear_template_cache: () -> void
8
+ def self.template_cache_stats: () -> Hash[Symbol, untyped]
9
+
10
+ # Predicate methods for framework/automation detection
11
+ def cucumber?: () -> bool
12
+ def cross_platform?: () -> bool
13
+ def mobile?: () -> bool
14
+ def single_platform?: () -> bool
15
+ def ios?: () -> bool
16
+ def android?: () -> bool
17
+ def rspec?: () -> bool
18
+ def minitest?: () -> bool
19
+ def selenium?: () -> bool
20
+ def capybara?: () -> bool
21
+ def watir?: () -> bool
22
+ def web?: () -> bool
23
+ def selenium_based?: () -> bool
24
+
25
+ # Add-on predicates
26
+ def axe_addon?: () -> bool
27
+ def visual_addon?: () -> bool
28
+ def lighthouse_addon?: () -> bool
29
+
30
+ # Skip/reporter predicates
31
+ def skip_allure?: () -> bool
32
+ def skip_video?: () -> bool
33
+ def allure_reporter?: () -> bool
34
+ def junit_reporter?: () -> bool
35
+ def json_reporter?: () -> bool
36
+
37
+ private
38
+
39
+ def _initializer: () -> Array[untyped]
40
+ end
@@ -0,0 +1,18 @@
1
+ # Type definitions for HelpersGenerator
2
+ class HelpersGenerator < Generator
3
+ def generate_helpers: () -> void
4
+
5
+ private
6
+
7
+ def generate_allure_helper: () -> void
8
+ def generate_video_helper: () -> void
9
+ def generate_browser_helper: () -> void
10
+ def generate_spec_helper: () -> void
11
+ def generate_driver_helper: () -> void
12
+ def generate_capybara_helper: () -> void
13
+ def generate_appium_helper: () -> void
14
+ def generate_test_helper: () -> void
15
+ def generate_debug_helper: () -> void
16
+ def generate_visual_helper: () -> void
17
+ def generate_performance_helper: () -> void
18
+ end
@@ -0,0 +1,5 @@
1
+ # Type definitions for GithubGenerator
2
+ class GithubGenerator < Generator
3
+ def generate_actions_file: () -> void
4
+ def generate_appium_pipeline: () -> void
5
+ end
@@ -0,0 +1,4 @@
1
+ # Type definitions for GitlabGenerator
2
+ class GitlabGenerator < Generator
3
+ def generate_gitlab_file: () -> void
4
+ end
@@ -0,0 +1,10 @@
1
+ # Type definitions for InvokeGenerators module
2
+ module InvokeGenerators
3
+ def self?.generate_framework: (?Hash[Symbol, untyped] structure) -> void
4
+ def self?.add_generator: (Array[String] generators, *String gens) -> void
5
+ def self?.invoke_generator: (?Hash[Symbol, untyped] structure) -> void
6
+ def self?.collect_skip_flags: (Hash[Symbol, untyped] structure) -> Array[String]
7
+ def self?.reporter_flags: (String? reporter) -> Array[String]
8
+ def self?.mobile_automation?: (String automation) -> bool
9
+ def self?.to_bool: (String? string) -> bool?
10
+ end
@@ -0,0 +1,29 @@
1
+ # Type definitions for MenuGenerator
2
+ class MenuGenerator
3
+ include InvokeGenerators
4
+
5
+ attr_reader prompt: TTY::Prompt
6
+ attr_reader name: String
7
+
8
+ def initialize: (String project_name) -> void
9
+ def generate_choice_menu: () -> void
10
+ def choose_test_framework: (String automation) -> void
11
+ def set_up_framework: (untyped options) -> void
12
+ def choose_mobile_platform: () -> void
13
+
14
+ private
15
+
16
+ def offer_desktop_download: () -> void
17
+ def select_test_framework: (String automation) -> void
18
+ def create_framework_options: (Hash[Symbol, untyped] params) -> untyped
19
+ def select_reporter: (String framework, String automation_type, ?String? ci_platform) -> void
20
+ def select_accessibility: (String framework, String automation_type, ?String? ci_platform, ?String? reporter) -> void
21
+ def select_visual: (String framework, String automation_type, ?String? ci_platform, ?String? reporter, ?bool accessibility) -> void
22
+ def select_performance: (String framework, String automation_type, ?String? ci_platform, ?String? reporter, ?bool accessibility, ?bool visual) -> void
23
+ def mobile_automation?: (String automation_type) -> bool
24
+ def create_framework: (String framework, String automation_type, ?String? ci_platform, ?String? reporter, ?bool accessibility, ?bool visual, ?bool performance) -> void
25
+ def yes_no_menu_choices: () -> Hash[Symbol, Proc]
26
+ def select_automation_framework: (untyped menu) -> void
27
+ def automation_options: (untyped menu) -> void
28
+ def select_ci_platform: (String framework, String automation) -> void
29
+ end
@@ -0,0 +1,8 @@
1
+ # Type definitions for MinitestGenerator
2
+ class MinitestGenerator < Generator
3
+ def generate_login_test: () -> void
4
+ def generate_pdp_test: () -> void
5
+ def generate_visual_test: () -> void
6
+ def generate_accessibility_test: () -> void
7
+ def generate_performance_test: () -> void
8
+ end
@@ -0,0 +1,8 @@
1
+ # Type definitions for RspecGenerator
2
+ class RspecGenerator < Generator
3
+ def generate_login_spec: () -> void
4
+ def generate_pdp_spec: () -> void
5
+ def generate_visual_spec: () -> void
6
+ def generate_accessibility_spec: () -> void
7
+ def generate_performance_spec: () -> void
8
+ end
@@ -0,0 +1,20 @@
1
+ # Type definitions for PartialCache
2
+ module TemplateRenderer
3
+ class PartialCache
4
+ @cache: Hash[String, Hash[Symbol, untyped]]
5
+ @generator_class: Class
6
+ @resolver: PartialResolver
7
+
8
+ def initialize: (Class generator_class) -> void
9
+ def render_partial: (String name, Binding binding, ?Hash[Symbol, untyped] options) -> String
10
+ def clear: () -> void
11
+ def stats: () -> Hash[Symbol, untyped]
12
+
13
+ private
14
+
15
+ def build_cache_key: (String name, String? trim_mode) -> String
16
+ def get_or_compile: (String cache_key, String path, String? trim_mode) -> ERB
17
+ def compile_template: (String path, String? trim_mode) -> ERB
18
+ def estimate_cache_size: () -> Integer
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # Type definitions for PartialResolver
2
+ module TemplateRenderer
3
+ class PartialResolver
4
+ PARTIAL_EXTENSION: String
5
+ PARTIALS_DIR: String
6
+
7
+ @generator_class: Class
8
+
9
+ def initialize: (Class generator_class) -> void
10
+ def resolve: (String name, Binding binding) -> String
11
+ def search_paths: (String name, Binding binding) -> Array[String]
12
+
13
+ private
14
+
15
+ def caller_file_from_binding: (Binding binding) -> String?
16
+ def search_source_paths: (String partial_filename) -> { found: String?, searched: Array[String] }
17
+ def source_paths: () -> Array[String]
18
+ def partial_dirs: () -> Array[String]
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # Type definitions for template errors
2
+ module TemplateRenderer
3
+ class TemplateError < StandardError
4
+ attr_reader partial_name: String?
5
+ attr_reader searched_paths: Array[String]?
6
+ attr_reader original_error: StandardError?
7
+
8
+ def initialize: (String message, ?partial_name: String?, ?searched_paths: Array[String]?, ?original_error: StandardError?) -> void
9
+ end
10
+
11
+ class TemplateNotFoundError < TemplateError
12
+ def to_s: () -> String
13
+ end
14
+
15
+ class TemplateRenderError < TemplateError
16
+ def initialize: (String message, partial_name: String?, ?original_error: StandardError?) -> void
17
+ def to_s: () -> String
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ # Type definitions for TemplateRenderer module
2
+ module TemplateRenderer
3
+ def partial: (String name, ?Hash[Symbol, untyped] options) -> String
4
+
5
+ module ClassMethods
6
+ def template_renderer: () -> TemplateRenderer::PartialCache
7
+ def clear_template_cache: () -> void
8
+ def template_cache_stats: () -> Hash[Symbol, untyped]
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ # Type definitions for Llm::Client
2
+ module Llm
3
+ module Client
4
+ MAX_RETRIES: Integer
5
+ BASE_DELAY: Integer
6
+
7
+ def self?.complete: (String prompt, ?String? system_prompt) -> String?
8
+ def self?.available?: () -> bool
9
+ def self?.status: () -> Hash[Symbol, untyped]
10
+
11
+ private
12
+
13
+ def self?.build_provider: () -> Llm::Provider?
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # Type definitions for Llm::Config
2
+ module Llm
3
+ class Config
4
+ PROVIDERS: Array[String]
5
+
6
+ attr_reader provider_name: String?
7
+ attr_reader api_key: String?
8
+ attr_reader model: String?
9
+ attr_reader url: String?
10
+
11
+ def initialize: () -> void
12
+ def configured?: () -> bool
13
+ def build_provider: () -> Provider?
14
+
15
+ private
16
+
17
+ def env: (String key) -> String?
18
+ def config_value: (String key) -> String?
19
+ end
20
+ end
@@ -0,0 +1,8 @@
1
+ # Type definitions for Llm::Prompts
2
+ module Llm
3
+ module Prompts
4
+ def self?.analyze_page: (String html, String url) -> String
5
+ def self?.generate_test_scenarios: (String class_name, Array[Hash[Symbol, untyped]] methods, String automation, String framework) -> String
6
+ def self?.system_prompt: () -> String
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ # Type definitions for Llm::Provider
2
+ module Llm
3
+ class Provider
4
+ def complete: (String prompt, ?system_prompt: String?) -> String?
5
+ def available?: () -> bool
6
+ def name: () -> String
7
+
8
+ private
9
+
10
+ def build_messages: (String prompt, String? system_prompt) -> Array[Hash[String, String]]
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # Type definitions for Anthropic provider
2
+ module Llm
3
+ module Providers
4
+ class AnthropicProvider < Provider
5
+ DEFAULT_MODEL: String
6
+
7
+ def initialize: (api_key: String, ?model: String?) -> void
8
+ def complete: (String prompt, ?system_prompt: String?) -> String?
9
+ def available?: () -> bool
10
+
11
+ private
12
+
13
+ def build_client: () -> untyped
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ # Type definitions for Ollama provider
2
+ module Llm
3
+ module Providers
4
+ class OllamaProvider < Provider
5
+ DEFAULT_MODEL: String
6
+ DEFAULT_URL: String
7
+ TIMEOUT: Integer
8
+
9
+ def initialize: (?model: String?, ?url: String?) -> void
10
+ def complete: (String prompt, ?system_prompt: String?) -> String?
11
+ def available?: () -> bool
12
+
13
+ private
14
+
15
+ def post_request: (URI::Generic uri, Hash[Symbol, untyped] body) -> Net::HTTPResponse
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # Type definitions for OpenAI provider
2
+ module Llm
3
+ module Providers
4
+ class OpenaiProvider < Provider
5
+ DEFAULT_MODEL: String
6
+
7
+ def initialize: (api_key: String, ?model: String?) -> void
8
+ def complete: (String prompt, ?system_prompt: String?) -> String?
9
+ def available?: () -> bool
10
+
11
+ private
12
+
13
+ def build_client: () -> untyped
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ # Type definitions for Llm::ResponseParser
2
+ module Llm
3
+ module ResponseParser
4
+ def self?.parse_json: (String? response) -> Hash[Symbol, untyped]?
5
+ def self?.extract_elements: (String? response) -> Array[Hash[Symbol, untyped]]?
6
+ def self?.extract_scenarios: (String? response) -> Array[Hash[Symbol, untyped]]?
7
+
8
+ private
9
+
10
+ def self?.normalize_element: (Hash[Symbol, untyped] element) -> Hash[Symbol, untyped]?
11
+ def self?.extract_json: (String text) -> String?
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ # Type definitions for Plugin
2
+ module RubyRaider
3
+ module Plugin
4
+ def self?.add_plugin: (String plugin_name) -> void
5
+ def self?.delete_plugin: (String plugin_name) -> String?
6
+ def self?.installed_plugins: () -> Array[String]
7
+ def self?.installed?: (String plugin_name) -> bool
8
+ def self?.available?: (String plugin_name) -> bool
9
+ def self?.camelize: (String str) -> String
10
+ def self?.plugins: () -> Array[String]
11
+
12
+ private
13
+
14
+ def self?.add_plugin_to_gemfile: (String plugin_name) -> void
15
+ def self?.remove_plugin_from_gemfile: (String plugin_name) -> void
16
+ def self?.last_plugin?: () -> bool
17
+ def self?.read_gemfile: () -> Array[String]
18
+ def self?.comment_present?: () -> bool
19
+ def self?.plugin_present?: (String plugin_name) -> bool
20
+ def self?.remove_plugins_and_comments: (String plugin_name) -> Array[String]
21
+ def self?.update_gemfile: (Array[String] output_lines) -> void
22
+ def self?.gemfile_guard: () -> untyped
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ # Type definitions for PluginExposer
2
+ module RubyRaider
3
+ module PluginExposer
4
+ FILE_PATH: String
5
+
6
+ def self?.expose_commands: (String plugin_name) -> void
7
+ def self?.remove_command: (String plugin_name) -> void
8
+
9
+ private
10
+
11
+ def self?.any_commands?: () -> bool
12
+ def self?.read_loaded_commands: () -> Array[String]
13
+ def self?.formatted_command_without_space: (String plugin_name) -> String
14
+ def self?.formatted_command_with_space: (String plugin_name) -> String
15
+ def self?.plugin_present?: (String plugin_name) -> bool
16
+ def self?.select_command_formatting: (String plugin_name, String line) -> String?
17
+ def self?.require_plugin: (String plugin_name, String line) -> String?
18
+ def self?.delete_plugin_command: (String plugin_name) -> void
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # Type definitions for main RubyRaider entry point
2
+ module RubyRaider
3
+ class Raider < Thor
4
+ def self.plugin_commands?: () -> bool
5
+ def current_version: () -> String
6
+
7
+ def new: (String project_name) -> void
8
+ def version: () -> void
9
+ def adopt: () -> void
10
+
11
+ private
12
+
13
+ def merge_skip_flags: (Hash[Symbol, untyped] params) -> void
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # Type definitions for CrudGenerator
2
+ class CrudGenerator
3
+ ACTIONS: Array[String]
4
+
5
+ def initialize: (String base_name, Class scaffolding_class, ^(String) -> String? config_loader) -> void
6
+ def generate: () -> Array[String]
7
+ def planned_files: () -> Array[String]
8
+
9
+ private
10
+
11
+ def generate_page: (String name) -> void
12
+ def generate_test: (String name) -> void
13
+ def generate_model: () -> void
14
+ def model_content: () -> String
15
+ def test_path: (String name) -> String
16
+ end