playwright-ruby-client 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/README.md +33 -0
  3. data/documentation/babel.config.js +3 -0
  4. data/documentation/docs/api/accessibility.md +7 -0
  5. data/documentation/docs/api/browser.md +185 -0
  6. data/documentation/docs/api/browser_context.md +398 -0
  7. data/documentation/docs/api/browser_type.md +105 -0
  8. data/documentation/docs/api/cdp_session.md +7 -0
  9. data/documentation/docs/api/console_message.md +41 -0
  10. data/documentation/docs/api/dialog.md +74 -0
  11. data/documentation/docs/api/element_handle.md +640 -0
  12. data/documentation/docs/api/experimental/_category_.yml +3 -0
  13. data/documentation/docs/api/experimental/android.md +25 -0
  14. data/documentation/docs/api/experimental/android_device.md +91 -0
  15. data/documentation/docs/api/experimental/android_input.md +38 -0
  16. data/documentation/docs/api/experimental/android_socket.md +7 -0
  17. data/documentation/docs/api/experimental/android_web_view.md +7 -0
  18. data/documentation/docs/api/file_chooser.md +51 -0
  19. data/documentation/docs/api/frame.md +867 -0
  20. data/documentation/docs/api/js_handle.md +116 -0
  21. data/documentation/docs/api/keyboard.md +157 -0
  22. data/documentation/docs/api/mouse.md +69 -0
  23. data/documentation/docs/api/page.md +1469 -0
  24. data/documentation/docs/api/playwright.md +63 -0
  25. data/documentation/docs/api/request.md +188 -0
  26. data/documentation/docs/api/response.md +97 -0
  27. data/documentation/docs/api/route.md +80 -0
  28. data/documentation/docs/api/selectors.md +23 -0
  29. data/documentation/docs/api/touchscreen.md +8 -0
  30. data/documentation/docs/api/tracing.md +54 -0
  31. data/documentation/docs/api/web_socket.md +7 -0
  32. data/documentation/docs/api/worker.md +7 -0
  33. data/documentation/docs/article/api_coverage.mdx +11 -0
  34. data/documentation/docs/article/getting_started.md +152 -0
  35. data/documentation/docs/article/guides/_category_.yml +3 -0
  36. data/documentation/docs/article/guides/download_playwright_driver.md +49 -0
  37. data/documentation/docs/article/guides/launch_browser.md +119 -0
  38. data/documentation/docs/article/guides/rails_integration.md +51 -0
  39. data/{docs → documentation/docs/include}/api_coverage.md +0 -0
  40. data/documentation/docusaurus.config.js +107 -0
  41. data/documentation/package.json +39 -0
  42. data/documentation/sidebars.js +15 -0
  43. data/documentation/src/components/HomepageFeatures.js +61 -0
  44. data/documentation/src/components/HomepageFeatures.module.css +13 -0
  45. data/documentation/src/css/custom.css +44 -0
  46. data/documentation/src/pages/index.js +50 -0
  47. data/documentation/src/pages/index.module.css +41 -0
  48. data/documentation/src/pages/markdown-page.md +7 -0
  49. data/documentation/static/.nojekyll +0 -0
  50. data/documentation/static/img/playwright-logo.svg +9 -0
  51. data/documentation/static/img/undraw_dropdown_menu.svg +1 -0
  52. data/documentation/static/img/undraw_web_development.svg +1 -0
  53. data/documentation/static/img/undraw_windows.svg +1 -0
  54. data/documentation/yarn.lock +8805 -0
  55. data/lib/playwright/channel_owners/binding_call.rb +33 -0
  56. data/lib/playwright/channel_owners/browser_context.rb +2 -2
  57. data/lib/playwright/channel_owners/element_handle.rb +2 -10
  58. data/lib/playwright/channel_owners/frame.rb +6 -28
  59. data/lib/playwright/channel_owners/js_handle.rb +2 -10
  60. data/lib/playwright/channel_owners/page.rb +10 -1
  61. data/lib/playwright/input_files.rb +0 -8
  62. data/lib/playwright/javascript.rb +0 -10
  63. data/lib/playwright/javascript/expression.rb +2 -7
  64. data/lib/playwright/version.rb +1 -1
  65. data/lib/playwright_api/accessibility.rb +7 -89
  66. data/lib/playwright_api/android.rb +7 -64
  67. data/lib/playwright_api/android_device.rb +8 -8
  68. data/lib/playwright_api/browser.rb +15 -169
  69. data/lib/playwright_api/browser_context.rb +47 -609
  70. data/lib/playwright_api/browser_type.rb +13 -103
  71. data/lib/playwright_api/cdp_session.rb +2 -25
  72. data/lib/playwright_api/console_message.rb +6 -6
  73. data/lib/playwright_api/dialog.rb +11 -92
  74. data/lib/playwright_api/element_handle.rb +60 -362
  75. data/lib/playwright_api/file_chooser.rb +0 -28
  76. data/lib/playwright_api/frame.rb +74 -713
  77. data/lib/playwright_api/js_handle.rb +16 -90
  78. data/lib/playwright_api/keyboard.rb +21 -213
  79. data/lib/playwright_api/mouse.rb +1 -45
  80. data/lib/playwright_api/page.rb +155 -1635
  81. data/lib/playwright_api/playwright.rb +14 -117
  82. data/lib/playwright_api/request.rb +15 -121
  83. data/lib/playwright_api/response.rb +9 -9
  84. data/lib/playwright_api/route.rb +8 -105
  85. data/lib/playwright_api/selectors.rb +6 -97
  86. data/lib/playwright_api/tracing.rb +1 -61
  87. data/lib/playwright_api/web_socket.rb +1 -1
  88. data/lib/playwright_api/worker.rb +6 -42
  89. metadata +55 -4
  90. data/lib/playwright/javascript/function.rb +0 -67
