playwright-ruby-client 1.15.beta1 → 1.15.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -14
- data/documentation/docs/api/browser.md +2 -0
- data/documentation/docs/api/browser_context.md +5 -1
- data/documentation/docs/api/browser_type.md +1 -0
- data/documentation/docs/api/element_handle.md +27 -1
- data/documentation/docs/api/experimental/android_device.md +1 -0
- data/documentation/docs/api/fetch_request.md +10 -0
- data/documentation/docs/api/frame.md +28 -0
- data/documentation/docs/api/locator.md +29 -0
- data/documentation/docs/api/mouse.md +11 -0
- data/documentation/docs/api/page.md +35 -2
- data/documentation/docs/api/request.md +34 -1
- data/documentation/docs/api/response.md +37 -2
- data/documentation/docs/api/tracing.md +42 -8
- data/documentation/docs/article/getting_started.md +10 -1
- data/documentation/docs/article/guides/download_playwright_driver.md +9 -0
- data/documentation/docs/article/guides/inspector.md +1 -1
- data/documentation/docs/article/guides/playwright_on_alpine_linux.md +56 -3
- data/documentation/docs/article/guides/rails_integration.md +4 -2
- data/documentation/docs/article/guides/rails_integration_with_null_driver.md +86 -0
- data/documentation/docs/article/guides/recording_video.md +1 -1
- data/documentation/docs/article/guides/semi_automation.md +1 -1
- data/documentation/docs/article/guides/use_storage_state.md +1 -1
- data/documentation/docs/include/api_coverage.md +22 -0
- data/documentation/docusaurus.config.js +1 -0
- data/documentation/package.json +2 -2
- data/documentation/src/pages/index.js +0 -1
- data/documentation/static/img/playwright-ruby-client.png +0 -0
- data/documentation/yarn.lock +625 -549
- data/lib/playwright/channel.rb +36 -2
- data/lib/playwright/channel_owners/artifact.rb +6 -2
- data/lib/playwright/channel_owners/browser.rb +4 -0
- data/lib/playwright/channel_owners/browser_context.rb +21 -14
- data/lib/playwright/channel_owners/element_handle.rb +10 -2
- data/lib/playwright/channel_owners/fetch_request.rb +4 -0
- data/lib/playwright/channel_owners/frame.rb +8 -0
- data/lib/playwright/channel_owners/page.rb +20 -4
- data/lib/playwright/channel_owners/request.rb +53 -17
- data/lib/playwright/channel_owners/response.rb +48 -5
- data/lib/playwright/connection.rb +5 -3
- data/lib/playwright/http_headers.rb +0 -6
- data/lib/playwright/locator_impl.rb +8 -0
- data/lib/playwright/mouse_impl.rb +9 -0
- data/lib/playwright/raw_headers.rb +61 -0
- data/lib/playwright/{route_handler_entry.rb → route_handler.rb} +30 -2
- data/lib/playwright/tracing_impl.rb +18 -7
- data/lib/playwright/transport.rb +2 -0
- data/lib/playwright/utils.rb +8 -0
- data/lib/playwright/version.rb +2 -2
- data/lib/playwright/web_socket_transport.rb +2 -0
- data/lib/playwright.rb +2 -1
- data/lib/playwright_api/android.rb +6 -6
- data/lib/playwright_api/android_device.rb +10 -9
- data/lib/playwright_api/browser.rb +10 -8
- data/lib/playwright_api/browser_context.rb +12 -8
- data/lib/playwright_api/browser_type.rb +8 -7
- data/lib/playwright_api/cdp_session.rb +7 -7
- data/lib/playwright_api/console_message.rb +6 -6
- data/lib/playwright_api/dialog.rb +6 -6
- data/lib/playwright_api/element_handle.rb +31 -8
- data/lib/playwright_api/fetch_request.rb +74 -0
- data/lib/playwright_api/frame.rb +31 -6
- data/lib/playwright_api/js_handle.rb +6 -6
- data/lib/playwright_api/locator.rb +26 -0
- data/lib/playwright_api/mouse.rb +8 -0
- data/lib/playwright_api/page.rb +40 -10
- data/lib/playwright_api/playwright.rb +6 -6
- data/lib/playwright_api/request.rb +30 -4
- data/lib/playwright_api/response.rb +31 -8
- data/lib/playwright_api/route.rb +6 -6
- data/lib/playwright_api/selectors.rb +6 -6
- data/lib/playwright_api/tracing.rb +33 -4
- data/lib/playwright_api/web_socket.rb +6 -6
- data/lib/playwright_api/worker.rb +6 -6
- metadata +12 -6
@@ -2,9 +2,11 @@
|
|
2
2
|
sidebar_position: 3
|
3
3
|
---
|
4
4
|
|
5
|
-
#
|
5
|
+
# Capybara driver for Ruby on Rails application
|
6
6
|
|
7
|
-
`playwright-ruby-client` is a client library just for browser automation
|
7
|
+
`playwright-ruby-client` is a client library just for browser automation, while Rails uses [Capybara](https://github.com/teamcapybara/capybara) for system testing.
|
8
|
+
|
9
|
+
`capybara-playwright-driver` provides a [Capybara](https://github.com/teamcapybara/capybara) driver based on playwright-ruby-client and makes it easy to integrate into Ruby on Rails applications.
|
8
10
|
|
9
11
|
## Installation
|
10
12
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 4
|
3
|
+
---
|
4
|
+
|
5
|
+
# Use Capybara without DSL
|
6
|
+
|
7
|
+
:::note
|
8
|
+
|
9
|
+
This article shows advanced-level configuration of Capybara and RSpec for more accurate automation/testing.
|
10
|
+
If you want to just integrate Playwright into Rails application, refer the basic [configuration guide](./rails_integration)
|
11
|
+
:::
|
12
|
+
|
13
|
+
## Background
|
14
|
+
|
15
|
+
[capybara-playwright-driver](./rails_integration) is easy to configure and migrate from Selenium or another Capybara driver, however it is a little **inaccurate** and would sometimes cause 'flaky test' problem originated from the internal implementation of Capybara DSL.
|
16
|
+
|
17
|
+
Also **we cannot use most of useful Playwright features in Capybara driver**, such as auto-waiting, various kind of selectors, and some users would want to use Playwright features as it is without Capybara DSL.
|
18
|
+
|
19
|
+
This article shows how to use playwright-ruby-client without Capybara DSL in Rails and RSpec.
|
20
|
+
|
21
|
+
## Configure Capybara driver just for launching Rails server
|
22
|
+
|
23
|
+
Capybara prepares the test server only when the configured driver returns true on `needs_server?` method. So we have to implement minimum driver like this:
|
24
|
+
|
25
|
+
```ruby {5-7} title=spec/support/capybara_null_driver.rb
|
26
|
+
RSpec.configure do |config|
|
27
|
+
require 'capybara'
|
28
|
+
|
29
|
+
class CapybaraNullDriver < Capybara::Driver::Base
|
30
|
+
def needs_server?
|
31
|
+
true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Capybara.register_driver(:null) { CapybaraNullDriver.new }
|
36
|
+
|
37
|
+
...
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## Launch browser on each test
|
42
|
+
|
43
|
+
Now Capybara DSL is unavailable with CapybaraNullDriver, we have to manually launch browsers using playwright-ruby-client.
|
44
|
+
|
45
|
+
```rb
|
46
|
+
RSpec.configure do |config|
|
47
|
+
require 'capybara'
|
48
|
+
|
49
|
+
...
|
50
|
+
|
51
|
+
require 'playwright'
|
52
|
+
|
53
|
+
config.around(driver: :null) do |example|
|
54
|
+
Capybara.current_driver = :null
|
55
|
+
|
56
|
+
# Rails server is launched here, at the first time of accessing Capybara.current_session.server
|
57
|
+
base_url = Capybara.current_session.server.base_url
|
58
|
+
|
59
|
+
Playwright.create(playwright_cli_executable_path: './node_modules/.bin/playwright') do |playwright|
|
60
|
+
# pass any option for Playwright#launch and Browser#new_page as you prefer.
|
61
|
+
playwright.chromium.launch(headless: false) do |browser|
|
62
|
+
@playwright_page = browser.new_page(baseURL: base_url)
|
63
|
+
example.run
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
```
|
69
|
+
|
70
|
+
With the configuration above, we can describe system-test codes with native Playwright methods like below:
|
71
|
+
|
72
|
+
```rb
|
73
|
+
require 'rails_helper'
|
74
|
+
|
75
|
+
describe 'example', driver: :null do
|
76
|
+
let!(:user) { FactoryBot.create(:user) }
|
77
|
+
let(:page) { @playwright_page }
|
78
|
+
|
79
|
+
it 'can browse' do
|
80
|
+
page.goto("/tests/#{user.id}")
|
81
|
+
page.wait_for_selector('input').type('hoge')
|
82
|
+
page.keyboard.press('Enter')
|
83
|
+
expect(page.text_content('#content')).to include('hoge')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
```
|
@@ -2,9 +2,12 @@
|
|
2
2
|
|
3
3
|
## Request
|
4
4
|
|
5
|
+
* all_headers
|
5
6
|
* failure
|
6
7
|
* frame
|
7
8
|
* headers
|
9
|
+
* headers_array
|
10
|
+
* header_value
|
8
11
|
* navigation_request?
|
9
12
|
* method
|
10
13
|
* post_data
|
@@ -14,15 +17,20 @@
|
|
14
17
|
* redirected_to
|
15
18
|
* resource_type
|
16
19
|
* response
|
20
|
+
* sizes
|
17
21
|
* timing
|
18
22
|
* url
|
19
23
|
|
20
24
|
## Response
|
21
25
|
|
26
|
+
* all_headers
|
22
27
|
* body
|
23
28
|
* finished
|
24
29
|
* frame
|
25
30
|
* headers
|
31
|
+
* headers_array
|
32
|
+
* header_value
|
33
|
+
* header_values
|
26
34
|
* json
|
27
35
|
* ok
|
28
36
|
* request
|
@@ -40,6 +48,13 @@
|
|
40
48
|
* fulfill
|
41
49
|
* request
|
42
50
|
|
51
|
+
## FetchRequest
|
52
|
+
|
53
|
+
* ~~dispose~~
|
54
|
+
* ~~fetch~~
|
55
|
+
* ~~get~~
|
56
|
+
* ~~post~~
|
57
|
+
|
43
58
|
## WebSocket
|
44
59
|
|
45
60
|
* closed?
|
@@ -62,6 +77,7 @@
|
|
62
77
|
* down
|
63
78
|
* move
|
64
79
|
* up
|
80
|
+
* wheel
|
65
81
|
|
66
82
|
## Touchscreen
|
67
83
|
|
@@ -108,6 +124,7 @@
|
|
108
124
|
* scroll_into_view_if_needed
|
109
125
|
* select_option
|
110
126
|
* select_text
|
127
|
+
* set_checked
|
111
128
|
* set_input_files
|
112
129
|
* tap_point
|
113
130
|
* text_content
|
@@ -166,6 +183,7 @@
|
|
166
183
|
* query_selector
|
167
184
|
* query_selector_all
|
168
185
|
* select_option
|
186
|
+
* set_checked
|
169
187
|
* set_content
|
170
188
|
* set_input_files
|
171
189
|
* tap_point
|
@@ -269,6 +287,7 @@
|
|
269
287
|
* route
|
270
288
|
* screenshot
|
271
289
|
* select_option
|
290
|
+
* set_checked
|
272
291
|
* set_content
|
273
292
|
* set_default_navigation_timeout
|
274
293
|
* set_default_timeout
|
@@ -375,7 +394,9 @@
|
|
375
394
|
## Tracing
|
376
395
|
|
377
396
|
* start
|
397
|
+
* start_chunk
|
378
398
|
* stop
|
399
|
+
* stop_chunk
|
379
400
|
|
380
401
|
## Locator
|
381
402
|
|
@@ -414,6 +435,7 @@
|
|
414
435
|
* scroll_into_view_if_needed
|
415
436
|
* select_option
|
416
437
|
* select_text
|
438
|
+
* set_checked
|
417
439
|
* set_input_files
|
418
440
|
* tap_point
|
419
441
|
* text_content
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
10
10
|
organizationName: 'YusukeIwaki', // Usually your GitHub org/user name.
|
11
11
|
projectName: 'playwright-ruby-client', // Usually your repo name.
|
12
12
|
themeConfig: {
|
13
|
+
image: 'img/playwright-ruby-client.png',
|
13
14
|
navbar: {
|
14
15
|
title: 'playwright-ruby-client',
|
15
16
|
logo: {
|
data/documentation/package.json
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
"write-heading-ids": "docusaurus write-heading-ids"
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
|
-
"@docusaurus/core": "2.0.0-beta.
|
18
|
-
"@docusaurus/preset-classic": "2.0.0-beta.
|
17
|
+
"@docusaurus/core": "^2.0.0-beta.5",
|
18
|
+
"@docusaurus/preset-classic": "^2.0.0-beta.5",
|
19
19
|
"@mdx-js/react": "^1.6.21",
|
20
20
|
"@svgr/webpack": "^5.5.0",
|
21
21
|
"clsx": "^1.1.1",
|
Binary file
|