@wordpress/e2e-test-utils-playwright 1.31.1-next.f56bd8138.0 → 1.32.1-next.47f435fc9.0

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 (115) hide show
  1. package/build/admin/create-new-post.js +46 -28
  2. package/build/admin/create-new-post.js.map +7 -1
  3. package/build/admin/edit-post.js +35 -17
  4. package/build/admin/edit-post.js.map +7 -1
  5. package/build/admin/get-page-error.js +30 -22
  6. package/build/admin/get-page-error.js.map +7 -1
  7. package/build/admin/index.js +54 -34
  8. package/build/admin/index.js.map +7 -1
  9. package/build/admin/visit-admin-page.js +42 -29
  10. package/build/admin/visit-admin-page.js.map +7 -1
  11. package/build/admin/visit-site-editor.js +71 -64
  12. package/build/admin/visit-site-editor.js.map +7 -1
  13. package/build/config.js +40 -10
  14. package/build/config.js.map +7 -1
  15. package/build/editor/click-block-options-menu-item.js +29 -14
  16. package/build/editor/click-block-options-menu-item.js.map +7 -1
  17. package/build/editor/click-block-toolbar-button.js +33 -13
  18. package/build/editor/click-block-toolbar-button.js.map +7 -1
  19. package/build/editor/get-blocks.js +59 -43
  20. package/build/editor/get-blocks.js.map +7 -1
  21. package/build/editor/get-edited-post-content.js +31 -12
  22. package/build/editor/get-edited-post-content.js.map +7 -1
  23. package/build/editor/index.js +92 -72
  24. package/build/editor/index.js.map +7 -1
  25. package/build/editor/insert-block.js +50 -21
  26. package/build/editor/insert-block.js.map +7 -1
  27. package/build/editor/open-document-settings-sidebar.js +37 -24
  28. package/build/editor/open-document-settings-sidebar.js.map +7 -1
  29. package/build/editor/preview.js +37 -18
  30. package/build/editor/preview.js.map +7 -1
  31. package/build/editor/publish-post.js +42 -42
  32. package/build/editor/publish-post.js.map +7 -1
  33. package/build/editor/save-draft.js +29 -15
  34. package/build/editor/save-draft.js.map +7 -1
  35. package/build/editor/select-blocks.js +46 -25
  36. package/build/editor/select-blocks.js.map +7 -1
  37. package/build/editor/set-content.js +34 -14
  38. package/build/editor/set-content.js.map +7 -1
  39. package/build/editor/set-is-fixed-toolbar.js +31 -15
  40. package/build/editor/set-is-fixed-toolbar.js.map +7 -1
  41. package/build/editor/set-preferences.js +38 -18
  42. package/build/editor/set-preferences.js.map +7 -1
  43. package/build/editor/show-block-toolbar.js +30 -16
  44. package/build/editor/show-block-toolbar.js.map +7 -1
  45. package/build/editor/site-editor.js +46 -41
  46. package/build/editor/site-editor.js.map +7 -1
  47. package/build/editor/switch-editor-tool.js +42 -30
  48. package/build/editor/switch-editor-tool.js.map +7 -1
  49. package/build/editor/switch-to-legacy-canvas.js +33 -14
  50. package/build/editor/switch-to-legacy-canvas.js.map +7 -1
  51. package/build/editor/transform-block-to.js +41 -21
  52. package/build/editor/transform-block-to.js.map +7 -1
  53. package/build/index.js +50 -32
  54. package/build/index.js.map +7 -1
  55. package/build/lighthouse/index.js +89 -53
  56. package/build/lighthouse/index.js.map +7 -1
  57. package/build/metrics/index.js +298 -249
  58. package/build/metrics/index.js.map +7 -1
  59. package/build/page-utils/drag-files.js +134 -112
  60. package/build/page-utils/drag-files.js.map +7 -1
  61. package/build/page-utils/emulate-network-conditions.js +92 -66
  62. package/build/page-utils/emulate-network-conditions.js.map +7 -1
  63. package/build/page-utils/index.js +54 -34
  64. package/build/page-utils/index.js.map +7 -1
  65. package/build/page-utils/is-current-url.js +31 -18
  66. package/build/page-utils/is-current-url.js.map +7 -1
  67. package/build/page-utils/keycodes.js +51 -39
  68. package/build/page-utils/keycodes.js.map +7 -1
  69. package/build/page-utils/press-keys.js +148 -127
  70. package/build/page-utils/press-keys.js.map +7 -1
  71. package/build/page-utils/set-browser-viewport.js +32 -41
  72. package/build/page-utils/set-browser-viewport.js.map +7 -1
  73. package/build/request-utils/blocks.js +49 -40
  74. package/build/request-utils/blocks.js.map +7 -1
  75. package/build/request-utils/comments.js +58 -45
  76. package/build/request-utils/comments.js.map +7 -1
  77. package/build/request-utils/gutenberg-experiments.js +48 -26
  78. package/build/request-utils/gutenberg-experiments.js.map +7 -1
  79. package/build/request-utils/index.js +187 -153
  80. package/build/request-utils/index.js.map +7 -1
  81. package/build/request-utils/login.js +43 -18
  82. package/build/request-utils/login.js.map +7 -1
  83. package/build/request-utils/media.js +72 -64
  84. package/build/request-utils/media.js.map +7 -1
  85. package/build/request-utils/menus.js +119 -109
  86. package/build/request-utils/menus.js.map +7 -1
  87. package/build/request-utils/pages.js +60 -49
  88. package/build/request-utils/pages.js.map +7 -1
  89. package/build/request-utils/patterns.js +39 -24
  90. package/build/request-utils/patterns.js.map +7 -1
  91. package/build/request-utils/plugins.js +68 -74
  92. package/build/request-utils/plugins.js.map +7 -1
  93. package/build/request-utils/posts.js +52 -39
  94. package/build/request-utils/posts.js.map +7 -1
  95. package/build/request-utils/preferences.js +36 -17
  96. package/build/request-utils/preferences.js.map +7 -1
  97. package/build/request-utils/rest.js +153 -129
  98. package/build/request-utils/rest.js.map +7 -1
  99. package/build/request-utils/site-settings.js +38 -28
  100. package/build/request-utils/site-settings.js.map +7 -1
  101. package/build/request-utils/templates.js +57 -45
  102. package/build/request-utils/templates.js.map +7 -1
  103. package/build/request-utils/themes.js +78 -53
  104. package/build/request-utils/themes.js.map +7 -1
  105. package/build/request-utils/users.js +72 -72
  106. package/build/request-utils/users.js.map +7 -1
  107. package/build/request-utils/widgets.js +71 -55
  108. package/build/request-utils/widgets.js.map +7 -1
  109. package/build/test.js +128 -146
  110. package/build/test.js.map +7 -1
  111. package/build/types.js +16 -2
  112. package/build/types.js.map +7 -1
  113. package/build-types/request-utils/comments.d.ts +2 -1
  114. package/build-types/request-utils/comments.d.ts.map +1 -1
  115. package/package.json +6 -2
