ruby_raider 3.13.0 → 4.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/runtime.yml +38 -0
- data/.github/workflows/system_tests.yml +1 -23
- data/.reek.yml +1 -0
- data/.rspec +1 -0
- data/Gemfile +2 -0
- data/README.md +16 -49
- data/RELEASE.md +22 -0
- data/bin/raider +5 -0
- data/lib/commands/scaffolding_commands.rb +2 -25
- data/lib/commands/utility_commands.rb +23 -3
- data/lib/generators/automation/automation_generator.rb +0 -5
- data/lib/generators/automation/templates/component.tt +1 -0
- data/lib/generators/automation/templates/home.tt +2 -2
- data/lib/generators/automation/templates/login.tt +6 -26
- data/lib/generators/automation/templates/page.tt +23 -18
- data/lib/generators/automation/templates/partials/home_page_selector.tt +1 -2
- data/lib/generators/automation/templates/partials/initialize_selector.tt +0 -8
- data/lib/generators/automation/templates/partials/pdp_page_selector.tt +1 -2
- data/lib/generators/automation/templates/partials/url_methods.tt +8 -2
- data/lib/generators/automation/templates/partials/visit_method.tt +0 -5
- data/lib/generators/automation/templates/pdp.tt +1 -9
- data/lib/generators/common_generator.rb +0 -2
- data/lib/generators/generator.rb +12 -19
- data/lib/generators/helper_generator.rb +21 -19
- data/lib/generators/infrastructure/templates/azure_pipelines.tt +1 -1
- data/lib/generators/infrastructure/templates/github.tt +2 -3
- data/lib/generators/infrastructure/templates/github_appium.tt +0 -8
- data/lib/generators/invoke_generators.rb +4 -23
- data/lib/generators/menu_generator.rb +1 -9
- data/lib/generators/rspec/templates/accessibility_spec.tt +1 -9
- data/lib/generators/rspec/templates/spec.tt +8 -24
- data/lib/generators/template_renderer/partial_cache.rb +3 -1
- data/lib/generators/template_renderer.rb +1 -1
- data/lib/generators/templates/common/gemfile.tt +3 -10
- data/lib/generators/templates/common/git_ignore.tt +0 -5
- data/lib/generators/templates/common/partials/mobile_config.tt +3 -1
- data/lib/generators/templates/common/partials/web_config.tt +10 -1
- data/lib/generators/templates/common/rakefile.tt +0 -15
- data/lib/generators/templates/common/read_me.tt +357 -250
- data/lib/generators/templates/common/rubocop.tt +0 -2
- data/lib/generators/templates/helpers/driver_helper.tt +8 -0
- data/lib/generators/templates/helpers/gesture_helper.tt +78 -0
- data/lib/generators/templates/helpers/network_helper.tt +521 -0
- data/lib/generators/templates/helpers/partials/quit_driver.tt +0 -2
- data/lib/generators/templates/helpers/partials/screenshot.tt +0 -2
- data/lib/generators/templates/helpers/partials/selenium_driver.tt +5 -2
- data/lib/generators/templates/helpers/screenshot_helper.tt +490 -0
- data/lib/generators/templates/helpers/spec_helper.tt +39 -29
- data/lib/generators/templates/helpers/trace_helper.tt +240 -95
- data/lib/generators/templates/helpers/video_helper.tt +3 -8
- data/lib/ruby_raider/runtime/actionability.rb +129 -0
- data/lib/ruby_raider/runtime/actionable.rb +49 -0
- data/lib/ruby_raider/runtime/by_role.rb +55 -0
- data/lib/ruby_raider/runtime/config.rb +79 -0
- data/lib/ruby_raider/runtime/context.rb +38 -0
- data/lib/ruby_raider/runtime/errors.rb +69 -0
- data/lib/ruby_raider/runtime/finders.rb +73 -0
- data/lib/ruby_raider/runtime/js/actionability.js +134 -0
- data/lib/ruby_raider/runtime/js/role_engine.js +315 -0
- data/lib/ruby_raider/runtime/locator_converter.rb +72 -0
- data/lib/ruby_raider/runtime/matchers/base.rb +222 -0
- data/lib/ruby_raider/runtime/matchers/element.rb +183 -0
- data/lib/ruby_raider/runtime/matchers/page.rb +71 -0
- data/lib/ruby_raider/runtime/matchers/presence.rb +41 -0
- data/lib/ruby_raider/runtime/matchers/retrying_block.rb +104 -0
- data/lib/ruby_raider/runtime/observer.rb +170 -0
- data/lib/ruby_raider/runtime/role_finder.rb +83 -0
- data/lib/ruby_raider/runtime/rspec.rb +78 -0
- data/lib/ruby_raider/runtime/selectors.rb +60 -0
- data/lib/ruby_raider/runtime/strict.rb +142 -0
- data/lib/ruby_raider/runtime/wait.rb +84 -0
- data/lib/ruby_raider/runtime.rb +20 -0
- data/lib/scaffolding/name_normalizer.rb +1 -1
- data/lib/scaffolding/project_detector.rb +2 -28
- data/lib/scaffolding/scaffolding.rb +0 -20
- data/lib/scaffolding/templates/component.tt +0 -14
- data/lib/scaffolding/templates/page_object.tt +2 -14
- data/lib/scaffolding/templates/spec.tt +1 -9
- data/lib/utilities/utilities.rb +10 -8
- data/lib/version +1 -1
- data/ruby_raider.gemspec +2 -1
- data/sig/commands/scaffolding_commands.rbs +0 -2
- data/sig/commands/utility_commands.rbs +6 -0
- data/sig/generators/generator.rbs +0 -4
- data/sig/generators/helper_generator.rbs +0 -1
- data/sig/generators/menu_generator.rbs +0 -1
- data/sig/ruby_raider/runtime/actionability.rbs +25 -0
- data/sig/ruby_raider/runtime/actionable.rbs +13 -0
- data/sig/ruby_raider/runtime/by_role.rbs +15 -0
- data/sig/ruby_raider/runtime/config.rbs +26 -0
- data/sig/ruby_raider/runtime/context.rbs +12 -0
- data/sig/ruby_raider/runtime/errors.rbs +36 -0
- data/sig/ruby_raider/runtime/finders.rbs +26 -0
- data/sig/ruby_raider/runtime/locator_converter.rbs +21 -0
- data/sig/ruby_raider/runtime/matchers/base.rbs +64 -0
- data/sig/ruby_raider/runtime/matchers/element.rbs +78 -0
- data/sig/ruby_raider/runtime/matchers/page.rbs +38 -0
- data/sig/ruby_raider/runtime/matchers/presence.rbs +21 -0
- data/sig/ruby_raider/runtime/matchers/retrying_block.rbs +27 -0
- data/sig/ruby_raider/runtime/observer.rbs +46 -0
- data/sig/ruby_raider/runtime/role_finder.rbs +18 -0
- data/sig/ruby_raider/runtime/selectors.rbs +21 -0
- data/sig/ruby_raider/runtime/strict.rbs +35 -0
- data/sig/ruby_raider/runtime/wait.rbs +17 -0
- data/sig/ruby_raider/runtime.rbs +2 -0
- data/sig/scaffolding/project_detector.rbs +0 -4
- data/sig/scaffolding/scaffolding.rbs +0 -5
- data/sig/utilities/utilities.rbs +2 -1
- data/sig/vendor/selenium_webdriver.rbs +71 -0
- data/spec/commands/raider_commands_spec.rb +38 -3
- data/spec/commands/scaffolding_commands_spec.rb +27 -0
- data/spec/commands/utility_commands_spec.rb +53 -0
- data/spec/generators/gesture_helper_spec.rb +123 -0
- data/spec/generators/network_helper_spec.rb +634 -0
- data/spec/generators/screenshot_helper_spec.rb +776 -0
- data/spec/generators/template_renderer_spec.rb +0 -4
- data/spec/generators/trace_helper_spec.rb +489 -97
- data/spec/generators/video_helper_spec.rb +0 -9
- data/spec/integration/commands/browser_update_after_creation_spec.rb +0 -8
- data/spec/integration/commands/scaffolding_commands_spec.rb +12 -70
- data/spec/integration/commands/utility_commands_spec.rb +19 -41
- data/spec/integration/content/azure_content_spec.rb +2 -6
- data/spec/integration/content/ci_content_spec.rb +1 -55
- data/spec/integration/content/common_content_spec.rb +1 -118
- data/spec/integration/content/config_content_spec.rb +34 -31
- data/spec/integration/content/gemfile_content_spec.rb +7 -72
- data/spec/integration/content/helper_content_spec.rb +105 -99
- data/spec/integration/content/page_content_spec.rb +85 -87
- data/spec/integration/content/readme_content_spec.rb +134 -75
- data/spec/integration/content/rspec_reporter_content_spec.rb +2 -2
- data/spec/integration/content/rubocop_content_spec.rb +1 -1
- data/spec/integration/content/syntax_validation_spec.rb +2 -2
- data/spec/integration/content/test_content_spec.rb +23 -147
- data/spec/integration/end_to_end_features_spec.rb +1 -43
- data/spec/integration/end_to_end_spec.rb +319 -326
- data/spec/integration/generators/automation_generator_spec.rb +3 -37
- data/spec/integration/generators/axe_addon_spec.rb +2 -35
- data/spec/integration/generators/azure_generator_spec.rb +1 -1
- data/spec/integration/generators/common_generator_spec.rb +1 -40
- data/spec/integration/generators/config_features_spec.rb +1 -24
- data/spec/integration/generators/github_generator_spec.rb +0 -12
- data/spec/integration/generators/helpers_generator_spec.rb +74 -80
- data/spec/integration/generators/invoke_generators_spec.rb +54 -45
- data/spec/integration/generators/rspec_generator_spec.rb +0 -6
- data/spec/integration/scaffolding_e2e_spec.rb +17 -179
- data/spec/integration/spec_helper.rb +4 -6
- data/spec/integration/trace_format_checker.rb +11 -2
- data/spec/integration/trace_page_server.rb +72 -5
- data/spec/menus/menu_generator_spec.rb +14 -39
- data/spec/runtime/actionability_spec.rb +207 -0
- data/spec/runtime/actionable_spec.rb +125 -0
- data/spec/runtime/browser/actionability_script_browser_spec.rb +150 -0
- data/spec/runtime/browser/actionable_browser_spec.rb +98 -0
- data/spec/runtime/browser/finders_browser_spec.rb +148 -0
- data/spec/runtime/browser/matchers_browser_spec.rb +67 -0
- data/spec/runtime/browser/retrying_block_browser_spec.rb +37 -0
- data/spec/runtime/browser/role_engine_browser_spec.rb +184 -0
- data/spec/runtime/browser/strict_browser_spec.rb +38 -0
- data/spec/runtime/by_role_spec.rb +52 -0
- data/spec/runtime/config_spec.rb +79 -0
- data/spec/runtime/context_spec.rb +73 -0
- data/spec/runtime/errors_spec.rb +89 -0
- data/spec/runtime/finders_spec.rb +165 -0
- data/spec/runtime/fixtures/actionability.html +70 -0
- data/spec/runtime/fixtures/locators.html +46 -0
- data/spec/runtime/fixtures/matchers.html +33 -0
- data/spec/runtime/fixtures/roles.html +162 -0
- data/spec/runtime/matchers/base_spec.rb +165 -0
- data/spec/runtime/matchers/element_spec.rb +277 -0
- data/spec/runtime/matchers/page_spec.rb +102 -0
- data/spec/runtime/matchers/presence_spec.rb +59 -0
- data/spec/runtime/matchers/retrying_block_spec.rb +165 -0
- data/spec/runtime/observer_spec.rb +341 -0
- data/spec/runtime/role_finder_spec.rb +156 -0
- data/spec/runtime/role_query_spec.rb +75 -0
- data/spec/runtime/selectors_spec.rb +135 -0
- data/spec/runtime/strict_spec.rb +257 -0
- data/spec/runtime/support/browser.rb +48 -0
- data/spec/runtime/support/fake_bridge.rb +117 -0
- data/spec/runtime/wait_spec.rb +71 -0
- data/spec/scaffolding/name_normalizer_spec.rb +3 -2
- data/spec/scaffolding/scaffold_project_detector_spec.rb +4 -43
- data/spec/system/selenium_spec.rb +1 -5
- data/spec/system/support/system_test_helper.rb +2 -5
- data/spec/utilities/headless_config_spec.rb +0 -7
- data/spec/utilities/utilities_spec.rb +24 -0
- metadata +113 -48
- data/lib/generators/automation/templates/header.tt +0 -9
- data/lib/generators/cucumber/cucumber_generator.rb +0 -58
- data/lib/generators/cucumber/templates/accessibility_feature.tt +0 -5
- data/lib/generators/cucumber/templates/accessibility_steps.tt +0 -17
- data/lib/generators/cucumber/templates/cucumber.tt +0 -1
- data/lib/generators/cucumber/templates/env.tt +0 -7
- data/lib/generators/cucumber/templates/feature.tt +0 -21
- data/lib/generators/cucumber/templates/partials/appium_env.tt +0 -26
- data/lib/generators/cucumber/templates/partials/driver_world.tt +0 -18
- data/lib/generators/cucumber/templates/partials/mobile_steps.tt +0 -20
- data/lib/generators/cucumber/templates/partials/selenium_env.tt +0 -120
- data/lib/generators/cucumber/templates/partials/watir_env.tt +0 -48
- data/lib/generators/cucumber/templates/partials/watir_world.tt +0 -4
- data/lib/generators/cucumber/templates/partials/web_steps.tt +0 -28
- data/lib/generators/cucumber/templates/steps.tt +0 -5
- data/lib/generators/cucumber/templates/user_factory.tt +0 -15
- data/lib/generators/cucumber/templates/world.tt +0 -7
- data/lib/generators/templates/helpers/browser_helper.tt +0 -31
- data/lib/generators/templates/helpers/raider_element.tt +0 -159
- data/lib/generators/templates/helpers/wait_helper.tt +0 -611
- data/lib/scaffolding/templates/feature.tt +0 -6
- data/lib/scaffolding/templates/steps.tt +0 -19
- data/sig/generators/cucumber/cucumber_generator.rbs +0 -12
- data/spec/fixtures/watir_master/cucumber_watir/Readme.md.snapshot +0 -175
- data/spec/fixtures/watir_master/cucumber_watir/features/step_definitions/login_steps.rb.snapshot +0 -24
- data/spec/fixtures/watir_master/cucumber_watir/page_objects/abstract/page.rb.snapshot +0 -37
- data/spec/fixtures/watir_master/cucumber_watir/page_objects/pages/login.rb.snapshot +0 -33
- data/spec/fixtures/watir_master/rspec_watir/Readme.md.snapshot +0 -174
- data/spec/fixtures/watir_master/rspec_watir/page_objects/abstract/page.rb.snapshot +0 -37
- data/spec/fixtures/watir_master/rspec_watir/page_objects/pages/login.rb.snapshot +0 -33
- data/spec/fixtures/watir_master/rspec_watir/spec/login_page_spec.rb.snapshot +0 -49
- data/spec/integration/content/cucumber_reporter_content_spec.rb +0 -161
- data/spec/integration/generators/cucumber_generator_spec.rb +0 -100
- data/spec/integration/helpers/wait_helper_mobile_spec.rb +0 -281
- data/spec/integration/helpers/wait_helper_spec.rb +0 -679
- data/spec/integration/helpers/wait_helper_support.rb +0 -183
- data/spec/system/watir_spec.rb +0 -38
|
@@ -8,18 +8,14 @@ class Generator < Thor::Group
|
|
|
8
8
|
def self.template_cache_stats: () -> Hash[Symbol, untyped]
|
|
9
9
|
|
|
10
10
|
# Predicate methods for framework/automation detection
|
|
11
|
-
def cucumber?: () -> bool
|
|
12
11
|
def cross_platform?: () -> bool
|
|
13
12
|
def mobile?: () -> bool
|
|
14
13
|
def single_platform?: () -> bool
|
|
15
14
|
def ios?: () -> bool
|
|
16
15
|
def android?: () -> bool
|
|
17
|
-
def rspec?: () -> bool
|
|
18
16
|
def azure?: () -> bool
|
|
19
17
|
def github_ci?: () -> bool
|
|
20
18
|
def selenium?: () -> bool
|
|
21
|
-
def watir?: () -> bool
|
|
22
|
-
def wait_helper?: () -> bool
|
|
23
19
|
def trace_helper?: () -> bool
|
|
24
20
|
def examples?: () -> bool
|
|
25
21
|
def web?: () -> bool
|
|
@@ -14,7 +14,6 @@ class MenuGenerator
|
|
|
14
14
|
private
|
|
15
15
|
|
|
16
16
|
def offer_desktop_download: () -> void
|
|
17
|
-
def select_test_framework: (String automation) -> void
|
|
18
17
|
def create_framework_options: (Hash[Symbol, untyped] params) -> untyped
|
|
19
18
|
def select_accessibility: (String framework, String automation_type) -> void
|
|
20
19
|
def mobile_automation?: (String automation_type) -> bool
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Actionability
|
|
3
|
+
CHECKS: Hash[Symbol, Array[String]]
|
|
4
|
+
NATIVE_CHECKS: Hash[Symbol, Array[String]]
|
|
5
|
+
PHRASES: Hash[String, String]
|
|
6
|
+
SCRIPT: String
|
|
7
|
+
FIRST_POLL: Hash[String, untyped]
|
|
8
|
+
NOTICE: String
|
|
9
|
+
|
|
10
|
+
def self.ensure: (untyped element, Symbol action, force: bool) -> Integer
|
|
11
|
+
def self.check: (untyped element, Symbol action) -> Hash[String, untyped]?
|
|
12
|
+
def self.reset_notice: () -> void
|
|
13
|
+
|
|
14
|
+
# private singleton helpers
|
|
15
|
+
def self.attached: (untyped element, bool web) -> Integer
|
|
16
|
+
def self.poll: (untyped element) { () -> Hash[String, untyped]? } -> Integer
|
|
17
|
+
def self.native_failure: (untyped element, Symbol action) -> Hash[String, String]?
|
|
18
|
+
def self.polled: (untyped element, Symbol action) -> Hash[String, untyped]?
|
|
19
|
+
def self.native_ready?: (untyped element, String name) -> bool
|
|
20
|
+
def self.clock: () -> Float
|
|
21
|
+
def self.not_actionable: (untyped element, Hash[String, untyped]? last, Float waited, Integer retries) -> NotActionable
|
|
22
|
+
def self.covering: (Hash[String, untyped] last) -> Hash[Symbol, untyped]?
|
|
23
|
+
def self.announce: () -> void
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Actionable
|
|
3
|
+
def click: (?force: bool) -> untyped
|
|
4
|
+
def send_keys: (*untyped keys, ?force: bool) -> untyped
|
|
5
|
+
alias send_key send_keys
|
|
6
|
+
def clear: (?force: bool) -> untyped
|
|
7
|
+
def submit: (?force: bool) -> untyped
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def raider_gate: (Observer::Run? run, Symbol action, bool force) -> untyped
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
ROLES: Array[String]
|
|
3
|
+
|
|
4
|
+
module RoleLocator
|
|
5
|
+
def self.build: (String | Symbol role, String? name, bool exact, bool include_hidden, ?Integer? level) -> Hash[Symbol, Array[untyped]]
|
|
6
|
+
def self.validated_level: (String token, Integer? level) -> void
|
|
7
|
+
def self.validated_role: (String | Symbol role) -> String
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.by_role: (String | Symbol role, ?name: String?, ?exact: bool, ?include_hidden: bool, ?level: Integer?) -> Hash[Symbol, Array[untyped]]
|
|
11
|
+
|
|
12
|
+
module Helpers
|
|
13
|
+
def by_role: (String | Symbol role, ?name: String?, ?exact: bool, ?include_hidden: bool, ?level: Integer?) -> Hash[Symbol, Array[untyped]]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
CONFIG_FILE: String
|
|
3
|
+
FALSY: Array[String]
|
|
4
|
+
|
|
5
|
+
class Error < StandardError
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.strict: () -> bool
|
|
9
|
+
def self.actionability: () -> bool
|
|
10
|
+
def self.timeout: () -> Numeric
|
|
11
|
+
def self.test_id_attribute: () -> String
|
|
12
|
+
def self.strict=: (bool?) -> bool?
|
|
13
|
+
def self.actionability=: (bool?) -> bool?
|
|
14
|
+
def self.timeout=: (Numeric?) -> Numeric?
|
|
15
|
+
def self.test_id_attribute=: (String?) -> String?
|
|
16
|
+
def self.observer: () -> untyped
|
|
17
|
+
def self.observer=: (untyped) -> untyped
|
|
18
|
+
def self.reset: () -> void
|
|
19
|
+
|
|
20
|
+
# private singleton helpers
|
|
21
|
+
def self.resolve: (Symbol key, String env_name, untyped default) { (untyped) -> untyped } -> untyped
|
|
22
|
+
def self.file_config: () -> Hash[String, untyped]
|
|
23
|
+
def self.load_file: () -> Hash[String, untyped]
|
|
24
|
+
def self.truthy?: (untyped value) -> bool
|
|
25
|
+
def self.number: (untyped value) -> Numeric
|
|
26
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Context
|
|
3
|
+
NATIVE: String
|
|
4
|
+
|
|
5
|
+
def self.web?: (untyped bridge) -> bool
|
|
6
|
+
def self.web_for?: (untyped search_context) -> bool
|
|
7
|
+
|
|
8
|
+
# private singleton helper
|
|
9
|
+
def self.contextual?: (untyped bridge) -> bool
|
|
10
|
+
def self.event_firing?: (untyped bridge) -> bool
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Describe
|
|
3
|
+
TEXT_LIMIT: Integer
|
|
4
|
+
CLASS_LIMIT: Integer
|
|
5
|
+
|
|
6
|
+
def self.seconds: (Numeric value) -> Numeric
|
|
7
|
+
def self.element: (Selenium::WebDriver::Element element) -> String
|
|
8
|
+
def self.attribute_part: (String name, String value) -> String
|
|
9
|
+
|
|
10
|
+
def seconds: (Numeric value) -> Numeric
|
|
11
|
+
def element: (Selenium::WebDriver::Element element) -> String
|
|
12
|
+
def attribute_part: (String name, String value) -> String
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class AmbiguousMatch < Selenium::WebDriver::Error::WebDriverError
|
|
16
|
+
SHOWN: Integer
|
|
17
|
+
|
|
18
|
+
attr_reader elements: Array[Selenium::WebDriver::Element]
|
|
19
|
+
|
|
20
|
+
def initialize: (String locator_description, Array[Selenium::WebDriver::Element] elements) -> void
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class NotActionable < Selenium::WebDriver::Error::ElementNotInteractableError
|
|
24
|
+
attr_reader check: String
|
|
25
|
+
attr_reader covering: Hash[Symbol, untyped]?
|
|
26
|
+
attr_reader retries: Integer
|
|
27
|
+
|
|
28
|
+
def initialize: (String element_description, String check, ?covering: Hash[Symbol, untyped]?, ?waited: Numeric, ?retries: Integer) -> void
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class NotSupported < Selenium::WebDriver::Error::UnsupportedOperationError
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class TimeoutError < Selenium::WebDriver::Error::TimeoutError
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
FINDERS: Hash[Symbol, String]
|
|
3
|
+
|
|
4
|
+
module Finders
|
|
5
|
+
BRIDGE: String
|
|
6
|
+
SEARCH_CONTEXT: String
|
|
7
|
+
SELENIUM_BRIDGES: Array[String]
|
|
8
|
+
APPIUM_BRIDGES: Array[String]
|
|
9
|
+
|
|
10
|
+
def self.register: () -> void
|
|
11
|
+
def self.ensure_registered: () -> void
|
|
12
|
+
def self.install_converter: (untyped bridge_class) -> void
|
|
13
|
+
def self.install: () -> void
|
|
14
|
+
def self.install_appium_converters: () -> void
|
|
15
|
+
def self.check_api: () -> void
|
|
16
|
+
def self.guard: () -> void
|
|
17
|
+
|
|
18
|
+
def register: () -> void
|
|
19
|
+
def ensure_registered: () -> void
|
|
20
|
+
def install_converter: (untyped bridge_class) -> void
|
|
21
|
+
def install: () -> void
|
|
22
|
+
def install_appium_converters: () -> void
|
|
23
|
+
def check_api: () -> void
|
|
24
|
+
def guard: () -> void
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
class LocatorConverter
|
|
3
|
+
XPATH: Hash[String, Symbol]
|
|
4
|
+
ATTRIBUTES: Hash[String, String]
|
|
5
|
+
TEST_ID: String
|
|
6
|
+
ROLE: String
|
|
7
|
+
|
|
8
|
+
attr_reader inner: untyped
|
|
9
|
+
|
|
10
|
+
def initialize: (untyped inner) -> void
|
|
11
|
+
def convert: (String | Symbol how, untyped what) -> [String, untyped]
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def owns?: (String key) -> bool
|
|
16
|
+
def translate: (String key, untyped value, bool exact) -> [String, String]
|
|
17
|
+
def split: (String key, untyped what) -> [untyped, bool]
|
|
18
|
+
def valid_pair?: (untyped pair) -> bool
|
|
19
|
+
def label_for: (String key) -> String
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Matchers
|
|
3
|
+
class Base
|
|
4
|
+
module Chaining
|
|
5
|
+
def and: (untyped other) -> untyped
|
|
6
|
+
def or: (untyped other) -> untyped
|
|
7
|
+
def &: (untyped other) -> untyped
|
|
8
|
+
def |: (untyped other) -> untyped
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
STALE_HINT: String
|
|
12
|
+
|
|
13
|
+
class StaleActual < StandardError
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
NOT_FOUND: Object
|
|
17
|
+
|
|
18
|
+
class Poll < Struct[untyped]
|
|
19
|
+
attr_accessor actual: untyped
|
|
20
|
+
attr_accessor subject: untyped
|
|
21
|
+
attr_accessor value: untyped
|
|
22
|
+
attr_accessor waited: Numeric
|
|
23
|
+
attr_accessor elapsed: Numeric
|
|
24
|
+
attr_accessor stale: bool
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
attr_reader expected: untyped
|
|
28
|
+
|
|
29
|
+
def initialize: (untyped expected, ?wait: Numeric?, **untyped options) -> void
|
|
30
|
+
def matches?: (untyped actual) -> bool
|
|
31
|
+
def does_not_match?: (untyped actual) -> bool
|
|
32
|
+
def failure_message: () -> String
|
|
33
|
+
def failure_message_when_negated: () -> String
|
|
34
|
+
def supports_block_expectations?: () -> bool
|
|
35
|
+
def description: () -> String
|
|
36
|
+
def absent_passes?: () -> bool
|
|
37
|
+
def resolve: (untyped actual) -> untyped
|
|
38
|
+
def read_with_zero_wait: (untyped subject, Symbol method, *untyped args) -> untyped
|
|
39
|
+
def verb: () -> String
|
|
40
|
+
def read: (untyped subject) -> untyped
|
|
41
|
+
def pass?: (untyped value) -> bool
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def option: (Symbol key) -> untyped
|
|
46
|
+
|
|
47
|
+
def polled_actual: () -> untyped
|
|
48
|
+
def wait_for: (untyped actual) -> Numeric
|
|
49
|
+
def poll: (untyped actual, negated: bool) -> bool
|
|
50
|
+
def clock: () -> Float
|
|
51
|
+
def settled?: (bool negated) -> bool
|
|
52
|
+
def gone: (Exception error, bool negated) -> bool
|
|
53
|
+
def negated_absent_passes?: () -> bool
|
|
54
|
+
def raw_element?: () -> bool
|
|
55
|
+
def raise_stale: () -> bot
|
|
56
|
+
def retried_errors: () -> Array[untyped]
|
|
57
|
+
def accepts_timeout?: (untyped subject, Symbol method) -> bool
|
|
58
|
+
def message: (String polarity) -> String
|
|
59
|
+
def target: () -> String
|
|
60
|
+
def last_seen: () -> String
|
|
61
|
+
def show: (untyped value) -> String
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Matchers
|
|
3
|
+
module Element
|
|
4
|
+
def self.normalise: (untyped text) -> String
|
|
5
|
+
|
|
6
|
+
class HaveText < Base
|
|
7
|
+
def initialize: (String | Regexp text, ?exact: bool, ?wait: Numeric?) -> void
|
|
8
|
+
def verb: () -> String
|
|
9
|
+
def read: (untyped subject) -> untyped
|
|
10
|
+
def pass?: (untyped value) -> bool
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class HaveValue < Base
|
|
14
|
+
def verb: () -> String
|
|
15
|
+
def read: (untyped subject) -> untyped
|
|
16
|
+
def pass?: (untyped value) -> bool
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class HaveAttribute < Base
|
|
20
|
+
PRESENT: Symbol
|
|
21
|
+
|
|
22
|
+
def initialize: (String name, ?untyped value, ?wait: Numeric?) -> void
|
|
23
|
+
def verb: () -> String
|
|
24
|
+
def read: (untyped subject) -> untyped
|
|
25
|
+
def pass?: (untyped value) -> bool
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class State < Base
|
|
29
|
+
LABELS: Array[String]
|
|
30
|
+
|
|
31
|
+
def initialize: (?wait: Numeric?) -> void
|
|
32
|
+
def pass?: (untyped value) -> bool
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def show: (untyped value) -> String
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class BeVisible < State
|
|
40
|
+
def verb: () -> String
|
|
41
|
+
def read: (untyped subject) -> untyped
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def negated_absent_passes?: () -> bool
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
class BeHidden < State
|
|
49
|
+
def verb: () -> String
|
|
50
|
+
def read: (untyped subject) -> bool
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class BeEnabled < State
|
|
54
|
+
def verb: () -> String
|
|
55
|
+
def read: (untyped subject) -> untyped
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class BeDisabled < State
|
|
59
|
+
def verb: () -> String
|
|
60
|
+
def read: (untyped subject) -> bool
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class BeChecked < State
|
|
64
|
+
def verb: () -> String
|
|
65
|
+
def read: (untyped subject) -> untyped
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def have_text: (String | Regexp text, ?exact: bool, ?wait: Numeric?) -> Element::HaveText
|
|
70
|
+
def have_value: (String | Regexp value, ?wait: Numeric?) -> Element::HaveValue
|
|
71
|
+
def have_attribute: (String name, ?untyped value, ?wait: Numeric?) -> Element::HaveAttribute
|
|
72
|
+
def be_visible: (?wait: Numeric?) -> Element::BeVisible
|
|
73
|
+
def be_hidden: (?wait: Numeric?) -> Element::BeHidden
|
|
74
|
+
def be_enabled: (?wait: Numeric?) -> Element::BeEnabled
|
|
75
|
+
def be_disabled: (?wait: Numeric?) -> Element::BeDisabled
|
|
76
|
+
def be_checked: (?wait: Numeric?) -> Element::BeChecked
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Matchers
|
|
3
|
+
module Page
|
|
4
|
+
class HaveCount < Base
|
|
5
|
+
def verb: () -> String
|
|
6
|
+
def read: (untyped subject) -> Integer
|
|
7
|
+
def pass?: (untyped value) -> bool
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def wait_for: (untyped actual) -> Numeric
|
|
12
|
+
def target: () -> String
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class Driver < Base
|
|
16
|
+
def pass?: (untyped value) -> bool
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def target: () -> String
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class HaveTitle < Driver
|
|
24
|
+
def verb: () -> String
|
|
25
|
+
def read: (untyped subject) -> untyped
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class HaveUrl < Driver
|
|
29
|
+
def verb: () -> String
|
|
30
|
+
def read: (untyped subject) -> untyped
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def have_count: (Integer count, ?wait: Numeric?) -> Page::HaveCount
|
|
35
|
+
def have_title: (String | Regexp expected, ?wait: Numeric?) -> Page::HaveTitle
|
|
36
|
+
def have_url: (String | Regexp expected, ?wait: Numeric?) -> Page::HaveUrl
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Matchers
|
|
3
|
+
module Presence
|
|
4
|
+
class HaveElement < Base
|
|
5
|
+
def verb: () -> String
|
|
6
|
+
def read: (untyped subject) -> Array[untyped]
|
|
7
|
+
def pass?: (untyped value) -> bool
|
|
8
|
+
def description: () -> String
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def target: () -> String
|
|
13
|
+
def show: (untyped value) -> Integer
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def have_element: (?Hash[Symbol, untyped]? locator, ?wait: Numeric?, **untyped by) -> Presence::HaveElement
|
|
18
|
+
def have_css: (String selector, ?wait: Numeric?) -> Presence::HaveElement
|
|
19
|
+
def have_xpath: (String selector, ?wait: Numeric?) -> Presence::HaveElement
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Matchers
|
|
3
|
+
module RetryingBlock
|
|
4
|
+
LOOKUP_ERRORS: Array[Class]
|
|
5
|
+
|
|
6
|
+
class Attempt
|
|
7
|
+
attr_reader value: untyped
|
|
8
|
+
attr_reader error: StandardError?
|
|
9
|
+
|
|
10
|
+
def initialize: (Proc block, ^(untyped) -> bool check) -> void
|
|
11
|
+
def read?: () -> bool
|
|
12
|
+
def pass?: () -> bool
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to: (?untyped matcher, ?(String | ^() -> String)? message) ?{ () -> untyped } -> untyped
|
|
16
|
+
def not_to: (?untyped matcher, ?(String | ^() -> String)? message) ?{ () -> untyped } -> untyped
|
|
17
|
+
def to_not: (?untyped matcher, ?(String | ^() -> String)? message) ?{ () -> untyped } -> untyped
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def check: (untyped matcher, bool negated) -> (^(untyped) -> bool | Method)
|
|
22
|
+
def stock?: (untyped matcher) -> bool
|
|
23
|
+
def settle: (untyped matcher, (String | ^() -> String)? message, Symbol polarity, bool negated) ?{ () -> untyped } -> true
|
|
24
|
+
def give_up: (Attempt attempt, Array[untyped] arguments, Symbol polarity, Float waited) ?{ () -> untyped } -> untyped
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
def self.report: (Symbol hook, *untyped args, **untyped details) ?{ () -> Hash[Symbol, untyped] } -> untyped
|
|
3
|
+
|
|
4
|
+
module Observer
|
|
5
|
+
LIB_DIR: String
|
|
6
|
+
GUARD_KEY: Symbol
|
|
7
|
+
MESSAGE_LIMIT: Integer
|
|
8
|
+
STRATEGIES: Hash[String, String]
|
|
9
|
+
|
|
10
|
+
class Run
|
|
11
|
+
@element: untyped
|
|
12
|
+
@action: Symbol
|
|
13
|
+
@args: Array[untyped]?
|
|
14
|
+
@retries: Integer
|
|
15
|
+
@started: Float
|
|
16
|
+
@token: untyped
|
|
17
|
+
|
|
18
|
+
def initialize: (untyped element, Symbol action, Array[untyped]? args) -> void
|
|
19
|
+
def ready: (Integer retries) -> untyped
|
|
20
|
+
def finish: (Exception? error) -> untyped
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def finished: (Exception? error) -> Hash[Symbol, untyped]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.emit_action: (untyped element, Symbol action, ?Array[untyped]? args) { (Run?) -> untyped } -> untyped
|
|
28
|
+
def self.started: (untyped element, Symbol action, Array[untyped]? args) -> Hash[Symbol, untyped]
|
|
29
|
+
def self.locator_of: (untyped element) -> Hash[Symbol, untyped]?
|
|
30
|
+
def self.stamp: (untyped element, Array[untyped] args, untyped parent) -> untyped
|
|
31
|
+
def self.stamp_all: (Array[untyped] elements, Array[untyped] args, untyped parent) -> Array[untyped]
|
|
32
|
+
def self.guarded: () { () -> untyped } -> untyped
|
|
33
|
+
def self.stop: (untyped watcher, Exception error) -> nil
|
|
34
|
+
def self.millis: (Float started) -> Integer
|
|
35
|
+
def self.clock: () -> Float
|
|
36
|
+
|
|
37
|
+
# private singleton helpers
|
|
38
|
+
def self.attach: (untyped element, Hash[Symbol, untyped] stamp) -> untyped
|
|
39
|
+
def self.frozen_stamp: (Array[untyped] args, untyped parent) -> Hash[Symbol, untyped]
|
|
40
|
+
def self.summary: (Exception error) -> String
|
|
41
|
+
def self.describe: (Array[untyped] args, untyped parent) -> Hash[Symbol, untyped]
|
|
42
|
+
def self.selector: (String strategy, untyped what, Array[untyped] args) -> String
|
|
43
|
+
def self.role_text: (Array[untyped] args) -> String
|
|
44
|
+
def self.chain: (untyped parent) -> Array[Hash[Symbol, untyped]]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module RoleFinder
|
|
3
|
+
ENGINE: String
|
|
4
|
+
QUERY: String
|
|
5
|
+
NATIVE_MESSAGE: String
|
|
6
|
+
|
|
7
|
+
def find_elements: (*untyped args) -> Array[untyped]
|
|
8
|
+
def find_element: (*untyped args) -> untyped
|
|
9
|
+
def self.role_args?: (Array[untyped] args) -> bool
|
|
10
|
+
def self.validated: (untyped role) -> String
|
|
11
|
+
def self.parse: (Array[untyped] args) -> [String, Hash[Symbol, untyped]]?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module RoleQuery
|
|
15
|
+
def self.run: (untyped bridge, untyped scope, String role, Hash[Symbol, untyped] options) -> Array[untyped]
|
|
16
|
+
def self.options_js: (Hash[Symbol, untyped] options) -> Hash[String, untyped]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Selectors
|
|
3
|
+
ATTRIBUTE_NAME: Regexp
|
|
4
|
+
LABEL_CONTROLS: String
|
|
5
|
+
EXCLUDED_TEXT: String
|
|
6
|
+
|
|
7
|
+
def self.xpath_literal: (untyped string) -> String
|
|
8
|
+
def self.label: (untyped value, exact: bool) -> String
|
|
9
|
+
def self.text: (untyped value, exact: bool) -> String
|
|
10
|
+
def self.attribute_css: (String name, untyped value, exact: bool) -> String
|
|
11
|
+
def self.test_id: (untyped value) -> String
|
|
12
|
+
def self.match: (String expression, String literal, bool exact) -> String
|
|
13
|
+
|
|
14
|
+
def xpath_literal: (untyped string) -> String
|
|
15
|
+
def label: (untyped value, exact: bool) -> String
|
|
16
|
+
def text: (untyped value, exact: bool) -> String
|
|
17
|
+
def attribute_css: (String name, untyped value, exact: bool) -> String
|
|
18
|
+
def test_id: (untyped value) -> String
|
|
19
|
+
def match: (String expression, String literal, bool exact) -> String
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Locator
|
|
3
|
+
def self.describe: (Array[untyped] args) -> String
|
|
4
|
+
def self.from_hash: (Hash[untyped, untyped] hash) -> String
|
|
5
|
+
def self.role_arguments: (untyped value) -> String
|
|
6
|
+
def self.plain_arguments: (untyped value) -> String
|
|
7
|
+
def self.render_options: (untyped options) -> Array[String]
|
|
8
|
+
|
|
9
|
+
def describe: (Array[untyped] args) -> String
|
|
10
|
+
def from_hash: (Hash[untyped, untyped] hash) -> String
|
|
11
|
+
def role_arguments: (untyped value) -> String
|
|
12
|
+
def plain_arguments: (untyped value) -> String
|
|
13
|
+
def render_options: (untyped options) -> Array[String]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module StrictFinder
|
|
17
|
+
def find_element: (*untyped) -> Selenium::WebDriver::Element
|
|
18
|
+
def find_elements: (*untyped) -> Array[Selenium::WebDriver::Element]
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def await_element: (Array[untyped] args, ^() -> Selenium::WebDriver::Element?) -> Selenium::WebDriver::Element?
|
|
23
|
+
def element_attempt: (Array[untyped] args) { () -> untyped } -> ^() -> Selenium::WebDriver::Element?
|
|
24
|
+
def elements_attempt: (Array[untyped] args) { () -> untyped } -> ^() -> Array[Selenium::WebDriver::Element]
|
|
25
|
+
def role_attempt: (Array[untyped] args) -> ^() -> Array[Selenium::WebDriver::Element]
|
|
26
|
+
def sole: (Array[untyped] args, Array[Selenium::WebDriver::Element] found, bool? strict) -> Selenium::WebDriver::Element?
|
|
27
|
+
def native_or_nil: () { () -> untyped } -> untyped
|
|
28
|
+
def not_found: (Array[untyped] args) -> String
|
|
29
|
+
def clock: () -> Float
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
module StrictFirst
|
|
33
|
+
def first: (*untyped) -> Selenium::WebDriver::Element
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Raider
|
|
2
|
+
module Wait
|
|
3
|
+
DEADLINE_KEY: Symbol
|
|
4
|
+
IMMEDIATE_KEY: Symbol
|
|
5
|
+
|
|
6
|
+
def self.deadline: () -> Float?
|
|
7
|
+
def self.immediately: [T] () { () -> T } -> T
|
|
8
|
+
def self.immediate?: () -> bool
|
|
9
|
+
def self.until: (?timeout: Numeric?, ?interval: Numeric) { () -> untyped } -> untyped
|
|
10
|
+
|
|
11
|
+
# private singleton helpers
|
|
12
|
+
def self.limits: (Numeric? timeout) -> [Float, Float]
|
|
13
|
+
def self.within: [T] (Float limit) { () -> T } -> T
|
|
14
|
+
def self.pause: (Float limit, Numeric interval) -> void
|
|
15
|
+
def self.now: () -> Float
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
# Type definitions for ScaffoldProjectDetector
|
|
2
2
|
module ScaffoldProjectDetector
|
|
3
3
|
AUTOMATION_GEMS: Hash[String, String]
|
|
4
|
-
FRAMEWORK_GEMS: Hash[String, String]
|
|
5
4
|
|
|
6
5
|
def self?.detect: () -> Hash[Symbol, String | bool | nil]
|
|
7
6
|
def self?.detect_automation: (?String? gemfile) -> String
|
|
8
|
-
def self?.detect_framework: (?String? gemfile) -> String
|
|
9
7
|
def self?.read_gemfile: () -> String
|
|
10
8
|
def self?.selenium?: () -> bool
|
|
11
|
-
def self?.watir?: () -> bool
|
|
12
|
-
def self?.wait_helper?: () -> bool
|
|
13
9
|
def self?.config: () -> Hash[String, untyped]
|
|
14
10
|
end
|
|
@@ -6,10 +6,8 @@ class Scaffolding < Thor::Group
|
|
|
6
6
|
|
|
7
7
|
# Generation methods
|
|
8
8
|
def generate_page: () -> void
|
|
9
|
-
def generate_feature: () -> void
|
|
10
9
|
def generate_spec: () -> void
|
|
11
10
|
def generate_helper: () -> void
|
|
12
|
-
def generate_steps: () -> void
|
|
13
11
|
def generate_component: () -> void
|
|
14
12
|
def generate_config: () -> void
|
|
15
13
|
|
|
@@ -21,10 +19,7 @@ class Scaffolding < Thor::Group
|
|
|
21
19
|
def module_parts: () -> Array[String]
|
|
22
20
|
def leaf_name: () -> String
|
|
23
21
|
def automation_type: () -> String
|
|
24
|
-
def framework_type: () -> String
|
|
25
22
|
def project_config: () -> Hash[String, untyped]
|
|
26
23
|
def selenium?: () -> bool
|
|
27
|
-
def watir?: () -> bool
|
|
28
|
-
def wait_helper?: () -> bool
|
|
29
24
|
def default_path: (String standard_path, String file_type) -> String
|
|
30
25
|
end
|
data/sig/utilities/utilities.rbs
CHANGED
|
@@ -5,7 +5,6 @@ module Utilities
|
|
|
5
5
|
def self?.browser=: (String browser) -> void
|
|
6
6
|
def self?.page_path=: (String path) -> void
|
|
7
7
|
def self?.spec_path=: (String path) -> void
|
|
8
|
-
def self?.feature_path=: (String path) -> void
|
|
9
8
|
def self?.helper_path=: (String path) -> void
|
|
10
9
|
def self?.url=: (String url) -> void
|
|
11
10
|
def self?.timeout=: (String | Integer seconds) -> void
|
|
@@ -13,6 +12,8 @@ module Utilities
|
|
|
13
12
|
def self?.platform=: (String platform) -> void
|
|
14
13
|
def self?.browser_options=: (Array[String] opts) -> void
|
|
15
14
|
def self?.delete_browser_options: () -> void
|
|
15
|
+
def self?.strict=: (bool enabled) -> void
|
|
16
|
+
def self?.actionability=: (bool enabled) -> void
|
|
16
17
|
def self?.video_enabled=: (bool enabled) -> void
|
|
17
18
|
def self?.trace_enabled=: (bool enabled) -> void
|
|
18
19
|
def self?.batch_update: (**untyped settings) -> void
|