playwright-ruby-client 0.5.10 → 0.6.4

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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/documentation/README.md +33 -0
  4. data/documentation/babel.config.js +3 -0
  5. data/documentation/docs/api/accessibility.md +7 -0
  6. data/documentation/docs/api/browser.md +188 -0
  7. data/documentation/docs/api/browser_context.md +397 -0
  8. data/documentation/docs/api/browser_type.md +105 -0
  9. data/documentation/docs/api/cdp_session.md +7 -0
  10. data/documentation/docs/api/console_message.md +41 -0
  11. data/documentation/docs/api/dialog.md +71 -0
  12. data/documentation/docs/api/element_handle.md +618 -0
  13. data/documentation/docs/api/experimental/_category_.yml +3 -0
  14. data/documentation/docs/api/experimental/android.md +26 -0
  15. data/documentation/docs/api/experimental/android_device.md +92 -0
  16. data/documentation/docs/api/experimental/android_input.md +38 -0
  17. data/documentation/docs/api/experimental/android_socket.md +7 -0
  18. data/documentation/docs/api/experimental/android_web_view.md +7 -0
  19. data/documentation/docs/api/file_chooser.md +50 -0
  20. data/documentation/docs/api/frame.md +866 -0
  21. data/documentation/docs/api/js_handle.md +113 -0
  22. data/documentation/docs/api/keyboard.md +157 -0
  23. data/documentation/docs/api/mouse.md +69 -0
  24. data/documentation/docs/api/page.md +1402 -0
  25. data/documentation/docs/api/playwright.md +63 -0
  26. data/documentation/docs/api/request.md +188 -0
  27. data/documentation/docs/api/response.md +97 -0
  28. data/documentation/docs/api/route.md +80 -0
  29. data/documentation/docs/api/selectors.md +23 -0
  30. data/documentation/docs/api/touchscreen.md +8 -0
  31. data/documentation/docs/api/tracing.md +47 -0
  32. data/documentation/docs/api/web_socket.md +7 -0
  33. data/documentation/docs/api/worker.md +24 -0
  34. data/documentation/docs/article/api_coverage.mdx +11 -0
  35. data/documentation/docs/article/getting_started.md +152 -0
  36. data/documentation/docs/article/guides/_category_.yml +3 -0
  37. data/documentation/docs/article/guides/download_playwright_driver.md +49 -0
  38. data/documentation/docs/article/guides/launch_browser.md +119 -0
  39. data/documentation/docs/article/guides/rails_integration.md +205 -0
  40. data/documentation/docs/article/guides/recording_video.md +79 -0
  41. data/{docs → documentation/docs/include}/api_coverage.md +11 -1
  42. data/documentation/docusaurus.config.js +107 -0
  43. data/documentation/package.json +39 -0
  44. data/documentation/sidebars.js +15 -0
  45. data/documentation/src/components/HomepageFeatures.js +61 -0
  46. data/documentation/src/components/HomepageFeatures.module.css +13 -0
  47. data/documentation/src/css/custom.css +44 -0
  48. data/documentation/src/pages/index.js +50 -0
  49. data/documentation/src/pages/index.module.css +41 -0
  50. data/documentation/src/pages/markdown-page.md +7 -0
  51. data/documentation/static/.nojekyll +0 -0
  52. data/documentation/static/img/playwright-logo.svg +9 -0
  53. data/documentation/static/img/undraw_dropdown_menu.svg +1 -0
  54. data/documentation/static/img/undraw_web_development.svg +1 -0
  55. data/documentation/static/img/undraw_windows.svg +1 -0
  56. data/documentation/yarn.lock +8785 -0
  57. data/lib/playwright/channel_owners/binding_call.rb +33 -0
  58. data/lib/playwright/channel_owners/browser.rb +25 -12
  59. data/lib/playwright/channel_owners/browser_context.rb +67 -8
  60. data/lib/playwright/channel_owners/browser_type.rb +13 -9
  61. data/lib/playwright/channel_owners/element_handle.rb +17 -16
  62. data/lib/playwright/channel_owners/frame.rb +24 -34
  63. data/lib/playwright/channel_owners/js_handle.rb +2 -10
  64. data/lib/playwright/channel_owners/page.rb +37 -52
  65. data/lib/playwright/channel_owners/worker.rb +4 -0
  66. data/lib/playwright/download.rb +3 -2
  67. data/lib/playwright/events.rb +4 -0
  68. data/lib/playwright/input_files.rb +0 -8
  69. data/lib/playwright/javascript.rb +0 -10
  70. data/lib/playwright/javascript/expression.rb +2 -7
  71. data/lib/playwright/playwright_api.rb +16 -1
  72. data/lib/playwright/tracing_impl.rb +31 -0
  73. data/lib/playwright/version.rb +2 -2
  74. data/lib/playwright_api/accessibility.rb +7 -88
  75. data/lib/playwright_api/android.rb +11 -67
  76. data/lib/playwright_api/android_device.rb +10 -9
  77. data/lib/playwright_api/browser.rb +21 -129
  78. data/lib/playwright_api/browser_context.rb +70 -437
  79. data/lib/playwright_api/browser_type.rb +34 -84
  80. data/lib/playwright_api/cdp_session.rb +2 -25
  81. data/lib/playwright_api/console_message.rb +8 -6
  82. data/lib/playwright_api/dialog.rb +11 -69
  83. data/lib/playwright_api/element_handle.rb +102 -300
  84. data/lib/playwright_api/file_chooser.rb +0 -21
  85. data/lib/playwright_api/frame.rb +104 -570
  86. data/lib/playwright_api/js_handle.rb +16 -73
  87. data/lib/playwright_api/keyboard.rb +22 -166
  88. data/lib/playwright_api/mouse.rb +1 -45
  89. data/lib/playwright_api/page.rb +228 -1229
  90. data/lib/playwright_api/playwright.rb +16 -101
  91. data/lib/playwright_api/request.rb +15 -93
  92. data/lib/playwright_api/response.rb +7 -7
  93. data/lib/playwright_api/route.rb +9 -86
  94. data/lib/playwright_api/selectors.rb +6 -72
  95. data/lib/playwright_api/tracing.rb +33 -0
  96. data/lib/playwright_api/web_socket.rb +1 -1
  97. data/lib/playwright_api/worker.rb +28 -42
  98. data/playwright.gemspec +1 -1
  99. metadata +61 -20
  100. data/lib/playwright/javascript/function.rb +0 -67
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playwright
4
- VERSION = '0.5.10'
5
- COMPATIBLE_PLAYWRIGHT_VERSION = '1.11.0'
4
+ VERSION = '0.6.4'
5
+ COMPATIBLE_PLAYWRIGHT_VERSION = '1.12.0'
6
6
  end
