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.
- checksums.yaml +4 -4
- data/.github/workflows/e2e_tests.yml +58 -0
- data/.github/workflows/steep.yml +21 -0
- data/.gitignore +1 -1
- data/.reek.yml +46 -4
- data/.ruby-version +1 -1
- data/README.md +138 -77
- data/Steepfile +22 -0
- data/assets/ruby_raider_logo.svg +51 -0
- data/lib/adopter/adopt_menu.rb +11 -15
- data/lib/adopter/converters/base_converter.rb +1 -2
- data/lib/adopter/converters/identity_converter.rb +3 -6
- data/lib/adopter/migration_plan.rb +0 -1
- data/lib/adopter/plan_builder.rb +2 -5
- data/lib/adopter/project_analyzer.rb +1 -5
- data/lib/adopter/project_detector.rb +3 -5
- data/lib/commands/adopt_commands.rb +0 -1
- data/lib/commands/plugin_commands.rb +0 -2
- data/lib/commands/scaffolding_commands.rb +220 -37
- data/lib/commands/utility_commands.rb +82 -2
- data/lib/generators/automation/automation_generator.rb +0 -7
- data/lib/generators/automation/templates/partials/element.tt +1 -1
- data/lib/generators/automation/templates/partials/initialize_selector.tt +0 -7
- data/lib/generators/automation/templates/partials/url_methods.tt +0 -1
- data/lib/generators/common_generator.rb +12 -0
- data/lib/generators/cucumber/cucumber_generator.rb +36 -0
- data/lib/generators/cucumber/templates/accessibility_feature.tt +5 -0
- data/lib/generators/cucumber/templates/accessibility_steps.tt +21 -0
- data/lib/generators/cucumber/templates/cucumber.tt +8 -1
- data/lib/generators/cucumber/templates/feature.tt +0 -4
- data/lib/generators/cucumber/templates/partials/appium_env.tt +5 -0
- data/lib/generators/cucumber/templates/partials/capybara_env.tt +19 -1
- data/lib/generators/cucumber/templates/partials/driver_world.tt +1 -4
- data/lib/generators/cucumber/templates/partials/selenium_env.tt +22 -35
- data/lib/generators/cucumber/templates/partials/watir_env.tt +20 -1
- data/lib/generators/cucumber/templates/partials/web_steps.tt +6 -12
- data/lib/generators/cucumber/templates/performance_feature.tt +5 -0
- data/lib/generators/cucumber/templates/performance_steps.tt +17 -0
- data/lib/generators/cucumber/templates/visual_feature.tt +5 -0
- data/lib/generators/cucumber/templates/visual_steps.tt +19 -0
- data/lib/generators/generator.rb +38 -7
- data/lib/generators/helper_generator.rb +24 -7
- data/lib/generators/infrastructure/templates/github.tt +1 -1
- data/lib/generators/infrastructure/templates/github_appium.tt +2 -2
- data/lib/generators/infrastructure/templates/gitlab.tt +1 -1
- data/lib/generators/invoke_generators.rb +42 -9
- data/lib/generators/menu_generator.rb +120 -11
- data/lib/generators/minitest/minitest_generator.rb +16 -4
- data/lib/generators/minitest/templates/accessibility_test.tt +26 -0
- data/lib/generators/minitest/templates/performance_test.tt +18 -0
- data/lib/generators/minitest/templates/test.tt +5 -34
- data/lib/generators/minitest/templates/visual_test.tt +23 -0
- data/lib/generators/rspec/rspec_generator.rb +16 -4
- data/lib/generators/rspec/templates/accessibility_spec.tt +25 -0
- data/lib/generators/rspec/templates/performance_spec.tt +18 -0
- data/lib/generators/rspec/templates/spec.tt +5 -35
- data/lib/generators/rspec/templates/visual_spec.tt +20 -0
- data/lib/generators/template_renderer/partial_cache.rb +11 -1
- data/lib/generators/template_renderer/partial_resolver.rb +17 -10
- data/lib/generators/template_renderer.rb +17 -1
- data/lib/generators/templates/common/gemfile.tt +21 -6
- data/lib/generators/templates/common/git_ignore.tt +6 -1
- data/lib/generators/templates/common/partials/mobile_config.tt +5 -1
- data/lib/generators/templates/common/partials/web_config.tt +16 -7
- data/lib/generators/templates/common/rakefile.tt +36 -0
- data/lib/generators/templates/common/read_me.tt +41 -91
- data/lib/generators/templates/common/rspec.tt +3 -0
- data/lib/generators/templates/common/ruby_version.tt +1 -0
- data/lib/generators/templates/helpers/allure_helper.tt +11 -0
- data/lib/generators/templates/helpers/browser_helper.tt +12 -2
- data/lib/generators/templates/helpers/capybara_helper.tt +5 -1
- data/lib/generators/templates/helpers/debug_helper.tt +190 -0
- data/lib/generators/templates/helpers/driver_helper.tt +2 -10
- data/lib/generators/templates/helpers/partials/appium_driver.tt +0 -2
- data/lib/generators/templates/helpers/partials/debug_diagnostics.tt +7 -0
- data/lib/generators/templates/helpers/partials/debug_start.tt +7 -0
- data/lib/generators/templates/helpers/partials/driver_and_options.tt +1 -3
- data/lib/generators/templates/helpers/partials/selenium_driver.tt +8 -7
- data/lib/generators/templates/helpers/partials/video_start.tt +9 -0
- data/lib/generators/templates/helpers/partials/video_stop.tt +4 -0
- data/lib/generators/templates/helpers/performance_helper.tt +57 -0
- data/lib/generators/templates/helpers/spec_helper.tt +57 -8
- data/lib/generators/templates/helpers/test_helper.tt +69 -1
- data/lib/generators/templates/helpers/video_helper.tt +270 -0
- data/lib/generators/templates/helpers/visual_helper.tt +39 -46
- data/lib/llm/client.rb +79 -0
- data/lib/llm/config.rb +57 -0
- data/lib/llm/prompts.rb +84 -0
- data/lib/llm/provider.rb +27 -0
- data/lib/llm/providers/anthropic_provider.rb +43 -0
- data/lib/llm/providers/ollama_provider.rb +56 -0
- data/lib/llm/providers/openai_provider.rb +42 -0
- data/lib/llm/response_parser.rb +67 -0
- data/lib/plugin/plugin.rb +22 -20
- data/lib/plugin/plugin_exposer.rb +16 -38
- data/lib/ruby_raider.rb +47 -12
- data/lib/scaffolding/crud_generator.rb +94 -0
- data/lib/scaffolding/dry_run_presenter.rb +16 -0
- data/lib/scaffolding/name_normalizer.rb +63 -0
- data/lib/scaffolding/page_introspector.rb +45 -0
- data/lib/scaffolding/project_detector.rb +72 -0
- data/lib/scaffolding/scaffold_menu.rb +103 -0
- data/lib/scaffolding/scaffolding.rb +158 -11
- data/lib/scaffolding/templates/component.tt +30 -0
- data/lib/scaffolding/templates/feature.tt +4 -4
- data/lib/scaffolding/templates/helper.tt +15 -1
- data/lib/scaffolding/templates/page_from_url.tt +75 -0
- data/lib/scaffolding/templates/page_object.tt +50 -1
- data/lib/scaffolding/templates/spec.tt +33 -2
- data/lib/scaffolding/templates/spec_from_page.tt +31 -0
- data/lib/scaffolding/templates/spec_from_url.tt +46 -0
- data/lib/scaffolding/templates/steps.tt +17 -5
- data/lib/scaffolding/url_analyzer.rb +179 -0
- data/lib/utilities/desktop_downloader.rb +177 -0
- data/lib/utilities/logo.rb +83 -0
- data/lib/utilities/utilities.rb +53 -20
- data/lib/version +1 -1
- data/ruby_raider.gemspec +1 -0
- data/sig/adopter/adopt_menu.rbs +25 -0
- data/sig/adopter/converters/base_converter.rbs +23 -0
- data/sig/adopter/converters/identity_converter.rbs +16 -0
- data/sig/adopter/migration_plan.rbs +34 -0
- data/sig/adopter/migrator.rbs +21 -0
- data/sig/adopter/plan_builder.rbs +38 -0
- data/sig/adopter/project_analyzer.rbs +39 -0
- data/sig/adopter/project_detector.rbs +26 -0
- data/sig/commands/adopt_commands.rbs +8 -0
- data/sig/commands/loaded_commands.rbs +5 -0
- data/sig/commands/plugin_commands.rbs +9 -0
- data/sig/commands/scaffolding_commands.rbs +28 -0
- data/sig/commands/utility_commands.rbs +21 -0
- data/sig/generators/automation/automation_generator.rbs +20 -0
- data/sig/generators/common_generator.rbs +12 -0
- data/sig/generators/cucumber/cucumber_generator.rbs +16 -0
- data/sig/generators/generator.rbs +40 -0
- data/sig/generators/helper_generator.rbs +18 -0
- data/sig/generators/infrastructure/github_generator.rbs +5 -0
- data/sig/generators/infrastructure/gitlab_generator.rbs +4 -0
- data/sig/generators/invoke_generators.rbs +10 -0
- data/sig/generators/menu_generator.rbs +29 -0
- data/sig/generators/minitest/minitest_generator.rbs +8 -0
- data/sig/generators/rspec/rspec_generator.rbs +8 -0
- data/sig/generators/template_renderer/partial_cache.rbs +20 -0
- data/sig/generators/template_renderer/partial_resolver.rbs +20 -0
- data/sig/generators/template_renderer/template_error.rbs +19 -0
- data/sig/generators/template_renderer.rbs +10 -0
- data/sig/llm/client.rbs +15 -0
- data/sig/llm/config.rbs +20 -0
- data/sig/llm/prompts.rbs +8 -0
- data/sig/llm/provider.rbs +12 -0
- data/sig/llm/providers/anthropic_provider.rbs +16 -0
- data/sig/llm/providers/ollama_provider.rbs +18 -0
- data/sig/llm/providers/openai_provider.rbs +16 -0
- data/sig/llm/response_parser.rbs +13 -0
- data/sig/plugin/plugin.rbs +24 -0
- data/sig/plugin/plugin_exposer.rbs +20 -0
- data/sig/ruby_raider.rbs +15 -0
- data/sig/scaffolding/crud_generator.rbs +16 -0
- data/sig/scaffolding/dry_run_presenter.rbs +4 -0
- data/sig/scaffolding/name_normalizer.rbs +17 -0
- data/sig/scaffolding/page_introspector.rbs +14 -0
- data/sig/scaffolding/project_detector.rbs +14 -0
- data/sig/scaffolding/scaffold_menu.rbs +18 -0
- data/sig/scaffolding/scaffolding.rbs +55 -0
- data/sig/scaffolding/url_analyzer.rbs +28 -0
- data/sig/utilities/desktop_downloader.rbs +23 -0
- data/sig/utilities/logger.rbs +13 -0
- data/sig/utilities/logo.rbs +16 -0
- data/sig/utilities/utilities.rbs +30 -0
- data/sig/vendor/thor.rbs +34 -0
- data/sig/vendor/tty_prompt.rbs +15 -0
- data/spec/adopter/adopt_menu_spec.rb +12 -12
- data/spec/adopter/migration_plan_spec.rb +1 -1
- data/spec/adopter/migrator_spec.rb +2 -2
- data/spec/adopter/project_detector_spec.rb +1 -1
- data/spec/commands/raider_commands_spec.rb +129 -0
- data/spec/generators/generator_spec.rb +23 -0
- data/spec/integration/commands/scaffolding_commands_spec.rb +1 -1
- data/spec/integration/commands/utility_commands_spec.rb +23 -3
- data/spec/integration/content/ci_content_spec.rb +119 -0
- data/spec/integration/content/common_content_spec.rb +288 -0
- data/spec/integration/content/config_content_spec.rb +175 -0
- data/spec/integration/content/content_helper.rb +32 -0
- data/spec/integration/content/gemfile_content_spec.rb +209 -0
- data/spec/integration/content/helper_content_spec.rb +485 -0
- data/spec/integration/content/page_content_spec.rb +259 -0
- data/spec/integration/content/reporter_content_spec.rb +236 -0
- data/spec/integration/content/skip_flags_content_spec.rb +206 -0
- data/spec/integration/content/syntax_validation_spec.rb +30 -0
- data/spec/integration/content/test_content_spec.rb +266 -0
- data/spec/integration/end_to_end_features_spec.rb +690 -0
- data/spec/integration/end_to_end_spec.rb +52 -16
- data/spec/integration/generators/automation_generator_spec.rb +0 -12
- data/spec/integration/generators/axe_addon_spec.rb +150 -0
- data/spec/integration/generators/common_generator_spec.rb +12 -13
- data/spec/integration/generators/config_features_spec.rb +155 -0
- data/spec/integration/generators/debug_helper_spec.rb +68 -0
- data/spec/integration/generators/helpers_generator_spec.rb +0 -12
- data/spec/integration/generators/lighthouse_addon_spec.rb +132 -0
- data/spec/integration/generators/minitest_generator_spec.rb +0 -6
- data/spec/integration/generators/reporter_spec.rb +159 -0
- data/spec/integration/generators/skip_flags_spec.rb +134 -0
- data/spec/integration/generators/visual_addon_spec.rb +148 -0
- data/spec/integration/settings_helper.rb +0 -3
- data/spec/integration/spec_helper.rb +30 -13
- data/spec/llm/client_spec.rb +79 -0
- data/spec/llm/config_spec.rb +92 -0
- data/spec/llm/prompts_spec.rb +49 -0
- data/spec/llm/response_parser_spec.rb +92 -0
- data/spec/menus/adopter_adopt_menu_spec.rb +97 -0
- data/spec/menus/menu_generator_spec.rb +263 -0
- data/spec/scaffolding/name_normalizer_spec.rb +113 -0
- data/spec/scaffolding/page_introspector_spec.rb +82 -0
- data/spec/scaffolding/scaffold_project_detector_spec.rb +104 -0
- data/spec/scaffolding/scaffolding_features_spec.rb +311 -0
- data/spec/scaffolding/url_analyzer_spec.rb +110 -0
- data/spec/system/adopt_matrix_spec.rb +537 -0
- data/spec/system/adopt_spec.rb +225 -0
- data/spec/system/support/system_test_helper.rb +0 -2
- data/spec/utilities/desktop_downloader_spec.rb +92 -0
- metadata +150 -5
- data/lib/generators/automation/templates/visual_options.tt +0 -16
- data/lib/generators/templates/helpers/partials/axe_driver.tt +0 -10
- 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,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,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
|
data/sig/llm/client.rbs
ADDED
|
@@ -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
|
data/sig/llm/config.rbs
ADDED
|
@@ -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
|
data/sig/llm/prompts.rbs
ADDED
|
@@ -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
|
data/sig/ruby_raider.rbs
ADDED
|
@@ -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
|