@@ -0,0 +1,63 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # Playwright
6
+
7
+ Playwright module provides a method to launch a browser instance. The following is a typical example of using Playwright
8
+ to drive automation:
9
+
10
+ ```ruby
11
+ require 'playwright'
12
+
13
+ Playwright.create(playwright_cli_executable_path: 'npx playwright') do |playwright|
14
+ chromium = playwright.chromium # or "firefox" or "webkit".
15
+ chromium.launch do |browser|
16
+ page = browser.new_page
17
+ page.goto('https://example.com/')
18
+
19
+ # other actions
20
+
21
+ end
22
+ end
23
+ ```
24
+
25
+
26
+
27
+ ## chromium
28
+
29
+ This object can be used to launch or connect to Chromium, returning instances of [Browser](./browser).
30
+
31
+ ## devices
32
+
33
+ Returns a dictionary of devices to be used with [Browser#new_context](./browser#new_context) or [Browser#new_page](./browser#new_page).
34
+
35
+ ```ruby
36
+ require 'playwright'
37
+
38
+ Playwright.create(playwright_cli_executable_path: 'npx playwright') do |playwright|
39
+ iphone = playwright.devices["iPhone 6"]
40
+ playwright.webkit.launch do |browser|
41
+ context = browser.new_context(**iphone)
42
+ page = context.new_page
43
+ page.goto('https://example.com/')
44
+
45
+ # other actions
46
+
47
+ end
48
+ end
49
+ ```
50
+
51
+
52
+ ## firefox
53
+
54
+ This object can be used to launch or connect to Firefox, returning instances of [Browser](./browser).
55
+
56
+ ## selectors
57
+
58
+ Selectors can be used to install custom selector engines. See [Working with selectors](https://playwright.dev/python/docs/selectors) for more
59
+ information.
60
+
61
+ ## webkit
62
+
63
+ This object can be used to launch or connect to WebKit, returning instances of [Browser](./browser).
@@ -0,0 +1,188 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # Request
6
+
7
+ Whenever the page sends a request for a network resource the following sequence of events are emitted by [Page](./page):
8
+ - [`event: Page.request`] emitted when the request is issued by the page.
9
+ - [`event: Page.response`] emitted when/if the response status and headers are received for the request.
10
+ - [`event: Page.requestFinished`] emitted when the response body is downloaded and the request is complete.
11
+
12
+ If request fails at some point, then instead of `'requestfinished'` event (and possibly instead of 'response' event),
13
+ the [`event: Page.requestFailed`] event is emitted.
14
+
15
+ > NOTE: HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request will
16
+ complete with `'requestfinished'` event.
17
+
18
+ If request gets a 'redirect' response, the request is successfully finished with the 'requestfinished' event, and a new
19
+ request is issued to a redirected url.
20
+
21
+ ## failure
22
+
23
+ ```
24
+ def failure
25
+ ```
26
+
27
+ The method returns `null` unless this request has failed, as reported by `requestfailed` event.
28
+
29
+ Example of logging of all the failed requests:
30
+
31
+ ```py title=example_5f3f4534ab17f584cfd41ca38448ce7de9490b6588e29e73116ede3cb15a25a5.py
32
+ page.on("requestfailed", lambda request: print(request.url + " " + request.failure))
33
+
34
+ ```
35
+
36
+
37
+
38
+ ## frame
39
+
40
+ ```
41
+ def frame
42
+ ```
43
+
44
+ Returns the [Frame](./frame) that initiated this request.
45
+
46
+ ## headers
47
+
48
+ ```
49
+ def headers
50
+ ```
51
+
52
+ An object with HTTP headers associated with the request. All header names are lower-case.
53
+
54
+ ## navigation_request?
55
+
56
+ ```
57
+ def navigation_request?
58
+ ```
59
+
60
+ Whether this request is driving frame's navigation.
61
+
62
+ ## method
63
+
64
+ ```
65
+ def method
66
+ ```
67
+
68
+ Request's method (GET, POST, etc.)
69
+
70
+ ## post_data
71
+
72
+ ```
73
+ def post_data
74
+ ```
75
+
76
+ Request's post body, if any.
77
+
78
+ ## post_data_buffer
79
+
80
+ ```
81
+ def post_data_buffer
82
+ ```
83
+
84
+ Request's post body in a binary form, if any.
85
+
86
+ ## post_data_json
87
+
88
+ ```
89
+ def post_data_json
90
+ ```
91
+
92
+ Returns parsed request's body for `form-urlencoded` and JSON as a fallback if any.
93
+
94
+ When the response is `application/x-www-form-urlencoded` then a key/value object of the values will be returned.
95
+ Otherwise it will be parsed as JSON.
96
+
97
+ ## redirected_from
98
+
99
+ ```
100
+ def redirected_from
101
+ ```
102
+
103
+ Request that was redirected by the server to this one, if any.
104
+
105
+ When the server responds with a redirect, Playwright creates a new [Request](./request) object. The two requests are connected by
106
+ `redirectedFrom()` and `redirectedTo()` methods. When multiple server redirects has happened, it is possible to
107
+ construct the whole redirect chain by repeatedly calling `redirectedFrom()`.
108
+
109
+ For example, if the website `http://example.com` redirects to `https://example.com`:
110
+
111
+ ```python sync title=example_89568fc86bf623eef37b68c6659b1a8524647c8365bb32a7a8af63bd86111075.py
112
+ response = page.goto("http://example.com")
113
+ print(response.request.redirected_from.url) # "http://example.com"
114
+
115
+ ```
116
+
117
+ If the website `https://google.com` has no redirects:
118
+
119
+ ```python sync title=example_6d7b3fbf8d69dbe639b71fedc5a8977777fca29dfb16d38012bb07c496342472.py
120
+ response = page.goto("https://google.com")
121
+ print(response.request.redirected_from) # None
122
+
123
+ ```
124
+
125
+
126
+
127
+ ## redirected_to
128
+
129
+ ```
130
+ def redirected_to
131
+ ```
132
+
133
+ New request issued by the browser if the server responded with redirect.
134
+
135
+ This method is the opposite of [Request#redirected_from](./request#redirected_from):
136
+
137
+ ```py title=example_922623f4033e7ec2158787e54a8554655f7e1e20a024e4bf4f69337f781ab88a.py
138
+ assert request.redirected_from.redirected_to == request
139
+
140
+ ```
141
+
142
+
143
+
144
+ ## resource_type
145
+
146
+ ```
147
+ def resource_type
148
+ ```
149
+
150
+ Contains the request's resource type as it was perceived by the rendering engine. ResourceType will be one of the
151
+ following: `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`,
152
+ `websocket`, `manifest`, `other`.
153
+
154
+ ## response
155
+
156
+ ```
157
+ def response
158
+ ```
159
+
160
+ Returns the matching [Response](./response) object, or `null` if the response was not received due to error.
161
+
162
+ ## timing
163
+
164
+ ```
165
+ def timing
166
+ ```
167
+
168
+ Returns resource timing information for given request. Most of the timing values become available upon the response,
169
+ `responseEnd` becomes available when request finishes. Find more information at
170
+ [Resource Timing API](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming).
171
+
172
+ ```python sync title=example_e2a297fe95fd0699b6a856c3be2f28106daa2615c0f4d6084f5012682a619d20.py
173
+ with page.expect_event("requestfinished") as request_info:
174
+ page.goto("http://example.com")
175
+ request = request_info.value
176
+ print(request.timing)
177
+
178
+ ```
179
+
180
+
181
+
182
+ ## url
183
+
184
+ ```
185
+ def url
186
+ ```
187
+
188
+ URL of the request.
@@ -0,0 +1,97 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # Response
6
+
7
+ [Response](./response) class represents responses which are received by page.
8
+
9
+ ## body
10
+
11
+ ```
12
+ def body
13
+ ```
14
+
15
+ Returns the buffer with response body.
16
+
17
+ ## finished
18
+
19
+ ```
20
+ def finished
21
+ ```
22
+
23
+ Waits for this response to finish, returns failure error if request failed.
24
+
25
+ ## frame
26
+
27
+ ```
28
+ def frame
29
+ ```
30
+
31
+ Returns the [Frame](./frame) that initiated this response.
32
+
33
+ ## headers
34
+
35
+ ```
36
+ def headers
37
+ ```
38
+
39
+ Returns the object with HTTP headers associated with the response. All header names are lower-case.
40
+
41
+ ## json
42
+
43
+ ```
44
+ def json
45
+ ```
46
+
47
+ Returns the JSON representation of response body.
48
+
49
+ This method will throw if the response body is not parsable via `JSON.parse`.
50
+
51
+ ## ok
52
+
53
+ ```
54
+ def ok
55
+ ```
56
+
57
+ Contains a boolean stating whether the response was successful (status in the range 200-299) or not.
58
+
59
+ ## request
60
+
61
+ ```
62
+ def request
63
+ ```
64
+
65
+ Returns the matching [Request](./request) object.
66
+
67
+ ## status
68
+
69
+ ```
70
+ def status
71
+ ```
72
+
73
+ Contains the status code of the response (e.g., 200 for a success).
74
+
75
+ ## status_text
76
+
77
+ ```
78
+ def status_text
79
+ ```
80
+
81
+ Contains the status text of the response (e.g. usually an "OK" for a success).
82
+
83
+ ## text
84
+
85
+ ```
86
+ def text
87
+ ```
88
+
89
+ Returns the text representation of response body.
90
+
91
+ ## url
92
+
93
+ ```
94
+ def url
95
+ ```
96
+
97
+ Contains the URL of the response.
@@ -0,0 +1,80 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # Route
6
+
7
+ Whenever a network route is set up with [Page#route](./page#route) or [BrowserContext#route](./browser_context#route), the [Route](./route) object
8
+ allows to handle the route.
9
+
10
+ ## abort
11
+
12
+ ```
13
+ def abort(errorCode: nil)
14
+ ```
15
+
16
+ Aborts the route's request.
17
+
18
+ ## continue
19
+
20
+ ```
21
+ def continue(headers: nil, method: nil, postData: nil, url: nil)
22
+ ```
23
+
24
+ Continues route's request with optional overrides.
25
+
26
+ ```python sync title=example_1960aabd58c9553683368e29429d39c1209d35e6e3625bbef1280a1fa022a9ee.py
27
+ def handle(route, request):
28
+ # override headers
29
+ headers = {
30
+ **request.headers,
31
+ "foo": "bar" # set "foo" header
32
+ "origin": None # remove "origin" header
33
+ }
34
+ route.continue_(headers=headers)
35
+ }
36
+ page.route("**/*", handle)
37
+
38
+ ```
39
+
40
+
41
+
42
+ ## fulfill
43
+
44
+ ```
45
+ def fulfill(
46
+ body: nil,
47
+ contentType: nil,
48
+ headers: nil,
49
+ path: nil,
50
+ status: nil)
51
+ ```
52
+
53
+ Fulfills route's request with given response.
54
+
55
+ An example of fulfilling all requests with 404 responses:
56
+
57
+ ```python sync title=example_6d2dfd4bb5c8360f8d80bb91c563b0bd9b99aa24595063cf85e5a6e1b105f89c.py
58
+ page.route("**/*", lambda route: route.fulfill(
59
+ status=404,
60
+ content_type="text/plain",
61
+ body="not found!"))
62
+
63
+ ```
64
+
65
+ An example of serving static file:
66
+
67
+ ```python sync title=example_c77fd0986d0b74c905cd9417756c76775e612cc86410f9a5aabc5b46d233d150.py
68
+ page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json"))
69
+
70
+ ```
71
+
72
+
73
+
74
+ ## request
75
+
76
+ ```
77
+ def request
78
+ ```
79
+
80
+ A request to be routed.
@@ -0,0 +1,23 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # Selectors
6
+
7
+ Selectors can be used to install custom selector engines. See [Working with selectors](https://playwright.dev/python/docs/selectors) for more
8
+ information.
9
+
10
+ ## register
11
+
12
+ ```
13
+ def register(name, contentScript: nil, path: nil, script: nil)
14
+ ```
15
+
16
+ An example of registering selector engine that queries elements based on a tag name:
17
+
18
+ ```python sync title=example_49f0cb9b5a21d0d5fe2b180c847bdb21068b335b4c2f42d5c05eb1957297899f.py
19
+ # FIXME: add snippet
20
+
21
+ ```
22
+
23
+