@@ -2,13 +2,13 @@ module Playwright
2
2
  # The Accessibility class provides methods for inspecting Chromium's accessibility tree. The accessibility tree is used by
3
3
  # assistive technology such as [screen readers](https://en.wikipedia.org/wiki/Screen_reader) or
4
4
  # [switches](https://en.wikipedia.org/wiki/Switch_access).
5
- #
5
+ #
6
6
  # Accessibility is a very platform-specific thing. On different platforms, there are different screen readers that might
7
7
  # have wildly different output.
8
- #
8
+ #
9
9
  # Rendering engines of Chromium, Firefox and WebKit have a concept of "accessibility tree", which is then translated into
10
10
  # different platform-specific APIs. Accessibility namespace gives access to this Accessibility Tree.
11
- #
11
+ #
12
12
  # Most of the accessibility tree gets filtered out when converting from internal browser AX Tree to Platform-specific
13
13
  # AX-Tree or by assistive technologies themselves. By default, Playwright tries to approximate this filtering, exposing
14
14
  # only the "interesting" nodes of the tree.
@@ -16,100 +16,19 @@ module Playwright
16
16
 
17
17
  # Captures the current state of the accessibility tree. The returned object represents the root accessible node of the
18
18
  # page.
19
- #
19
+ #
20
20
  # > NOTE: The Chromium accessibility tree contains nodes that go unused on most platforms and by most screen readers.