@@ -1,21 +1,34 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCurrentURL = isCurrentURL;
4
- /**
5
- * Internal dependencies
6
- */
7
- const config_1 = require("../config");
8
- /**
9
- * Checks if current path of the URL matches the provided path.
10
- *
11
- * @param this
12
- * @param path String to be serialized as pathname.
13
- *
14
- * @return Boolean represents whether current URL is or not a WordPress path.
15
- */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var is_current_url_exports = {};
20
+ __export(is_current_url_exports, {
21
+ isCurrentURL: () => isCurrentURL
22
+ });
23
+ module.exports = __toCommonJS(is_current_url_exports);
24
+ var import_config = require("../config");
16
25
  function isCurrentURL(path) {
17
- const currentURL = new URL(this.page.url());
18
- const expectedURL = new URL(path, config_1.WP_BASE_URL);
19
- return expectedURL.pathname === currentURL.pathname;
26
+ const currentURL = new URL(this.page.url());
27
+ const expectedURL = new URL(path, import_config.WP_BASE_URL);
28
+ return expectedURL.pathname === currentURL.pathname;
20
29
  }
21
- //# sourceMappingURL=is-current-url.js.map
30
+ // Annotate the CommonJS export names for ESM import in node:
31
+ 0 && (module.exports = {
32
+ isCurrentURL
33
+ });
34
+ //# sourceMappingURL=is-current-url.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"is-current-url.js","sourceRoot":"","sources":["../../src/page-utils/is-current-url.ts"],"names":[],"mappings":";;AAcA,oCAKC;AAnBD;;GAEG;AACH,sCAAwC;AAGxC;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAmB,IAAY;IAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAE,IAAI,EAAE,oBAAW,CAAE,CAAC;IAEjD,OAAO,WAAW,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC;AACrD,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/page-utils/is-current-url.ts"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { WP_BASE_URL } from '../config';\nimport type { PageUtils } from './';\n\n/**\n * Checks if current path of the URL matches the provided path.\n *\n * @param this\n * @param path String to be serialized as pathname.\n *\n * @return Boolean represents whether current URL is or not a WordPress path.\n */\nexport function isCurrentURL( this: PageUtils, path: string ) {\n\tconst currentURL = new URL( this.page.url() );\n\tconst expectedURL = new URL( path, WP_BASE_URL );\n\n\treturn expectedURL.pathname === currentURL.pathname;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA4B;AAWrB,SAAS,aAA+B,MAAe;AAC7D,QAAM,aAAa,IAAI,IAAK,KAAK,KAAK,IAAI,CAAE;AAC5C,QAAM,cAAc,IAAI,IAAK,MAAM,yBAAY;AAE/C,SAAO,YAAY,aAAa,WAAW;AAC5C;",
6
+ "names": []
7
+ }
@@ -1,41 +1,53 @@
1
1
  "use strict";
