puppeteer-ruby 0.45.6 → 0.50.0.alpha6

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -3
  3. data/AGENTS.md +170 -0
  4. data/CLAUDE/README.md +41 -0
  5. data/CLAUDE/architecture.md +253 -0
  6. data/CLAUDE/cdp_protocol.md +230 -0
  7. data/CLAUDE/concurrency.md +216 -0
  8. data/CLAUDE/porting_puppeteer.md +605 -0
  9. data/CLAUDE/rbs_type_checking.md +101 -0
  10. data/CLAUDE/spec_migration_plans.md +1039 -0
  11. data/CLAUDE/testing.md +278 -0
  12. data/CLAUDE.md +242 -0
  13. data/README.md +9 -0
  14. data/Rakefile +7 -0
  15. data/Steepfile +28 -0
  16. data/docs/api_coverage.md +106 -57
  17. data/lib/puppeteer/aria_query_handler.rb +3 -2
  18. data/lib/puppeteer/async_utils.rb +214 -0
  19. data/lib/puppeteer/browser.rb +98 -56
  20. data/lib/puppeteer/browser_connector.rb +18 -3
  21. data/lib/puppeteer/browser_context.rb +196 -3
  22. data/lib/puppeteer/browser_runner.rb +18 -10
  23. data/lib/puppeteer/cdp_session.rb +67 -23
  24. data/lib/puppeteer/chrome_target_manager.rb +65 -40
  25. data/lib/puppeteer/connection.rb +55 -36
  26. data/lib/puppeteer/console_message.rb +9 -1
  27. data/lib/puppeteer/console_patch.rb +47 -0
  28. data/lib/puppeteer/css_coverage.rb +5 -3
  29. data/lib/puppeteer/custom_query_handler.rb +80 -33
  30. data/lib/puppeteer/define_async_method.rb +31 -37
  31. data/lib/puppeteer/dialog.rb +47 -14
  32. data/lib/puppeteer/element_handle.rb +236 -62
  33. data/lib/puppeteer/emulation_manager.rb +1 -1
  34. data/lib/puppeteer/env.rb +1 -1
  35. data/lib/puppeteer/errors.rb +25 -2
  36. data/lib/puppeteer/event_callbackable.rb +15 -0
  37. data/lib/puppeteer/events.rb +4 -0
  38. data/lib/puppeteer/execution_context.rb +148 -3
  39. data/lib/puppeteer/file_chooser.rb +6 -0
  40. data/lib/puppeteer/frame.rb +177 -91
  41. data/lib/puppeteer/frame_manager.rb +69 -48
  42. data/lib/puppeteer/http_request.rb +114 -38
  43. data/lib/puppeteer/http_response.rb +24 -7
  44. data/lib/puppeteer/isolated_world.rb +64 -41
  45. data/lib/puppeteer/js_coverage.rb +5 -3
  46. data/lib/puppeteer/js_handle.rb +77 -16
  47. data/lib/puppeteer/keyboard.rb +30 -17
  48. data/lib/puppeteer/launcher/browser_options.rb +3 -1
  49. data/lib/puppeteer/launcher/chrome.rb +8 -5
  50. data/lib/puppeteer/launcher/launch_options.rb +7 -2
  51. data/lib/puppeteer/launcher.rb +4 -8
  52. data/lib/puppeteer/lifecycle_watcher.rb +38 -22
  53. data/lib/puppeteer/locators.rb +733 -0
  54. data/lib/puppeteer/mouse.rb +273 -64
  55. data/lib/puppeteer/network_event_manager.rb +7 -0
  56. data/lib/puppeteer/network_manager.rb +393 -112
  57. data/lib/puppeteer/p_query_handler.rb +367 -0
  58. data/lib/puppeteer/p_selector_parser.rb +241 -0
  59. data/lib/puppeteer/page/screenshot_task_queue.rb +14 -4
  60. data/lib/puppeteer/page.rb +583 -226
  61. data/lib/puppeteer/puppeteer.rb +171 -64
  62. data/lib/puppeteer/query_handler_manager.rb +66 -16
  63. data/lib/puppeteer/reactor_runner.rb +247 -0
  64. data/lib/puppeteer/remote_object.rb +127 -47
  65. data/lib/puppeteer/target.rb +74 -27
  66. data/lib/puppeteer/task_manager.rb +3 -1
  67. data/lib/puppeteer/timeout_helper.rb +6 -10
  68. data/lib/puppeteer/touch_handle.rb +39 -0
  69. data/lib/puppeteer/touch_screen.rb +72 -22
  70. data/lib/puppeteer/tracing.rb +3 -3
  71. data/lib/puppeteer/version.rb +1 -1
  72. data/lib/puppeteer/wait_task.rb +264 -101
  73. data/lib/puppeteer/web_socket.rb +2 -2
  74. data/lib/puppeteer/web_socket_transport.rb +91 -27
  75. data/lib/puppeteer/web_worker.rb +175 -0
  76. data/lib/puppeteer.rb +23 -4
  77. data/puppeteer-ruby.gemspec +15 -11
  78. data/sig/_external.rbs +8 -0
  79. data/sig/_supplementary.rbs +314 -0
  80. data/sig/puppeteer/browser.rbs +166 -0
  81. data/sig/puppeteer/cdp_session.rbs +64 -0
  82. data/sig/puppeteer/dialog.rbs +41 -0
  83. data/sig/puppeteer/element_handle.rbs +308 -0
  84. data/sig/puppeteer/execution_context.rbs +87 -0
  85. data/sig/puppeteer/frame.rbs +233 -0
  86. data/sig/puppeteer/http_request.rbs +214 -0
  87. data/sig/puppeteer/http_response.rbs +89 -0
  88. data/sig/puppeteer/js_handle.rbs +64 -0
  89. data/sig/puppeteer/keyboard.rbs +40 -0
  90. data/sig/puppeteer/locators.rbs +222 -0
  91. data/sig/puppeteer/mouse.rbs +113 -0
  92. data/sig/puppeteer/p_query_handler.rbs +73 -0
  93. data/sig/puppeteer/p_selector_parser.rbs +31 -0
  94. data/sig/puppeteer/page.rbs +522 -0
  95. data/sig/puppeteer/puppeteer.rbs +98 -0
  96. data/sig/puppeteer/remote_object.rbs +78 -0
  97. data/sig/puppeteer/touch_handle.rbs +21 -0
  98. data/sig/puppeteer/touch_screen.rbs +35 -0
  99. data/sig/puppeteer/web_worker.rbs +83 -0
  100. metadata +122 -45
  101. data/CHANGELOG.md +0 -397
  102. data/lib/puppeteer/concurrent_ruby_utils.rb +0 -81
  103. data/lib/puppeteer/firefox_target_manager.rb +0 -157
  104. data/lib/puppeteer/launcher/firefox.rb +0 -453