21
21
  # Playwright will discard them as well for an easier to process tree, unless `interestingOnly` is set to `false`.
22
- #
22
+ #
23
23
  # An example of dumping the entire accessibility tree:
24
- #
25
24
  #
26
- # ```js
27
- # const snapshot = await page.accessibility.snapshot();
28
- # console.log(snapshot);
29
- # ```
30
- #
31
- # ```java
32
- # String snapshot = page.accessibility().snapshot();
33
- # System.out.println(snapshot);
34
- # ```
35
- #
36
- # ```python async
37
- # snapshot = await page.accessibility.snapshot()
38
- # print(snapshot)
39
- # ```
40
- #
41
25
  # ```python sync
42
26
  # snapshot = page.accessibility.snapshot()
43
27
  # print(snapshot)
44
28
  # ```
45
- #
46
- # ```csharp
47
- # var accessibilitySnapshot = await Page.Accessibility.SnapshotAsync();
48
- # Console.WriteLine(accessibilitySnapshot);
49
- # ```
50
- #
29
+ #
51
30
  # An example of logging the focused node's name:
52
- #
53
31
  #
54
- # ```js
55
- # const snapshot = await page.accessibility.snapshot();
56
- # const node = findFocusedNode(snapshot);
57
- # console.log(node && node.name);
58
- #
59
- # function findFocusedNode(node) {
60
- # if (node.focused)
61
- # return node;
62
- # for (const child of node.children || []) {
63
- # const foundNode = findFocusedNode(child);
64
- # return foundNode;
65
- # }
66
- # return null;
67
- # }
68
- # ```
69
- #
70
- # ```csharp
71
- # Func<AccessibilitySnapshotResult, AccessibilitySnapshotResult> findFocusedNode = root =>
72
- # {
73
- # var nodes = new Stack<AccessibilitySnapshotResult>(new[] { root });
74
- # while (nodes.Count > 0)
75
- # {
76
- # var node = nodes.Pop();
77
- # if (node.Focused) return node;
78
- # foreach (var innerNode in node.Children)
79
- # {
80
- # nodes.Push(innerNode);
81
- # }
82
- # }
83
- #
84
- # return null;
85
- # };
86
- #
87
- # var accessibilitySnapshot = await Page.Accessibility.SnapshotAsync();
88
- # var focusedNode = findFocusedNode(accessibilitySnapshot);
89
- # if(focusedNode != null)
90
- # Console.WriteLine(focusedNode.Name);
91
- # ```
92
- #
93
- # ```java
94
- # // FIXME
95
- # String snapshot = page.accessibility().snapshot();
96
- # ```
97
- #
98
- # ```python async
99
- # def find_focused_node(node):
100
- # if (node.get("focused"))
101
- # return node
102
- # for child in (node.get("children") or []):
103
- # found_node = find_focused_node(child)
104
- # return found_node
105
- # return None
106
- #
107
- # snapshot = await page.accessibility.snapshot()
108
- # node = find_focused_node(snapshot)
109
- # if node:
110
- # print(node["name"])
111
- # ```
112
- #
113
32
  # ```python sync
114
33
  # def find_focused_node(node):
115
34
  # if (node.get("focused"))
@@ -118,7 +37,7 @@ module Playwright
118
37
  # found_node = find_focused_node(child)
119
38
  # return found_node
120
39
  # return None
121
- #
40
+ #
122
41
  # snapshot = page.accessibility.snapshot()
123
42
  # node = find_focused_node(snapshot)
124
43
  # if node:
@@ -1,70 +1,14 @@
1
1
  module Playwright