2
- /**
3
- * This filed is partially copied from @wordpress/keycodes to keep the package
4
- * (internal-)dependencies free.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.modifiers = exports.SHIFT = exports.COMMAND = exports.CTRL = exports.ALT = void 0;
8
- /**
9
- * Keycode for ALT key.
10
- */
11
- exports.ALT = 'alt';
12
- /**
13
- * Keycode for CTRL key.
14
- */
15
- exports.CTRL = 'ctrl';
16
- /**
17
- * Keycode for COMMAND key.
18
- */
19
- exports.COMMAND = 'meta';
20
- /**
21
- * Keycode for SHIFT key.
22
- */
23
- exports.SHIFT = 'shift';
24
- /**
25
- * Object that contains functions that return the available modifier
26
- * depending on platform.
27
- */
28
- exports.modifiers = {
29
- primary: (_isApple) => (_isApple() ? [exports.COMMAND] : [exports.CTRL]),
30
- primaryShift: (_isApple) => _isApple() ? [exports.SHIFT, exports.COMMAND] : [exports.CTRL, exports.SHIFT],
31
- primaryAlt: (_isApple) => _isApple() ? [exports.ALT, exports.COMMAND] : [exports.CTRL, exports.ALT],
32
- secondary: (_isApple) => _isApple() ? [exports.SHIFT, exports.ALT, exports.COMMAND] : [exports.CTRL, exports.SHIFT, exports.ALT],
33
- access: (_isApple) => (_isApple() ? [exports.CTRL, exports.ALT] : [exports.SHIFT, exports.ALT]),
34
- ctrl: () => [exports.CTRL],
35
- alt: () => [exports.ALT],
36
- ctrlShift: () => [exports.CTRL, exports.SHIFT],
37
- shift: () => [exports.SHIFT],
38
- shiftAlt: () => [exports.SHIFT, exports.ALT],
39
- undefined: () => [],
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
40
9
  };
41
- //# sourceMappingURL=keycodes.js.map
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var keycodes_exports = {};
20
+ __export(keycodes_exports, {
21
+ ALT: () => ALT,
22
+ COMMAND: () => COMMAND,
23
+ CTRL: () => CTRL,
24
+ SHIFT: () => SHIFT,
25
+ modifiers: () => modifiers
26
+ });
27
+ module.exports = __toCommonJS(keycodes_exports);
28
+ const ALT = "alt";
29
+ const CTRL = "ctrl";
30
+ const COMMAND = "meta";
31
+ const SHIFT = "shift";
32
+ const modifiers = {
33
+ primary: (_isApple) => _isApple() ? [COMMAND] : [CTRL],
34
+ primaryShift: (_isApple) => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
35
+ primaryAlt: (_isApple) => _isApple() ? [ALT, COMMAND] : [CTRL, ALT],
36
+ secondary: (_isApple) => _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT],
37
+ access: (_isApple) => _isApple() ? [CTRL, ALT] : [SHIFT, ALT],
38
+ ctrl: () => [CTRL],
39
+ alt: () => [ALT],
40
+ ctrlShift: () => [CTRL, SHIFT],
41
+ shift: () => [SHIFT],
42
+ shiftAlt: () => [SHIFT, ALT],
43
+ undefined: () => []
44
+ };
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ ALT,
48
+ COMMAND,
49
+ CTRL,
50
+ SHIFT,
51
+ modifiers
52
+ });
53
+ //# sourceMappingURL=keycodes.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"keycodes.js","sourceRoot":"","sources":["../../src/page-utils/keycodes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACU,QAAA,GAAG,GAAG,KAAK,CAAC;AAEzB;;GAEG;AACU,QAAA,IAAI,GAAG,MAAM,CAAC;AAE3B;;GAEG;AACU,QAAA,OAAO,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACU,QAAA,KAAK,GAAG,OAAO,CAAC;AAE7B;;;GAGG;AACU,QAAA,SAAS,GAGlB;IACH,OAAO,EAAE,CAAE,QAAQ,EAAG,EAAE,CAAC,CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,eAAO,CAAE,CAAC,CAAC,CAAC,CAAE,YAAI,CAAE,CAAE;IAChE,YAAY,EAAE,CAAE,QAAQ,EAAG,EAAE,CAC5B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,aAAK,EAAE,eAAO,CAAE,CAAC,CAAC,CAAC,CAAE,YAAI,EAAE,aAAK,CAAE;IAClD,UAAU,EAAE,CAAE,QAAQ,EAAG,EAAE,CAC1B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,WAAG,EAAE,eAAO,CAAE,CAAC,CAAC,CAAC,CAAE,YAAI,EAAE,WAAG,CAAE;IAC9C,SAAS,EAAE,CAAE,QAAQ,EAAG,EAAE,CACzB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,aAAK,EAAE,WAAG,EAAE,eAAO,CAAE,CAAC,CAAC,CAAC,CAAE,YAAI,EAAE,aAAK,EAAE,WAAG,CAAE;IAC5D,MAAM,EAAE,CAAE,QAAQ,EAAG,EAAE,CAAC,CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,YAAI,EAAE,WAAG,CAAE,CAAC,CAAC,CAAC,CAAE,aAAK,EAAE,WAAG,CAAE,CAAE;IACvE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAE,YAAI,CAAE;IACpB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAE,WAAG,CAAE;IAClB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAE,YAAI,EAAE,aAAK,CAAE;IAChC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAE,aAAK,CAAE;IACtB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAE,aAAK,EAAE,WAAG,CAAE;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;CACnB,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/page-utils/keycodes.ts"],
4
+ "sourcesContent": ["/**\n * This filed is partially copied from @wordpress/keycodes to keep the package\n * (internal-)dependencies free.\n */\n\n/**\n * Keycode for ALT key.\n */\nexport const ALT = 'alt';\n\n/**\n * Keycode for CTRL key.\n */\nexport const CTRL = 'ctrl';\n\n/**\n * Keycode for COMMAND key.\n */\nexport const COMMAND = 'meta';\n\n/**\n * Keycode for SHIFT key.\n */\nexport const SHIFT = 'shift';\n\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n */\nexport const modifiers: Record<\n\tstring,\n\t( _isApple: () => boolean ) => string[]\n> = {\n\tprimary: ( _isApple ) => ( _isApple() ? [ COMMAND ] : [ CTRL ] ),\n\tprimaryShift: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, COMMAND ] : [ CTRL, SHIFT ],\n\tprimaryAlt: ( _isApple ) =>\n\t\t_isApple() ? [ ALT, COMMAND ] : [ CTRL, ALT ],\n\tsecondary: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, ALT, COMMAND ] : [ CTRL, SHIFT, ALT ],\n\taccess: ( _isApple ) => ( _isApple() ? [ CTRL, ALT ] : [ SHIFT, ALT ] ),\n\tctrl: () => [ CTRL ],\n\talt: () => [ ALT ],\n\tctrlShift: () => [ CTRL, SHIFT ],\n\tshift: () => [ SHIFT ],\n\tshiftAlt: () => [ SHIFT, ALT ],\n\tundefined: () => [],\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQO,MAAM,MAAM;AAKZ,MAAM,OAAO;AAKb,MAAM,UAAU;AAKhB,MAAM,QAAQ;AAMd,MAAM,YAGT;AAAA,EACH,SAAS,CAAE,aAAgB,SAAS,IAAI,CAAE,OAAQ,IAAI,CAAE,IAAK;AAAA,EAC7D,cAAc,CAAE,aACf,SAAS,IAAI,CAAE,OAAO,OAAQ,IAAI,CAAE,MAAM,KAAM;AAAA,EACjD,YAAY,CAAE,aACb,SAAS,IAAI,CAAE,KAAK,OAAQ,IAAI,CAAE,MAAM,GAAI;AAAA,EAC7C,WAAW,CAAE,aACZ,SAAS,IAAI,CAAE,OAAO,KAAK,OAAQ,IAAI,CAAE,MAAM,OAAO,GAAI;AAAA,EAC3D,QAAQ,CAAE,aAAgB,SAAS,IAAI,CAAE,MAAM,GAAI,IAAI,CAAE,OAAO,GAAI;AAAA,EACpE,MAAM,MAAM,CAAE,IAAK;AAAA,EACnB,KAAK,MAAM,CAAE,GAAI;AAAA,EACjB,WAAW,MAAM,CAAE,MAAM,KAAM;AAAA,EAC/B,OAAO,MAAM,CAAE,KAAM;AAAA,EACrB,UAAU,MAAM,CAAE,OAAO,GAAI;AAAA,EAC7B,WAAW,MAAM,CAAC;AACnB;",
6
+ "names": []
7
+ }
@@ -1,142 +1,163 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setClipboardData = setClipboardData;
4
- exports.pressKeys = pressKeys;
5
- /**
6
- * External dependencies
7
- */
8
- const change_case_1 = require("change-case");
9
- const keycodes_1 = require("./keycodes");
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var press_keys_exports = {};
20
+ __export(press_keys_exports, {
21
+ pressKeys: () => pressKeys,
22
+ setClipboardData: () => setClipboardData
23
+ });
24
+ module.exports = __toCommonJS(press_keys_exports);
25
+ var import_change_case = require("change-case");
26
+ var import_keycodes = require("./keycodes");
10
27
  let clipboardDataHolder = {
11
- 'text/plain': '',
12
- 'text/html': '',
13
- 'rich-text': '',
28
+ "text/plain": "",
29
+ "text/html": "",
30
+ "rich-text": ""
14
31
  };