@@ -0,0 +1,113 @@
1
+ # Generated from lib/puppeteer/mouse.rb with RBS::Inline
2
+
3
+ class Puppeteer::Mouse
4
+ module Button
5
+ NONE: ::String
6
+
7
+ LEFT: ::String
8
+
9
+ RIGHT: ::String
10
+
11
+ MIDDLE: ::String
12
+
13
+ BACK: ::String
14
+
15
+ FORWARD: ::String
16
+ end
17
+
18
+ module ButtonFlag
19
+ NONE: ::Integer
20
+
21
+ LEFT: ::Integer
22
+
23
+ RIGHT: untyped
24
+
25
+ MIDDLE: untyped
26
+
27
+ BACK: untyped
28
+
29
+ FORWARD: untyped
30
+ end
31
+
32
+ # @rbs client: Puppeteer::CDPSession -- CDP session
33
+ # @rbs keyboard: Puppeteer::Keyboard -- Keyboard instance
34
+ # @rbs return: void -- No return value
35
+ def initialize: (Puppeteer::CDPSession client, Puppeteer::Keyboard keyboard) -> void
36
+
37
+ # @rbs return: void -- No return value
38
+ def reset: () -> void
39
+
40
+ # @rbs x: Numeric -- X coordinate
41
+ # @rbs y: Numeric -- Y coordinate
42
+ # @rbs steps: Integer? -- Number of intermediate steps
43
+ # @rbs return: void -- No return value
44
+ def move: (Numeric x, Numeric y, ?steps: Integer?) -> void
45
+
46
+ # @rbs x: Numeric -- X coordinate
47
+ # @rbs y: Numeric -- Y coordinate
48
+ # @rbs delay: Numeric? -- Delay between down and up (ms)
49
+ # @rbs button: String? -- Mouse button
50
+ # @rbs click_count: Integer? -- Deprecated: use count (click_count only sets clickCount)
51
+ # @rbs count: Integer? -- Number of click repetitions
52
+ # @rbs return: void -- No return value
53
+ def click: (Numeric x, Numeric y, ?delay: Numeric?, ?button: String?, ?click_count: Integer?, ?count: Integer?) -> void
54
+
55
+ private def warn_deprecated_click_count: () -> untyped
56
+
57
+ attr_accessor deprecated_click_count_warned: untyped
58
+
59
+ # @rbs button: String? -- Mouse button
60
+ # @rbs click_count: Integer? -- Click count to report
61
+ # @rbs return: void -- No return value
62
+ def down: (?button: String?, ?click_count: Integer?) -> void
63
+
64
+ # @rbs button: String? -- Mouse button
65
+ # @rbs click_count: Integer? -- Click count to report
66
+ # @rbs return: void -- No return value
67
+ def up: (?button: String?, ?click_count: Integer?) -> void
68
+
69
+ # Dispatches a `mousewheel` event.
70
+ #
71
+ # @rbs delta_x: Numeric -- Scroll delta X
72
+ # @rbs delta_y: Numeric -- Scroll delta Y
73
+ # @rbs return: void -- No return value
74
+ def wheel: (?delta_x: Numeric, ?delta_y: Numeric) -> void
75
+
76
+ # @rbs start: Puppeteer::ElementHandle::Point -- Drag start point
77
+ # @rbs target: Puppeteer::ElementHandle::Point -- Drag end point
78
+ # @rbs return: Hash[String, untyped] -- Drag data payload
79
+ def drag: (Puppeteer::ElementHandle::Point start, Puppeteer::ElementHandle::Point target) -> Hash[String, untyped]
80
+
81
+ # @rbs target: Puppeteer::ElementHandle::Point -- Drag target point
82
+ # @rbs data: Hash[String, untyped] -- Drag data payload
83
+ # @rbs return: void -- No return value
84
+ def drag_enter: (Puppeteer::ElementHandle::Point target, Hash[String, untyped] data) -> void
85
+
86
+ # @rbs target: Puppeteer::ElementHandle::Point -- Drag target point
87
+ # @rbs data: Hash[String, untyped] -- Drag data payload
88
+ # @rbs return: void -- No return value
89
+ def drag_over: (Puppeteer::ElementHandle::Point target, Hash[String, untyped] data) -> void
90
+
91
+ # @rbs target: Puppeteer::ElementHandle::Point -- Drag target point
92
+ # @rbs data: Hash[String, untyped] -- Drag data payload
93
+ # @rbs return: void -- No return value
94
+ def drop: (Puppeteer::ElementHandle::Point target, Hash[String, untyped] data) -> void
95
+
96
+ # @rbs start: Puppeteer::ElementHandle::Point -- Drag start point
97
+ # @rbs target: Puppeteer::ElementHandle::Point -- Drag end point
98
+ # @rbs delay: Numeric? -- Delay before drop (ms)
99
+ # @rbs return: void -- No return value
100
+ def drag_and_drop: (Puppeteer::ElementHandle::Point start, Puppeteer::ElementHandle::Point target, ?delay: Numeric?) -> void
101
+
102
+ private def state: () -> untyped
103
+
104
+ # @rbs block: Proc -- Block receiving state update callback
105
+ # @rbs return: untyped -- Block result
106
+ private def with_transaction: () ?{ (?) -> untyped } -> untyped
107
+
108
+ private def merge_state: (untyped base_state, untyped transaction) -> untyped
109
+
110
+ private def button_flag: (untyped button) -> untyped
111
+
112
+ private def button_from_pressed_buttons: (untyped buttons) -> untyped
113
+ end
@@ -0,0 +1,73 @@
1
+ # Generated from lib/puppeteer/p_query_handler.rb with RBS::Inline
2
+
3
+ class Puppeteer::PQueryHandler
4
+ POLLING_DEFAULT_SECONDS: ::Float
5
+
6
+ CSS_QUERY_SELECTOR_JS: ::String
7
+
8
+ PIERCE_JS: ::String
9
+
10
+ PIERCE_ALL_JS: ::String
11
+
12
+ DOM_SORT_JS: ::String
13
+
14
+ # @rbs query_handler_manager: untyped -- Query handler manager
15
+ # @rbs return: void -- No return value
16
+ def initialize: (?query_handler_manager: untyped) -> void
17
+
18
+ # @rbs element: Puppeteer::ElementHandle -- Root element
19
+ # @rbs selector: String -- PSelector string
20
+ # @rbs return: Puppeteer::ElementHandle? -- First matching element
21
+ def query_one: (Puppeteer::ElementHandle element, String selector) -> Puppeteer::ElementHandle?
22
+
23
+ # @rbs element: Puppeteer::ElementHandle -- Root element
24
+ # @rbs selector: String -- PSelector string
25
+ # @rbs return: Array[Puppeteer::ElementHandle] -- Matching elements
26
+ def query_all: (Puppeteer::ElementHandle element, String selector) -> Array[Puppeteer::ElementHandle]
27
+
28
+ # @rbs element: Puppeteer::ElementHandle -- Root element
29
+ # @rbs selector: String -- PSelector string
30
+ # @rbs return: Puppeteer::JSHandle -- Handle to array of elements
31
+ def query_all_array: (Puppeteer::ElementHandle element, String selector) -> Puppeteer::JSHandle
32
+
33
+ # @rbs element_or_frame: Puppeteer::ElementHandle | Puppeteer::Frame -- Root element or frame
34
+ # @rbs selector: String -- PSelector string
35
+ # @rbs visible: bool? -- Wait for element to be visible
36
+ # @rbs hidden: bool? -- Wait for element to be hidden
37
+ # @rbs timeout: Numeric? -- Timeout in milliseconds
38
+ # @rbs polling: (String | Numeric | nil) -- Polling strategy
39
+ # @rbs return: Puppeteer::ElementHandle? -- Matching element
40
+ def wait_for: (Puppeteer::ElementHandle | Puppeteer::Frame element_or_frame, String selector, visible: bool?, hidden: bool?, timeout: Numeric?, ?polling: String | Numeric | nil) -> Puppeteer::ElementHandle?
41
+
42
+ private
43
+
44
+ def run_complex_selector: (untyped root, untyped complex) -> untyped
45
+
46
+ def apply_compound: (untyped elements, untyped compound) -> untyped
47
+
48
+ def apply_css_selector: (untyped elements, untyped selector) -> untyped
49
+
50
+ def query_css_selector: (untyped element, untyped selector) -> untyped
51
+
52
+ def apply_pseudo_selector: (untyped elements, untyped pseudo) -> untyped
53
+
54
+ def query_handler_for_pseudo: (untyped name) -> untyped
55
+
56
+ def pierce: (untyped elements) -> untyped
57
+
58
+ def pierce_all: (untyped elements) -> untyped
59
+
60
+ def dom_sort: (untyped elements) -> untyped
61
+
62
+ def array_handle_to_elements: (untyped array_handle) -> untyped
63
+
64
+ def ensure_context: (untyped handle, untyped context) -> untyped
65
+
66
+ def transfer_handle: (untyped frame, untyped handle) -> untyped
67
+
68
+ def polling_interval_seconds: (untyped polling, visible: untyped, hidden: untyped) -> untyped
69
+
70
+ def monotonic_time: () -> untyped
71
+
72
+ def raise_timeout: (untyped selector) -> untyped
73
+ end
@@ -0,0 +1,31 @@
1
+ # Generated from lib/puppeteer/p_selector_parser.rb with RBS::Inline
2
+
3
+ module Puppeteer
4
+ module PSelectorParser
5
+ class PseudoSelector
6
+ attr_reader name: untyped
7
+
8
+ attr_reader value: untyped
9
+
10
+ def initialize: (name: untyped, value: untyped) -> untyped
11
+ end
12
+
13
+ PSEUDO_PREFIX: ::String
14
+
15
+ # @rbs selector: String -- Selector to parse
16
+ # @rbs return: [Array[untyped], bool, bool, bool] -- Parsed selectors and flags
17
+ def self.parse: (String selector) -> [ Array[untyped], bool, bool, bool ]
18
+
19
+ def self.flush_storage: (untyped storage, untyped compound) -> untyped
20
+
21
+ def self.parse_name: (untyped selector, untyped index) -> untyped
22
+
23
+ def self.skip_spaces: (untyped selector, untyped index) -> untyped
24
+
25
+ def self.parse_argument: (untyped selector, untyped index) -> untyped
26
+
27
+ def self.starts_with_at?: (untyped selector, untyped index, untyped token) -> untyped
28
+
29
+ def self.unquote: (untyped text) -> untyped
30
+ end
31
+ end