2
- # Playwright has **experimental** support for Android automation. You can access android namespace via:
3
- #
2
+ # Playwright has **experimental** support for Android automation. See [here](./mobile.md) for more information. You can
3
+ # access android namespace via:
4
4
  #
5
- # ```js
6
- # const { _android: android } = require('playwright');
7
- # ```
8
- #
9
5
  # An example of the Android automation script would be:
10
- #
11
6
  #
12
- # ```js
13
- # const { _android: android } = require('playwright');
14
- #
15
- # (async () => {
16
- # // Connect to the device.
17
- # const [device] = await android.devices();
18
- # console.log(`Model: ${device.model()}`);
19
- # console.log(`Serial: ${device.serial()}`);
20
- # // Take screenshot of the whole device.
21
- # await device.screenshot({ path: 'device.png' });
22
- #
23
- # {
24
- # // --------------------- WebView -----------------------
25
- #
26
- # // Launch an application with WebView.
27
- # await device.shell('am force-stop org.chromium.webview_shell');
28
- # await device.shell('am start org.chromium.webview_shell/.WebViewBrowserActivity');
29
- # // Get the WebView.
30
- # const webview = await device.webView({ pkg: 'org.chromium.webview_shell' });
31
- #
32
- # // Fill the input box.
33
- # await device.fill({ res: 'org.chromium.webview_shell:id/url_field' }, 'github.com/microsoft/playwright');
34
- # await device.press({ res: 'org.chromium.webview_shell:id/url_field' }, 'Enter');
35
- #
36
- # // Work with WebView's page as usual.
37
- # const page = await webview.page();
38
- # await page.waitForNavigation({ url: /.*microsoft\/playwright.*/ });
39
- # console.log(await page.title());
40
- # }
41
- #
42
- # {
43
- # // --------------------- Browser -----------------------
44
- #
45
- # // Launch Chrome browser.
46
- # await device.shell('am force-stop com.android.chrome');
47
- # const context = await device.launchBrowser();
48
- #
49
- # // Use BrowserContext as usual.
50
- # const page = await context.newPage();
51
- # await page.goto('https://webkit.org/');
52
- # console.log(await page.evaluate(() => window.location.href));
53
- # await page.screenshot({ path: 'page.png' });
54
- #
55
- # await context.close();
56
- # }
57
- #
58
- # // Close the device.
59
- # await device.close();
60
- # })();
61
- # ```
62
- #
63
7
  # Note that since you don't need Playwright to install web browsers when testing Android, you can omit browser download
64
8
  # via setting the following environment variable when installing Playwright:
65
- #
66
- # ```sh js
67
- # $ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
9
+ #
10
+ # ```bash js
11
+ # PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
68
12
  # ```
69
13
  class Android < PlaywrightApi
70
14
 
@@ -79,12 +23,6 @@ module Playwright
79
23
  end
80
24
  alias_method :default_timeout=, :set_default_timeout
81
25
 
82
- # -- inherited from EventEmitter --
83
- # @nodoc
84
- def off(event, callback)
85
- event_emitter_proxy.off(event, callback)
86
- end
87
-
88
26
  # -- inherited from EventEmitter --
89
27
  # @nodoc
90
28
  def once(event, callback)
@@ -97,6 +35,12 @@ module Playwright
97
35
  event_emitter_proxy.on(event, callback)
98
36
  end
99
37
 
38
+ # -- inherited from EventEmitter --
39
+ # @nodoc
40
+ def off(event, callback)
41
+ event_emitter_proxy.off(event, callback)
42
+ end
43
+
100
44
  private def event_emitter_proxy
101
45
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
102
46
  end
@@ -59,12 +59,13 @@ module Playwright
59
59
  record_har_path: nil,
60
60
  record_video_dir: nil,
61
61
  record_video_size: nil,
62
+ reducedMotion: nil,
62
63
  screen: nil,
63
64
  timezoneId: nil,
64
65
  userAgent: nil,
65
66
  viewport: nil,
66
67
  &block)
