rebrowser-playwright-core 1.48.2 → 1.49.1
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.
- package/README.md +2 -2
- package/ThirdPartyNotices.txt +70 -384
- package/bin/reinstall_chrome_beta_linux.sh +10 -8
- package/bin/reinstall_chrome_stable_linux.sh +10 -8
- package/bin/reinstall_msedge_beta_linux.sh +11 -9
- package/bin/reinstall_msedge_dev_linux.sh +11 -9
- package/bin/reinstall_msedge_stable_linux.sh +11 -9
- package/browsers.json +19 -11
- package/lib/cli/program.js +23 -5
- package/lib/client/channelOwner.js +2 -2
- package/lib/client/locator.js +7 -0
- package/lib/client/network.js +5 -0
- package/lib/client/page.js +4 -2
- package/lib/client/tracing.js +13 -0
- package/lib/client/waiter.js +15 -11
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/webSocketMockSource.js +1 -1
- package/lib/protocol/validator.js +23 -3
- package/lib/server/ariaSnapshot.js +33 -0
- package/lib/server/bidi/bidiChromium.js +1 -1
- package/lib/server/bidi/bidiConnection.js +0 -2
- package/lib/server/bidi/bidiExecutionContext.js +0 -3
- package/lib/server/browserType.js +4 -1
- package/lib/server/chromium/chromium.js +6 -2
- package/lib/server/chromium/crConnection.js +153 -0
- package/lib/server/chromium/crExecutionContext.js +0 -13
- package/lib/server/chromium/crPage.js +8 -10
- package/lib/server/codegen/csharp.js +11 -16
- package/lib/server/codegen/java.js +4 -7
- package/lib/server/codegen/javascript.js +28 -6
- package/lib/server/codegen/python.js +12 -16
- package/lib/server/debugController.js +8 -5
- package/lib/server/deviceDescriptorsSource.json +127 -127
- package/lib/server/dispatchers/androidDispatcher.js +13 -2
- package/lib/server/dispatchers/debugControllerDispatcher.js +1 -1
- package/lib/server/dispatchers/dispatcher.js +1 -1
- package/lib/server/dispatchers/frameDispatcher.js +8 -1
- package/lib/server/dispatchers/tracingDispatcher.js +10 -0
- package/lib/server/dom.js +79 -36
- package/lib/server/fetch.js +30 -17
- package/lib/server/firefox/ffExecutionContext.js +0 -12
- package/lib/server/firefox/ffNetworkManager.js +1 -1
- package/lib/server/frames.js +66 -196
- package/lib/server/index.js +0 -6
- package/lib/server/javascript.js +0 -6
- package/lib/server/launchApp.js +5 -5
- package/lib/server/page.js +52 -8
- package/lib/server/progress.js +0 -3
- package/lib/server/recorder/recorderApp.js +6 -15
- package/lib/server/recorder/recorderCollection.js +1 -1
- package/lib/server/recorder/recorderInTraceViewer.js +3 -3
- package/lib/server/recorder/recorderUtils.js +2 -1
- package/lib/server/recorder.js +66 -31
- package/lib/server/registry/index.js +70 -23
- package/lib/server/registry/nativeDeps.js +6 -3
- package/lib/server/socksClientCertificatesInterceptor.js +1 -1
- package/lib/server/trace/recorder/snapshotter.js +1 -12
- package/lib/server/trace/recorder/snapshotterInjected.js +19 -1
- package/lib/server/trace/recorder/tracing.js +69 -15
- package/lib/server/trace/test/inMemorySnapshotter.js +3 -3
- package/lib/server/trace/viewer/traceViewer.js +2 -1
- package/lib/server/webkit/wkBrowser.js +2 -2
- package/lib/server/webkit/wkExecutionContext.js +0 -13
- package/lib/server/webkit/wkPage.js +6 -0
- package/lib/utils/comparators.js +12 -30
- package/lib/utils/crypto.js +1 -4
- package/lib/utils/hostPlatform.js +6 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +267 -0
- package/lib/utils/isomorphic/locatorGenerators.js +23 -5
- package/lib/utils/isomorphic/recorderUtils.js +36 -4
- package/lib/utils/isomorphic/stringUtils.js +30 -0
- package/lib/utils/isomorphic/urlMatch.js +5 -1
- package/lib/utils/network.js +1 -1
- package/lib/utils/sequence.js +64 -0
- package/lib/utils/stackTrace.js +16 -3
- package/lib/utils/zones.js +32 -23
- package/lib/utilsBundle.js +4 -5
- package/lib/utilsBundleImpl/index.js +190 -33
- package/lib/vite/htmlReport/index.html +19 -16
- package/lib/vite/recorder/assets/codeMirrorModule-C5j27SYZ.js +24 -0
- package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-iA1aAGZg.css} +1 -1
- package/lib/vite/recorder/assets/index-m0XdVJHe.js +184 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +24 -0
- package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +68 -0
- package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +9 -0
- package/lib/vite/traceViewer/{embedded.BlHoW5LY.js → embedded.CmarehFk.js} +1 -1
- package/lib/vite/traceViewer/embedded.html +5 -5
- package/lib/vite/traceViewer/{index.DaWVfou1.js → index.FBucu_gE.js} +1 -1
- package/lib/vite/traceViewer/index.html +24 -7
- package/lib/vite/traceViewer/{inspectorTab.DLjBDrQR.css → inspectorTab.DEOUW62d.css} +1 -1
- package/lib/vite/traceViewer/recorder.CW_rzcEp.js +2 -0
- package/lib/vite/traceViewer/recorder.html +3 -3
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.CDUVjusr.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +6 -6
- package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.voC1ZiOQ.css} +1 -1
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +1 -0
- package/package.json +1 -1
- package/types/protocol.d.ts +58 -10
- package/types/types.d.ts +134 -29
- package/lib/third_party/diff_match_patch.js +0 -2222
- package/lib/vite/recorder/assets/codeMirrorModule-baozm8ur.js +0 -24
- package/lib/vite/recorder/assets/index-2ElAIWFB.js +0 -42
- package/lib/vite/traceViewer/assets/codeMirrorModule-Bh1rfd2w.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-7GHnKvSD.js +0 -64
- package/lib/vite/traceViewer/assets/workbench-DPQnTHYP.js +0 -9
- package/lib/vite/traceViewer/recorder.C4zxcvd2.js +0 -2
- package/lib/vite/traceViewer/uiMode.mTXWniJb.js +0 -5
- package/lib/vite/traceViewer/workbench.D3JVcA9K.css +0 -1
package/types/types.d.ts
CHANGED
|
@@ -2553,16 +2553,15 @@ export interface Page {
|
|
|
2553
2553
|
* // → true
|
|
2554
2554
|
* await page.evaluate(() => matchMedia('(prefers-color-scheme: light)').matches);
|
|
2555
2555
|
* // → false
|
|
2556
|
-
* await page.evaluate(() => matchMedia('(prefers-color-scheme: no-preference)').matches);
|
|
2557
|
-
* // → false
|
|
2558
2556
|
* ```
|
|
2559
2557
|
*
|
|
2560
2558
|
* @param options
|
|
2561
2559
|
*/
|
|
2562
2560
|
emulateMedia(options?: {
|
|
2563
2561
|
/**
|
|
2564
|
-
* Emulates
|
|
2565
|
-
* Passing `null` disables color scheme emulation.
|
|
2562
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
2563
|
+
* media feature, supported values are `'light'` and `'dark'`. Passing `null` disables color scheme emulation.
|
|
2564
|
+
* `'no-preference'` is deprecated.
|
|
2566
2565
|
*/
|
|
2567
2566
|
colorScheme?: null|"light"|"dark"|"no-preference";
|
|
2568
2567
|
|
|
@@ -9761,7 +9760,8 @@ export interface Browser {
|
|
|
9761
9760
|
}>;
|
|
9762
9761
|
|
|
9763
9762
|
/**
|
|
9764
|
-
* Emulates
|
|
9763
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
9764
|
+
* media feature, supported values are `'light'` and `'dark'`. See
|
|
9765
9765
|
* [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
|
|
9766
9766
|
* Passing `null` resets emulation to system defaults. Defaults to `'light'`.
|
|
9767
9767
|
*/
|
|
@@ -12424,6 +12424,57 @@ export interface Locator {
|
|
|
12424
12424
|
*/
|
|
12425
12425
|
and(locator: Locator): Locator;
|
|
12426
12426
|
|
|
12427
|
+
/**
|
|
12428
|
+
* Captures the aria snapshot of the given element. Read more about [aria snapshots](https://playwright.dev/docs/aria-snapshots) and
|
|
12429
|
+
* [expect(locator).toMatchAriaSnapshot(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot)
|
|
12430
|
+
* for the corresponding assertion.
|
|
12431
|
+
*
|
|
12432
|
+
* **Usage**
|
|
12433
|
+
*
|
|
12434
|
+
* ```js
|
|
12435
|
+
* await page.getByRole('link').ariaSnapshot();
|
|
12436
|
+
* ```
|
|
12437
|
+
*
|
|
12438
|
+
* **Details**
|
|
12439
|
+
*
|
|
12440
|
+
* This method captures the aria snapshot of the given element. The snapshot is a string that represents the state of
|
|
12441
|
+
* the element and its children. The snapshot can be used to assert the state of the element in the test, or to
|
|
12442
|
+
* compare it to state in the future.
|
|
12443
|
+
*
|
|
12444
|
+
* The ARIA snapshot is represented using [YAML](https://yaml.org/spec/1.2.2/) markup language:
|
|
12445
|
+
* - The keys of the objects are the roles and optional accessible names of the elements.
|
|
12446
|
+
* - The values are either text content or an array of child elements.
|
|
12447
|
+
* - Generic static text can be represented with the `text` key.
|
|
12448
|
+
*
|
|
12449
|
+
* Below is the HTML markup and the respective ARIA snapshot:
|
|
12450
|
+
*
|
|
12451
|
+
* ```html
|
|
12452
|
+
* <ul aria-label="Links">
|
|
12453
|
+
* <li><a href="/">Home</a></li>
|
|
12454
|
+
* <li><a href="/about">About</a></li>
|
|
12455
|
+
* <ul>
|
|
12456
|
+
* ```
|
|
12457
|
+
*
|
|
12458
|
+
* ```yml
|
|
12459
|
+
* - list "Links":
|
|
12460
|
+
* - listitem:
|
|
12461
|
+
* - link "Home"
|
|
12462
|
+
* - listitem:
|
|
12463
|
+
* - link "About"
|
|
12464
|
+
* ```
|
|
12465
|
+
*
|
|
12466
|
+
* @param options
|
|
12467
|
+
*/
|
|
12468
|
+
ariaSnapshot(options?: {
|
|
12469
|
+
/**
|
|
12470
|
+
* Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
|
|
12471
|
+
* option in the config, or by using the
|
|
12472
|
+
* [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
|
|
12473
|
+
* or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
|
|
12474
|
+
*/
|
|
12475
|
+
timeout?: number;
|
|
12476
|
+
}): Promise<string>;
|
|
12477
|
+
|
|
12427
12478
|
/**
|
|
12428
12479
|
* Calls [blur](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/blur) on the element.
|
|
12429
12480
|
* @param options
|
|
@@ -14658,9 +14709,12 @@ export interface BrowserType<Unused = {}> {
|
|
|
14658
14709
|
bypassCSP?: boolean;
|
|
14659
14710
|
|
|
14660
14711
|
/**
|
|
14661
|
-
* Browser distribution channel.
|
|
14662
|
-
*
|
|
14663
|
-
* [
|
|
14712
|
+
* Browser distribution channel.
|
|
14713
|
+
*
|
|
14714
|
+
* Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#opt-in-to-new-headless-mode).
|
|
14715
|
+
*
|
|
14716
|
+
* Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
|
|
14717
|
+
* "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
|
|
14664
14718
|
*/
|
|
14665
14719
|
channel?: string;
|
|
14666
14720
|
|
|
@@ -14726,7 +14780,8 @@ export interface BrowserType<Unused = {}> {
|
|
|
14726
14780
|
}>;
|
|
14727
14781
|
|
|
14728
14782
|
/**
|
|
14729
|
-
* Emulates
|
|
14783
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
14784
|
+
* media feature, supported values are `'light'` and `'dark'`. See
|
|
14730
14785
|
* [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
|
|
14731
14786
|
* Passing `null` resets emulation to system defaults. Defaults to `'light'`.
|
|
14732
14787
|
*/
|
|
@@ -15153,9 +15208,12 @@ export interface BrowserType<Unused = {}> {
|
|
|
15153
15208
|
args?: Array<string>;
|
|
15154
15209
|
|
|
15155
15210
|
/**
|
|
15156
|
-
* Browser distribution channel.
|
|
15157
|
-
*
|
|
15158
|
-
* [
|
|
15211
|
+
* Browser distribution channel.
|
|
15212
|
+
*
|
|
15213
|
+
* Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#opt-in-to-new-headless-mode).
|
|
15214
|
+
*
|
|
15215
|
+
* Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
|
|
15216
|
+
* "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
|
|
15159
15217
|
*/
|
|
15160
15218
|
channel?: string;
|
|
15161
15219
|
|
|
@@ -16534,7 +16592,8 @@ export interface AndroidDevice {
|
|
|
16534
16592
|
bypassCSP?: boolean;
|
|
16535
16593
|
|
|
16536
16594
|
/**
|
|
16537
|
-
* Emulates
|
|
16595
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
16596
|
+
* media feature, supported values are `'light'` and `'dark'`. See
|
|
16538
16597
|
* [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
|
|
16539
16598
|
* Passing `null` resets emulation to system defaults. Defaults to `'light'`.
|
|
16540
16599
|
*/
|
|
@@ -18554,6 +18613,10 @@ export interface Clock {
|
|
|
18554
18613
|
/**
|
|
18555
18614
|
* Makes `Date.now` and `new Date()` return fixed fake time at all times, keeps all the timers running.
|
|
18556
18615
|
*
|
|
18616
|
+
* Use this method for simple scenarios where you only need to test with a predefined time. For more advanced
|
|
18617
|
+
* scenarios, use [clock.install([options])](https://playwright.dev/docs/api/class-clock#clock-install) instead. Read
|
|
18618
|
+
* docs on [clock emulation](https://playwright.dev/docs/clock) to learn more.
|
|
18619
|
+
*
|
|
18557
18620
|
* **Usage**
|
|
18558
18621
|
*
|
|
18559
18622
|
* ```js
|
|
@@ -18567,7 +18630,8 @@ export interface Clock {
|
|
|
18567
18630
|
setFixedTime(time: number|string|Date): Promise<void>;
|
|
18568
18631
|
|
|
18569
18632
|
/**
|
|
18570
|
-
* Sets
|
|
18633
|
+
* Sets system time, but does not trigger any timers. Use this to test how the web page reacts to a time shift, for
|
|
18634
|
+
* example switching from summer to winter time, or changing time zones.
|
|
18571
18635
|
*
|
|
18572
18636
|
* **Usage**
|
|
18573
18637
|
*
|
|
@@ -19010,7 +19074,8 @@ export interface Electron {
|
|
|
19010
19074
|
bypassCSP?: boolean;
|
|
19011
19075
|
|
|
19012
19076
|
/**
|
|
19013
|
-
* Emulates
|
|
19077
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
19078
|
+
* media feature, supported values are `'light'` and `'dark'`. See
|
|
19014
19079
|
* [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
|
|
19015
19080
|
* Passing `null` resets emulation to system defaults. Defaults to `'light'`.
|
|
19016
19081
|
*/
|
|
@@ -19760,10 +19825,7 @@ export interface FrameLocator {
|
|
|
19760
19825
|
* An example to trigger select-all with the keyboard
|
|
19761
19826
|
*
|
|
19762
19827
|
* ```js
|
|
19763
|
-
*
|
|
19764
|
-
* await page.keyboard.press('Control+A');
|
|
19765
|
-
* // on macOS
|
|
19766
|
-
* await page.keyboard.press('Meta+A');
|
|
19828
|
+
* await page.keyboard.press('ControlOrMeta+A');
|
|
19767
19829
|
* ```
|
|
19768
19830
|
*
|
|
19769
19831
|
*/
|
|
@@ -20618,12 +20680,12 @@ export interface Route {
|
|
|
20618
20680
|
*
|
|
20619
20681
|
* **Details**
|
|
20620
20682
|
*
|
|
20621
|
-
*
|
|
20622
|
-
*
|
|
20623
|
-
*
|
|
20624
|
-
*
|
|
20625
|
-
* [
|
|
20626
|
-
*
|
|
20683
|
+
* The [`headers`](https://playwright.dev/docs/api/class-route#route-continue-option-headers) option applies to both
|
|
20684
|
+
* the routed request and any redirects it initiates. However,
|
|
20685
|
+
* [`url`](https://playwright.dev/docs/api/class-route#route-continue-option-url),
|
|
20686
|
+
* [`method`](https://playwright.dev/docs/api/class-route#route-continue-option-method), and
|
|
20687
|
+
* [`postData`](https://playwright.dev/docs/api/class-route#route-continue-option-post-data) only apply to the
|
|
20688
|
+
* original request and are not carried over to redirected requests.
|
|
20627
20689
|
*
|
|
20628
20690
|
* [route.continue([options])](https://playwright.dev/docs/api/class-route#route-continue) will immediately send the
|
|
20629
20691
|
* request to the network, other matching handlers won't be invoked. Use
|
|
@@ -20999,6 +21061,45 @@ export interface Touchscreen {
|
|
|
20999
21061
|
*
|
|
21000
21062
|
*/
|
|
21001
21063
|
export interface Tracing {
|
|
21064
|
+
/**
|
|
21065
|
+
* **NOTE** Use `test.step` instead when available.
|
|
21066
|
+
*
|
|
21067
|
+
* Creates a new group within the trace, assigning any subsequent API calls to this group, until
|
|
21068
|
+
* [tracing.groupEnd()](https://playwright.dev/docs/api/class-tracing#tracing-group-end) is called. Groups can be
|
|
21069
|
+
* nested and will be visible in the trace viewer.
|
|
21070
|
+
*
|
|
21071
|
+
* **Usage**
|
|
21072
|
+
*
|
|
21073
|
+
* ```js
|
|
21074
|
+
* // use test.step instead
|
|
21075
|
+
* await test.step('Log in', async () => {
|
|
21076
|
+
* // ...
|
|
21077
|
+
* });
|
|
21078
|
+
* ```
|
|
21079
|
+
*
|
|
21080
|
+
* @param name Group name shown in the trace viewer.
|
|
21081
|
+
* @param options
|
|
21082
|
+
*/
|
|
21083
|
+
group(name: string, options?: {
|
|
21084
|
+
/**
|
|
21085
|
+
* Specifies a custom location for the group to be shown in the trace viewer. Defaults to the location of the
|
|
21086
|
+
* [tracing.group(name[, options])](https://playwright.dev/docs/api/class-tracing#tracing-group) call.
|
|
21087
|
+
*/
|
|
21088
|
+
location?: {
|
|
21089
|
+
file: string;
|
|
21090
|
+
|
|
21091
|
+
line?: number;
|
|
21092
|
+
|
|
21093
|
+
column?: number;
|
|
21094
|
+
};
|
|
21095
|
+
}): Promise<void>;
|
|
21096
|
+
|
|
21097
|
+
/**
|
|
21098
|
+
* Closes the last group created by
|
|
21099
|
+
* [tracing.group(name[, options])](https://playwright.dev/docs/api/class-tracing#tracing-group).
|
|
21100
|
+
*/
|
|
21101
|
+
groupEnd(): Promise<void>;
|
|
21102
|
+
|
|
21002
21103
|
/**
|
|
21003
21104
|
* Start tracing.
|
|
21004
21105
|
*
|
|
@@ -21445,9 +21546,12 @@ export interface LaunchOptions {
|
|
|
21445
21546
|
args?: Array<string>;
|
|
21446
21547
|
|
|
21447
21548
|
/**
|
|
21448
|
-
* Browser distribution channel.
|
|
21449
|
-
*
|
|
21450
|
-
* [
|
|
21549
|
+
* Browser distribution channel.
|
|
21550
|
+
*
|
|
21551
|
+
* Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#opt-in-to-new-headless-mode).
|
|
21552
|
+
*
|
|
21553
|
+
* Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
|
|
21554
|
+
* "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
|
|
21451
21555
|
*/
|
|
21452
21556
|
channel?: string;
|
|
21453
21557
|
|
|
@@ -21832,7 +21936,8 @@ export interface BrowserContextOptions {
|
|
|
21832
21936
|
}>;
|
|
21833
21937
|
|
|
21834
21938
|
/**
|
|
21835
|
-
* Emulates
|
|
21939
|
+
* Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
|
|
21940
|
+
* media feature, supported values are `'light'` and `'dark'`. See
|
|
21836
21941
|
* [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
|
|
21837
21942
|
* Passing `null` resets emulation to system defaults. Defaults to `'light'`.
|
|
21838
21943
|
*/
|