15
- /**
16
- * Sets the clipboard data that can be pasted with
17
- * `pressKeys( 'primary+v' )`.
18
- *
19
- * @param this
20
- * @param clipboardData
21
- * @param clipboardData.plainText
22
- * @param clipboardData.html
23
- */
24
- function setClipboardData({ plainText = '', html = '' }) {
25
- clipboardDataHolder = {
26
- 'text/plain': plainText,
27
- 'text/html': html,
28
- 'rich-text': '',
29
- };
32
+ function setClipboardData({ plainText = "", html = "" }) {
33
+ clipboardDataHolder = {
34
+ "text/plain": plainText,
35
+ "text/html": html,
36
+ "rich-text": ""
37
+ };
30
38
  }
31
39
  async function emulateClipboard(page, type) {
32
- const output = await page.evaluate(([_type, _clipboardData]) => {
33
- const canvasDoc =
40
+ const output = await page.evaluate(
41
+ ([_type, _clipboardData]) => {
42
+ const canvasDoc = (
34
43
  // @ts-ignore
35
- document.activeElement?.contentDocument ?? document;
36
- const event = new ClipboardEvent(_type, {
37
- bubbles: true,
38
- cancelable: true,
39
- clipboardData: new DataTransfer(),
40
- });
41
- if (!event.clipboardData) {
42
- throw new Error('ClipboardEvent.clipboardData is null');
43
- }
44
- if (_type === 'paste') {
45
- event.clipboardData.setData('text/plain', _clipboardData['text/plain']);
46
- event.clipboardData.setData('text/html', _clipboardData['text/html']);
47
- event.clipboardData.setData('rich-text', _clipboardData['rich-text']);
48
- }
49
- else {
50
- const selection = canvasDoc.defaultView.getSelection();
51
- const plainText = selection.toString();
52
- let html = plainText;
53
- if (selection.rangeCount) {
54
- const range = selection.getRangeAt(0);
55
- const fragment = range.cloneContents();
56
- html = Array.from(fragment.childNodes)
57
- .map((node) => node.outerHTML ??
58
- node.nodeValue)
59
- .join('');
60
- }
61
- event.clipboardData.setData('text/plain', plainText);
62
- event.clipboardData.setData('text/html', html);
44
+ document.activeElement?.contentDocument ?? document
45
+ );
46
+ const event = new ClipboardEvent(_type, {
47
+ bubbles: true,
48
+ cancelable: true,
49
+ clipboardData: new DataTransfer()
50
+ });
51
+ if (!event.clipboardData) {
52
+ throw new Error("ClipboardEvent.clipboardData is null");
53
+ }
54
+ if (_type === "paste") {
55
+ event.clipboardData.setData(
56
+ "text/plain",
57
+ _clipboardData["text/plain"]
58
+ );
59
+ event.clipboardData.setData(
60
+ "text/html",
61
+ _clipboardData["text/html"]
62
+ );
63
+ event.clipboardData.setData(
64
+ "rich-text",
65
+ _clipboardData["rich-text"]
66
+ );
67
+ } else {
68
+ const selection = canvasDoc.defaultView.getSelection();
69
+ const plainText = selection.toString();
70
+ let html = plainText;
71
+ if (selection.rangeCount) {
72
+ const range = selection.getRangeAt(0);
73
+ const fragment = range.cloneContents();
74
+ html = Array.from(fragment.childNodes).map(
75
+ (node) => node.outerHTML ?? node.nodeValue
76
+ ).join("");
63
77
  }
64
- canvasDoc.activeElement.dispatchEvent(event);
65
- if (_type === 'paste') {
66
- return event.defaultPrevented;
67
- }
68
- return {
69
- 'text/plain': event.clipboardData.getData('text/plain'),
70
- 'text/html': event.clipboardData.getData('text/html'),
71
- 'rich-text': event.clipboardData.getData('rich-text'),
72
- };
73
- }, [type, clipboardDataHolder]);
74
- if (typeof output === 'object') {
75
- clipboardDataHolder = output;
76
- }
77
- if (output === false) {
78
- // Emulate paste by typing the clipboard content, which works across all
79
- // elements and documents (keyboard.type does uses the nested active
80
- // element automatically).
81
- await page.keyboard.type(clipboardDataHolder['text/plain']);
82
- }
78
+ event.clipboardData.setData("text/plain", plainText);
79
+ event.clipboardData.setData("text/html", html);
80
+ }
81
+ canvasDoc.activeElement.dispatchEvent(event);
82
+ if (_type === "paste") {
83
+ return event.defaultPrevented;
84
+ }
85
+ return {
86
+ "text/plain": event.clipboardData.getData("text/plain"),
87
+ "text/html": event.clipboardData.getData("text/html"),
88
+ "rich-text": event.clipboardData.getData("rich-text")
89
+ };
90
+ },
91
+ [type, clipboardDataHolder]
92
+ );
93
+ if (typeof output === "object") {
94
+ clipboardDataHolder = output;
95
+ }
96
+ if (output === false) {
97
+ await page.keyboard.type(clipboardDataHolder["text/plain"]);
98
+ }
83
99
  }
84
- const isAppleOS = () => process.platform === 'darwin';
85
- const isWebkit = (page) => page.context().browser().browserType().name() === 'webkit';
86
- const browserCache = new WeakMap();
100
+ const isAppleOS = () => process.platform === "darwin";
101
+ const isWebkit = (page) => page.context().browser().browserType().name() === "webkit";
102
+ const browserCache = /* @__PURE__ */ new WeakMap();
87
103
  const getHasNaturalTabNavigation = async (page) => {
88
- if (!isAppleOS() || !isWebkit(page)) {
89
- return true;
90
- }
91
- if (browserCache.has(page.context().browser())) {
92
- return browserCache.get(page.context().browser());
93
- }
94
- const testPage = await page.context().newPage();
95
- await testPage.setContent(`<button>1</button><button>2</button>`);
96
- await testPage.getByText('1').focus();
97
- await testPage.keyboard.press('Tab');
98
- const featureDetected = await testPage
99
- .getByText('2')
100
- .evaluate((node) => node === document.activeElement);
101
- browserCache.set(page.context().browser(), featureDetected);
102
- await testPage.close();
103
- return featureDetected;
104
+ if (!isAppleOS() || !isWebkit(page)) {
105
+ return true;
106
+ }
107
+ if (browserCache.has(page.context().browser())) {
108
+ return browserCache.get(page.context().browser());
109
+ }
110
+ const testPage = await page.context().newPage();
111
+ await testPage.setContent(`<button>1</button><button>2</button>`);
112
+ await testPage.getByText("1").focus();
113
+ await testPage.keyboard.press("Tab");
114
+ const featureDetected = await testPage.getByText("2").evaluate((node) => node === document.activeElement);
115
+ browserCache.set(page.context().browser(), featureDetected);
116
+ await testPage.close();
117
+ return featureDetected;
104
118
  };
105
119
  const modifiers = {
106
- ...keycodes_1.modifiers,
107
- shiftAlt: (_isApple) => _isApple() ? [keycodes_1.SHIFT, keycodes_1.ALT] : [keycodes_1.SHIFT, keycodes_1.CTRL],
120
+ ...import_keycodes.modifiers,
121
+ shiftAlt: (_isApple) => _isApple() ? [import_keycodes.SHIFT, import_keycodes.ALT] : [import_keycodes.SHIFT, import_keycodes.CTRL]
108
122
  };
109
123
  async function pressKeys(key, { times, ...pressOptions } = {}) {
110
- const hasNaturalTabNavigation = await getHasNaturalTabNavigation(this.page);
111
- let command;
112
- if (key.toLowerCase() === 'primary+c') {
113
- command = () => emulateClipboard(this.page, 'copy');
114
- }
115
- else if (key.toLowerCase() === 'primary+x') {
116
- command = () => emulateClipboard(this.page, 'cut');
117
- }
118
- else if (key.toLowerCase() === 'primary+v') {
119
- command = () => emulateClipboard(this.page, 'paste');
120
- }
121
- else {
122
- const keys = key.split('+').flatMap((keyCode) => {
123
- if (Object.prototype.hasOwnProperty.call(modifiers, keyCode)) {
124
- return modifiers[keyCode](isAppleOS).map((modifier) => modifier === keycodes_1.CTRL ? 'Control' : (0, change_case_1.capitalCase)(modifier));
125
- }
126
- else if (keyCode === 'Tab' && !hasNaturalTabNavigation) {
127
- return ['Alt', 'Tab'];
128
- }
129
- return keyCode;
130
- });
131
- const normalizedKeys = keys.join('+');
132
- command = () => this.page.keyboard.press(normalizedKeys);
133
- }
134
- times = times ?? 1;
135
- for (let i = 0; i < times; i += 1) {
136
- await command();
137
- if (times > 1 && pressOptions.delay) {
138
- await this.page.waitForTimeout(pressOptions.delay);
139
- }
124
+ const hasNaturalTabNavigation = await getHasNaturalTabNavigation(
125
+ this.page
126
+ );
127
+ let command;
128
+ if (key.toLowerCase() === "primary+c") {
129
+ command = () => emulateClipboard(this.page, "copy");
130
+ } else if (key.toLowerCase() === "primary+x") {
131
+ command = () => emulateClipboard(this.page, "cut");
132
+ } else if (key.toLowerCase() === "primary+v") {
133
+ command = () => emulateClipboard(this.page, "paste");
134
+ } else {
135
+ const keys = key.split("+").flatMap((keyCode) => {
136
+ if (Object.prototype.hasOwnProperty.call(modifiers, keyCode)) {
137
+ return modifiers[keyCode](
138
+ isAppleOS
139
+ ).map(
140
+ (modifier) => modifier === import_keycodes.CTRL ? "Control" : (0, import_change_case.capitalCase)(modifier)
141
+ );
142
+ } else if (keyCode === "Tab" && !hasNaturalTabNavigation) {
143
+ return ["Alt", "Tab"];
144
+ }
145
+ return keyCode;
146
+ });
147
+ const normalizedKeys = keys.join("+");
148
+ command = () => this.page.keyboard.press(normalizedKeys);
149
+ }
150
+ times = times ?? 1;
151
+ for (let i = 0; i < times; i += 1) {
152
+ await command();
153
+ if (times > 1 && pressOptions.delay) {
154
+ await this.page.waitForTimeout(pressOptions.delay);
140
155
  }
156
+ }
141
157
  }
142
- //# sourceMappingURL=press-keys.js.map
158
+ // Annotate the CommonJS export names for ESM import in node:
159
+ 0 && (module.exports = {
160
+ pressKeys,
161
+ setClipboardData
162
+ });
163
+ //# sourceMappingURL=press-keys.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"press-keys.js","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/page-utils/press-keys.ts"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\nimport type { Page } from '@playwright/test';\n\n/**\n * Internal dependencies\n */\nimport type { PageUtils } from './';\nimport { modifiers as baseModifiers, SHIFT, ALT, CTRL } from './keycodes';\n\nlet clipboardDataHolder: {\n\t'text/plain': string;\n\t'text/html': string;\n\t'rich-text': string;\n} = {\n\t'text/plain': '',\n\t'text/html': '',\n\t'rich-text': '',\n};\n\n/**\n * Sets the clipboard data that can be pasted with\n * `pressKeys( 'primary+v' )`.\n *\n * @param this\n * @param clipboardData\n * @param clipboardData.plainText\n * @param clipboardData.html\n */\nexport function setClipboardData(\n\tthis: PageUtils,\n\t{ plainText = '', html = '' }\n) {\n\tclipboardDataHolder = {\n\t\t'text/plain': plainText,\n\t\t'text/html': html,\n\t\t'rich-text': '',\n\t};\n}\n\nasync function emulateClipboard( page: Page, type: 'copy' | 'cut' | 'paste' ) {\n\tconst output = await page.evaluate(\n\t\t( [ _type, _clipboardData ] ) => {\n\t\t\tconst canvasDoc =\n\t\t\t\t// @ts-ignore\n\t\t\t\tdocument.activeElement?.contentDocument ?? document;\n\t\t\tconst event = new ClipboardEvent( _type, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true,\n\t\t\t\tclipboardData: new DataTransfer(),\n\t\t\t} );\n\n\t\t\tif ( ! event.clipboardData ) {\n\t\t\t\tthrow new Error( 'ClipboardEvent.clipboardData is null' );\n\t\t\t}\n\n\t\t\tif ( _type === 'paste' ) {\n\t\t\t\tevent.clipboardData.setData(\n\t\t\t\t\t'text/plain',\n\t\t\t\t\t_clipboardData[ 'text/plain' ]\n\t\t\t\t);\n\t\t\t\tevent.clipboardData.setData(\n\t\t\t\t\t'text/html',\n\t\t\t\t\t_clipboardData[ 'text/html' ]\n\t\t\t\t);\n\t\t\t\tevent.clipboardData.setData(\n\t\t\t\t\t'rich-text',\n\t\t\t\t\t_clipboardData[ 'rich-text' ]\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst selection = canvasDoc.defaultView.getSelection()!;\n\t\t\t\tconst plainText = selection.toString();\n\t\t\t\tlet html = plainText;\n\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\tconst range = selection.getRangeAt( 0 );\n\t\t\t\t\tconst fragment = range.cloneContents();\n\t\t\t\t\thtml = Array.from( fragment.childNodes )\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t( node ) =>\n\t\t\t\t\t\t\t\t( node as Element ).outerHTML ??\n\t\t\t\t\t\t\t\t( node as Element ).nodeValue\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join( '' );\n\t\t\t\t}\n\t\t\t\tevent.clipboardData.setData( 'text/plain', plainText );\n\t\t\t\tevent.clipboardData.setData( 'text/html', html );\n\t\t\t}\n\n\t\t\tcanvasDoc.activeElement.dispatchEvent( event );\n\n\t\t\tif ( _type === 'paste' ) {\n\t\t\t\treturn event.defaultPrevented;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t'text/plain': event.clipboardData.getData( 'text/plain' ),\n\t\t\t\t'text/html': event.clipboardData.getData( 'text/html' ),\n\t\t\t\t'rich-text': event.clipboardData.getData( 'rich-text' ),\n\t\t\t};\n\t\t},\n\t\t[ type, clipboardDataHolder ] as const\n\t);\n\n\tif ( typeof output === 'object' ) {\n\t\tclipboardDataHolder = output;\n\t}\n\n\tif ( output === false ) {\n\t\t// Emulate paste by typing the clipboard content, which works across all\n\t\t// elements and documents (keyboard.type does uses the nested active\n\t\t// element automatically).\n\t\tawait page.keyboard.type( clipboardDataHolder[ 'text/plain' ] );\n\t}\n}\n\nconst isAppleOS = () => process.platform === 'darwin';\n\nconst isWebkit = ( page: Page ) =>\n\tpage.context().browser()!.browserType().name() === 'webkit';\n\nconst browserCache = new WeakMap();\nconst getHasNaturalTabNavigation = async ( page: Page ) => {\n\tif ( ! isAppleOS() || ! isWebkit( page ) ) {\n\t\treturn true;\n\t}\n\tif ( browserCache.has( page.context().browser()! ) ) {\n\t\treturn browserCache.get( page.context().browser()! );\n\t}\n\tconst testPage = await page.context().newPage();\n\tawait testPage.setContent( `<button>1</button><button>2</button>` );\n\tawait testPage.getByText( '1' ).focus();\n\tawait testPage.keyboard.press( 'Tab' );\n\tconst featureDetected = await testPage\n\t\t.getByText( '2' )\n\t\t.evaluate( ( node ) => node === document.activeElement );\n\tbrowserCache.set( page.context().browser()!, featureDetected );\n\tawait testPage.close();\n\treturn featureDetected;\n};\n\ntype Options = {\n\ttimes?: number;\n\tdelay?: number;\n};\n\nconst modifiers = {\n\t...baseModifiers,\n\tshiftAlt: ( _isApple: () => boolean ) =>\n\t\t_isApple() ? [ SHIFT, ALT ] : [ SHIFT, CTRL ],\n};\n\nexport async function pressKeys(\n\tthis: PageUtils,\n\tkey: string,\n\t{ times, ...pressOptions }: Options = {}\n) {\n\tconst hasNaturalTabNavigation = await getHasNaturalTabNavigation(\n\t\tthis.page\n\t);\n\n\tlet command: () => Promise< void >;\n\n\tif ( key.toLowerCase() === 'primary+c' ) {\n\t\tcommand = () => emulateClipboard( this.page, 'copy' );\n\t} else if ( key.toLowerCase() === 'primary+x' ) {\n\t\tcommand = () => emulateClipboard( this.page, 'cut' );\n\t} else if ( key.toLowerCase() === 'primary+v' ) {\n\t\tcommand = () => emulateClipboard( this.page, 'paste' );\n\t} else {\n\t\tconst keys = key.split( '+' ).flatMap( ( keyCode ) => {\n\t\t\tif ( Object.prototype.hasOwnProperty.call( modifiers, keyCode ) ) {\n\t\t\t\treturn modifiers[ keyCode as keyof typeof modifiers ](\n\t\t\t\t\tisAppleOS\n\t\t\t\t).map( ( modifier ) =>\n\t\t\t\t\tmodifier === CTRL ? 'Control' : capitalCase( modifier )\n\t\t\t\t);\n\t\t\t} else if ( keyCode === 'Tab' && ! hasNaturalTabNavigation ) {\n\t\t\t\treturn [ 'Alt', 'Tab' ];\n\t\t\t}\n\t\t\treturn keyCode;\n\t\t} );\n\t\tconst normalizedKeys = keys.join( '+' );\n\t\tcommand = () => this.page.keyboard.press( normalizedKeys );\n\t}\n\n\ttimes = times ?? 1;\n\tfor ( let i = 0; i < times; i += 1 ) {\n\t\tawait command();\n\n\t\tif ( times > 1 && pressOptions.delay ) {\n\t\t\tawait this.page.waitForTimeout( pressOptions.delay );\n\t\t}\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["baseModifiers"]
7
+ }
@@ -1,46 +1,37 @@
1
1
  "use strict";
2
- /**
3
- * Named viewport options.
4
- *
5
- * @typedef {"large"|"medium"|"small"} WPDimensionsName
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.setBrowserViewport = setBrowserViewport;
9
- /**
10
- * Viewport dimensions object.
11
- *
12
- * @typedef {Object} WPViewportDimensions
13
- *
14
- * @property {number} width Width, in pixels.
15
- * @property {number} height Height, in pixels.
16
- */
17
- /**
18
- * Predefined viewport dimensions to reference by name.
19
- *
20
- * @enum {WPViewportDimensions}
21
- *
22
- * @type {Record<WPDimensionsName, WPViewportDimensions>}
23
- */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var set_browser_viewport_exports = {};
20
+ __export(set_browser_viewport_exports, {
21
+ setBrowserViewport: () => setBrowserViewport
22
+ });
23
+ module.exports = __toCommonJS(set_browser_viewport_exports);
24
24
  const PREDEFINED_DIMENSIONS = {
25
- large: { width: 960, height: 700 },
26
- medium: { width: 768, height: 700 },
27
- small: { width: 600, height: 700 },
25
+ large: { width: 960, height: 700 },
26
+ medium: { width: 768, height: 700 },
27
+ small: { width: 600, height: 700 }
28
28
  };
29
- /**
30
- * Valid argument argument type from which to derive viewport dimensions.
31
- *
32
- * @typedef {WPDimensionsName|WPViewportDimensions} WPViewport
33
- */
34
- /**
35
- * Sets browser viewport to specified type.
36
- *
37
- * @this {import('./').PageUtils}
38
- * @param {WPViewport} viewport Viewport name or dimensions object to assign.
39
- */
40
29
  async function setBrowserViewport(viewport) {
41
- const dimensions = typeof viewport === 'string'
42
- ? PREDEFINED_DIMENSIONS[viewport]
43
- : viewport;
44
- await this.page.setViewportSize(dimensions);
30
+ const dimensions = typeof viewport === "string" ? PREDEFINED_DIMENSIONS[viewport] : viewport;
31
+ await this.page.setViewportSize(dimensions);
45
32
  }
46
- //# sourceMappingURL=set-browser-viewport.js.map
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ setBrowserViewport
36
+ });
37
+ //# sourceMappingURL=set-browser-viewport.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"set-browser-viewport.js","sourceRoot":"","sources":["../../src/page-utils/set-browser-viewport.js"],"names":[],"mappings":";AAAA;;;;GAIG;;AAoCH,gDAOC;AAzCD;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG;IAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAClC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACnC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CAClC,CAAC;AAEF;;;;GAIG;AAEH;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAE,QAAQ;IACjD,MAAM,UAAU,GACf,OAAO,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,qBAAqB,CAAE,QAAQ,CAAE;QACnC,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAE,UAAU,CAAE,CAAC;AAC/C,CAAC"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/page-utils/set-browser-viewport.js"],
4
+ "sourcesContent": ["/**\n * Named viewport options.\n *\n * @typedef {\"large\"|\"medium\"|\"small\"} WPDimensionsName\n */\n\n/**\n * Viewport dimensions object.\n *\n * @typedef {Object} WPViewportDimensions\n *\n * @property {number} width Width, in pixels.\n * @property {number} height Height, in pixels.\n */\n\n/**\n * Predefined viewport dimensions to reference by name.\n *\n * @enum {WPViewportDimensions}\n *\n * @type {Record<WPDimensionsName, WPViewportDimensions>}\n */\nconst PREDEFINED_DIMENSIONS = {\n\tlarge: { width: 960, height: 700 },\n\tmedium: { width: 768, height: 700 },\n\tsmall: { width: 600, height: 700 },\n};\n\n/**\n * Valid argument argument type from which to derive viewport dimensions.\n *\n * @typedef {WPDimensionsName|WPViewportDimensions} WPViewport\n */\n\n/**\n * Sets browser viewport to specified type.\n *\n * @this {import('./').PageUtils}\n * @param {WPViewport} viewport Viewport name or dimensions object to assign.\n */\nexport async function setBrowserViewport( viewport ) {\n\tconst dimensions =\n\t\ttypeof viewport === 'string'\n\t\t\t? PREDEFINED_DIMENSIONS[ viewport ]\n\t\t\t: viewport;\n\n\tawait this.page.setViewportSize( dimensions );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA,MAAM,wBAAwB;AAAA,EAC7B,OAAO,EAAE,OAAO,KAAK,QAAQ,IAAI;AAAA,EACjC,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI;AAAA,EAClC,OAAO,EAAE,OAAO,KAAK,QAAQ,IAAI;AAClC;AAcA,eAAsB,mBAAoB,UAAW;AACpD,QAAM,aACL,OAAO,aAAa,WACjB,sBAAuB,QAAS,IAChC;AAEJ,QAAM,KAAK,KAAK,gBAAiB,UAAW;AAC7C;",
6
+ "names": []
7
+ }