67
- wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), screen: unwrap_impl(screen), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
68
+ wrap_impl(@impl.launch_browser(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), command: unwrap_impl(command), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
68
69
  end
69
70
 
70
71
  # Performs a long tap on the widget defined by `selector`.
@@ -160,20 +161,14 @@ module Playwright
160
161
  raise NotImplementedError.new('web_views is not implemented yet.')
161
162
  end
162
163
 
163
- # @nodoc
164
- def tap_on(selector, duration: nil, timeout: nil)
165
- wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
166
- end
167
-
168
164
  # @nodoc
169
165
  def tree
170
166
  wrap_impl(@impl.tree)
171
167
  end
172
168
 
173
- # -- inherited from EventEmitter --
174
169
  # @nodoc
175
- def off(event, callback)
176
- event_emitter_proxy.off(event, callback)
170
+ def tap_on(selector, duration: nil, timeout: nil)
171
+ wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
177
172
  end
178
173
 
179
174
  # -- inherited from EventEmitter --
@@ -188,6 +183,12 @@ module Playwright
188
183
  event_emitter_proxy.on(event, callback)
189
184
  end
190
185
 
186
+ # -- inherited from EventEmitter --
187
+ # @nodoc
188
+ def off(event, callback)
189
+ event_emitter_proxy.off(event, callback)
190
+ end
191
+
191
192
  private def event_emitter_proxy
192
193
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
193
194
  end
@@ -1,63 +1,18 @@
1
1
  module Playwright
2
2
  # - extends: [EventEmitter]
3
- #
3
+ #
4
4
  # A Browser is created via [`method: BrowserType.launch`]. An example of using a `Browser` to create a `Page`:
5
- #
6
5
  #
7
- # ```js
8
- # const { firefox } = require('playwright'); // Or 'chromium' or 'webkit'.
9
- #
10
- # (async () => {
11
- # const browser = await firefox.launch();
12
- # const page = await browser.newPage();
13
- # await page.goto('https://example.com');
14
- # await browser.close();
15
- # })();
16
- # ```
17
- #
18
- # ```java
19
- # import com.microsoft.playwright.*;
20
- #
21
- # public class Example {
22
- # public static void main(String[] args) {
23
- # try (Playwright playwright = Playwright.create()) {
24
- # BrowserType firefox = playwright.firefox()
25
- # Browser browser = firefox.launch();
26
- # Page page = browser.newPage();
27
- # page.navigate('https://example.com');
28
- # browser.close();
29
- # }
30
- # }
31
- # }
32
- # ```
33
- #
34
- # ```python async
35
- # import asyncio
36
- # from playwright.async_api import async_playwright
37
- #
38
- # async def run(playwright):
39
- # firefox = playwright.firefox
40
- # browser = await firefox.launch()
41
- # page = await browser.new_page()
42
- # await page.goto("https://example.com")
43
- # await browser.close()
44
- #
45
- # async def main():
46
- # async with async_playwright() as playwright:
47
- # await run(playwright)
48
- # asyncio.run(main())
49
- # ```
50
- #
51
6
  # ```python sync
52
7
  # from playwright.sync_api import sync_playwright
53
- #
8
+ #
54
9
  # def run(playwright):
55
10
  # firefox = playwright.firefox
56
11
  # browser = firefox.launch()
57
12
  # page = browser.new_page()
58
13
  # page.goto("https://example.com")
59
14
  # browser.close()
60
- #
15
+ #
61
16
  # with sync_playwright() as playwright:
62
17
  # run(playwright)
63
18
  # ```
@@ -65,40 +20,17 @@ module Playwright
65
20
 
66
21
  # In case this browser is obtained using [`method: BrowserType.launch`], closes the browser and all of its pages (if any
67
22
  # were opened).
68
- #
23
+ #
69
24
  # In case this browser is connected to, clears all created contexts belonging to this browser and disconnects from the
70
25
  # browser server.
71
- #
26
+ #
72
27
  # The `Browser` object itself is considered to be disposed and cannot be used anymore.
73
28
  def close
74
29
  wrap_impl(@impl.close)
75
30
  end
76
31
 
77
32
  # Returns an array of all open browser contexts. In a newly created browser, this will return zero browser contexts.
78
- #
79
33
  #
80
- # ```js
81
- # const browser = await pw.webkit.launch();
82
- # console.log(browser.contexts().length); // prints `0`
83
- #
84
- # const context = await browser.newContext();
85
- # console.log(browser.contexts().length); // prints `1`
86
- # ```
87
- #
88
- # ```java
89
- # Browser browser = pw.webkit().launch();
90
- # System.out.println(browser.contexts().size()); // prints "0"
91
- # BrowserContext context = browser.newContext();
92
- # System.out.println(browser.contexts().size()); // prints "1"
93
- # ```
94
- #
95
- # ```python async
96
- # browser = await pw.webkit.launch()
97
- # print(len(browser.contexts())) # prints `0`
98
- # context = await browser.new_context()
99
- # print(len(browser.contexts())) # prints `1`
100
- # ```
101
- #
102
34
  # ```python sync
103
35
  # browser = pw.webkit.launch()
104
36
  # print(len(browser.contexts())) # prints `0`
@@ -115,44 +47,14 @@ module Playwright
115
47
  end
116
48
 
117
49
  # > NOTE: CDP Sessions are only supported on Chromium-based browsers.
118
- #
50
+ #
119
51
  # Returns the newly created browser session.
120
52
  def new_browser_cdp_session
121
53
  raise NotImplementedError.new('new_browser_cdp_session is not implemented yet.')
122
54
  end
123
55
 
124
56
  # Creates a new browser context. It won't share cookies/cache with other browser contexts.
125
- #
126
57
  #
127
- # ```js
128
- # (async () => {
129
- # const browser = await playwright.firefox.launch(); // Or 'chromium' or 'webkit'.
130
- # // Create a new incognito browser context.
131
- # const context = await browser.newContext();
132
- # // Create a new page in a pristine context.
133
- # const page = await context.newPage();
134
- # await page.goto('https://example.com');
135
- # })();
136
- # ```
137
- #
138
- # ```java
139
- # Browser browser = playwright.firefox().launch(); // Or 'chromium' or 'webkit'.
140
- # // Create a new incognito browser context.
141
- # BrowserContext context = browser.newContext();
142
- # // Create a new page in a pristine context.
143
- # Page page = context.newPage();
144
- # page.navigate('https://example.com');
145
- # ```
146
- #
147
- # ```python async
148
- # browser = await playwright.firefox.launch() # or "chromium" or "webkit".
149
- # # create a new incognito browser context.
150
- # context = await browser.new_context()
151
- # # create a new page in a pristine context.
152
- # page = await context.new_page()
153
- # await page.goto("https://example.com")
154
- # ```
155
- #
156
58
  # ```python sync
157
59
  # browser = playwright.firefox.launch() # or "chromium" or "webkit".
158
60
  # # create a new incognito browser context.
@@ -182,17 +84,18 @@ module Playwright
182
84
  record_har_path: nil,
183
85
  record_video_dir: nil,
184
86
  record_video_size: nil,
87
+ reducedMotion: nil,
185
88
  screen: nil,
186
89
  storageState: nil,
187
90
  timezoneId: nil,
188
91
  userAgent: nil,
189
92
  viewport: nil,
190
93
  &block)
191
- wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
94
+ wrap_impl(@impl.new_context(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
192
95
  end
193
96
 
194
97
  # Creates a new page in a new browser context. Closing this page will close the context as well.
195
- #
98
+ #
196
99
  # This is a convenience API that should only be used for the single-page scenarios and short snippets. Production code and
197
100
  # testing frameworks should explicitly create [`method: Browser.newContext`] followed by the
198
101
  # [`method: BrowserContext.newPage`] to control their exact life times.
@@ -217,32 +120,21 @@ module Playwright
217
120
  record_har_path: nil,
218
121
  record_video_dir: nil,
219
122
  record_video_size: nil,
123
+ reducedMotion: nil,
220
124
  screen: nil,
221
125
  storageState: nil,
222
126
  timezoneId: nil,
223
127
  userAgent: nil,
224
- viewport: nil)
225
- wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport)))
128
+ viewport: nil,
129
+ &block)
130
+ wrap_impl(@impl.new_page(acceptDownloads: unwrap_impl(acceptDownloads), bypassCSP: unwrap_impl(bypassCSP), colorScheme: unwrap_impl(colorScheme), deviceScaleFactor: unwrap_impl(deviceScaleFactor), extraHTTPHeaders: unwrap_impl(extraHTTPHeaders), geolocation: unwrap_impl(geolocation), hasTouch: unwrap_impl(hasTouch), httpCredentials: unwrap_impl(httpCredentials), ignoreHTTPSErrors: unwrap_impl(ignoreHTTPSErrors), isMobile: unwrap_impl(isMobile), javaScriptEnabled: unwrap_impl(javaScriptEnabled), locale: unwrap_impl(locale), noViewport: unwrap_impl(noViewport), offline: unwrap_impl(offline), permissions: unwrap_impl(permissions), proxy: unwrap_impl(proxy), record_har_omit_content: unwrap_impl(record_har_omit_content), record_har_path: unwrap_impl(record_har_path), record_video_dir: unwrap_impl(record_video_dir), record_video_size: unwrap_impl(record_video_size), reducedMotion: unwrap_impl(reducedMotion), screen: unwrap_impl(screen), storageState: unwrap_impl(storageState), timezoneId: unwrap_impl(timezoneId), userAgent: unwrap_impl(userAgent), viewport: unwrap_impl(viewport), &wrap_block_call(block)))
226
131
  end
227
132
 
228
133
  # > NOTE: Tracing is only supported on Chromium-based browsers.
229
- #
134
+ #
230
135
  # You can use [`method: Browser.startTracing`] and [`method: Browser.stopTracing`] to create a trace file that can be
231
136
  # opened in Chrome DevTools performance panel.
232
- #
233
137
  #
234
- # ```js
235
- # await browser.startTracing(page, {path: 'trace.json'});
236
- # await page.goto('https://www.google.com');
237
- # await browser.stopTracing();
238
- # ```
239
- #
240
- # ```python async
241
- # await browser.start_tracing(page, path="trace.json")
242
- # await page.goto("https://www.google.com")
243
- # await browser.stop_tracing()
244
- # ```
245
- #
246
138
  # ```python sync
247
139
  # browser.start_tracing(page, path="trace.json")
248
140
  # page.goto("https://www.google.com")
@@ -253,7 +145,7 @@ module Playwright
253
145
  end
254
146
 
255
147
  # > NOTE: Tracing is only supported on Chromium-based browsers.
256
- #
148
+ #
257
149
  # Returns the buffer with trace data.
258
150
  def stop_tracing
259
151
  wrap_impl(@impl.stop_tracing)
@@ -264,12 +156,6 @@ module Playwright
264
156
  wrap_impl(@impl.version)
265
157
  end
266
158
 
267
- # -- inherited from EventEmitter --
268
- # @nodoc
269
- def off(event, callback)
270
- event_emitter_proxy.off(event, callback)
271
- end
272
-
273
159
  # -- inherited from EventEmitter --
274
160
  # @nodoc
275
161
  def once(event, callback)
@@ -282,6 +168,12 @@ module Playwright
282
168
  event_emitter_proxy.on(event, callback)
283
169
  end
284
170
 
171
+ # -- inherited from EventEmitter --
172
+ # @nodoc
173
+ def off(event, callback)
174
+ event_emitter_proxy.off(event, callback)
175
+ end
176
+
285
177
  private def event_emitter_proxy
286
178
  @event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
287
179
  end