@wordpress/e2e-test-utils-playwright 1.36.0 → 1.36.1-next.738bb1424.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.
- package/build/admin/create-new-post.cjs +51 -0
- package/build/admin/create-new-post.cjs.map +7 -0
- package/build/admin/create-new-post.js +28 -48
- package/build/admin/create-new-post.js.map +1 -7
- package/build/admin/edit-post.cjs +40 -0
- package/build/admin/edit-post.cjs.map +7 -0
- package/build/admin/edit-post.js +17 -37
- package/build/admin/edit-post.js.map +1 -7
- package/build/admin/get-page-error.cjs +36 -0
- package/build/admin/get-page-error.cjs.map +7 -0
- package/build/admin/get-page-error.js +23 -33
- package/build/admin/get-page-error.js.map +1 -7
- package/build/admin/index.cjs +59 -0
- package/build/admin/index.cjs.map +7 -0
- package/build/admin/index.js +36 -58
- package/build/admin/index.js.map +1 -7
- package/build/admin/visit-admin-page.cjs +47 -0
- package/build/admin/visit-admin-page.cjs.map +7 -0
- package/build/admin/visit-admin-page.js +29 -44
- package/build/admin/visit-admin-page.js.map +1 -7
- package/build/admin/visit-site-editor.cjs +77 -0
- package/build/admin/visit-site-editor.cjs.map +7 -0
- package/build/admin/visit-site-editor.js +64 -73
- package/build/admin/visit-site-editor.js.map +1 -7
- package/build/config.cjs +45 -0
- package/build/config.cjs.map +7 -0
- package/build/config.js +11 -43
- package/build/config.js.map +1 -7
- package/build/editor/click-block-options-menu-item.cjs +34 -0
- package/build/editor/click-block-options-menu-item.cjs.map +7 -0
- package/build/editor/click-block-options-menu-item.js +14 -31
- package/build/editor/click-block-options-menu-item.js.map +1 -7
- package/build/editor/click-block-toolbar-button.cjs +38 -0
- package/build/editor/click-block-toolbar-button.cjs.map +7 -0
- package/build/editor/click-block-toolbar-button.js +13 -35
- package/build/editor/click-block-toolbar-button.js.map +1 -7
- package/build/editor/get-blocks.cjs +64 -0
- package/build/editor/get-blocks.cjs.map +7 -0
- package/build/editor/get-blocks.js +43 -61
- package/build/editor/get-blocks.js.map +1 -7
- package/build/editor/get-edited-post-content.cjs +36 -0
- package/build/editor/get-edited-post-content.cjs.map +7 -0
- package/build/editor/get-edited-post-content.js +12 -33
- package/build/editor/get-edited-post-content.js.map +1 -7
- package/build/editor/index.cjs +97 -0
- package/build/editor/index.cjs.map +7 -0
- package/build/editor/index.js +74 -96
- package/build/editor/index.js.map +1 -7
- package/build/editor/insert-block.cjs +55 -0
- package/build/editor/insert-block.cjs.map +7 -0
- package/build/editor/insert-block.js +21 -52
- package/build/editor/insert-block.js.map +1 -7
- package/build/editor/open-document-settings-sidebar.cjs +42 -0
- package/build/editor/open-document-settings-sidebar.cjs.map +7 -0
- package/build/editor/open-document-settings-sidebar.js +24 -39
- package/build/editor/open-document-settings-sidebar.js.map +1 -7
- package/build/editor/preview.cjs +42 -0
- package/build/editor/preview.cjs.map +7 -0
- package/build/editor/preview.js +18 -39
- package/build/editor/preview.js.map +1 -7
- package/build/editor/publish-post.cjs +47 -0
- package/build/editor/publish-post.cjs.map +7 -0
- package/build/editor/publish-post.js +42 -44
- package/build/editor/publish-post.js.map +1 -7
- package/build/editor/save-draft.cjs +34 -0
- package/build/editor/save-draft.cjs.map +7 -0
- package/build/editor/save-draft.js +15 -31
- package/build/editor/save-draft.js.map +1 -7
- package/build/editor/select-blocks.cjs +51 -0
- package/build/editor/select-blocks.cjs.map +7 -0
- package/build/editor/select-blocks.js +25 -48
- package/build/editor/select-blocks.js.map +1 -7
- package/build/editor/set-content.cjs +39 -0
- package/build/editor/set-content.cjs.map +7 -0
- package/build/editor/set-content.js +14 -36
- package/build/editor/set-content.js.map +1 -7
- package/build/editor/set-is-fixed-toolbar.cjs +36 -0
- package/build/editor/set-is-fixed-toolbar.cjs.map +7 -0
- package/build/editor/set-is-fixed-toolbar.js +15 -33
- package/build/editor/set-is-fixed-toolbar.js.map +1 -7
- package/build/editor/set-preferences.cjs +43 -0
- package/build/editor/set-preferences.cjs.map +7 -0
- package/build/editor/set-preferences.js +18 -40
- package/build/editor/set-preferences.js.map +1 -7
- package/build/editor/show-block-toolbar.cjs +35 -0
- package/build/editor/show-block-toolbar.cjs.map +7 -0
- package/build/editor/show-block-toolbar.js +16 -32
- package/build/editor/show-block-toolbar.js.map +1 -7
- package/build/editor/site-editor.cjs +51 -0
- package/build/editor/site-editor.cjs.map +7 -0
- package/build/editor/site-editor.js +41 -48
- package/build/editor/site-editor.js.map +1 -7
- package/build/editor/switch-editor-tool.cjs +47 -0
- package/build/editor/switch-editor-tool.cjs.map +7 -0
- package/build/editor/switch-editor-tool.js +30 -44
- package/build/editor/switch-editor-tool.js.map +1 -7
- package/build/editor/switch-to-legacy-canvas.cjs +39 -0
- package/build/editor/switch-to-legacy-canvas.cjs.map +7 -0
- package/build/editor/switch-to-legacy-canvas.js +14 -35
- package/build/editor/switch-to-legacy-canvas.js.map +1 -7
- package/build/editor/transform-block-to.cjs +46 -0
- package/build/editor/transform-block-to.cjs.map +7 -0
- package/build/editor/transform-block-to.js +21 -43
- package/build/editor/transform-block-to.js.map +1 -7
- package/build/index.cjs +51 -0
- package/build/index.cjs.map +7 -0
- package/build/index.js +18 -53
- package/build/index.js.map +1 -7
- package/build/lighthouse/index.cjs +96 -0
- package/build/lighthouse/index.cjs.map +7 -0
- package/build/lighthouse/index.js +55 -93
- package/build/lighthouse/index.js.map +1 -7
- package/build/metrics/index.cjs +309 -0
- package/build/metrics/index.cjs.map +7 -0
- package/build/metrics/index.js +251 -302
- package/build/metrics/index.js.map +1 -7
- package/build/page-utils/drag-files.cjs +143 -0
- package/build/page-utils/drag-files.cjs.map +7 -0
- package/build/page-utils/drag-files.js +112 -136
- package/build/page-utils/drag-files.js.map +1 -7
- package/build/page-utils/emulate-network-conditions.cjs +99 -0
- package/build/page-utils/emulate-network-conditions.cjs.map +7 -0
- package/build/page-utils/emulate-network-conditions.js +67 -95
- package/build/page-utils/emulate-network-conditions.js.map +1 -7
- package/build/page-utils/index.cjs +59 -0
- package/build/page-utils/index.cjs.map +7 -0
- package/build/page-utils/index.js +36 -58
- package/build/page-utils/index.js.map +1 -7
- package/build/page-utils/is-current-url.cjs +36 -0
- package/build/page-utils/is-current-url.cjs.map +7 -0
- package/build/page-utils/is-current-url.js +18 -33
- package/build/page-utils/is-current-url.js.map +1 -7
- package/build/page-utils/keycodes.cjs +55 -0
- package/build/page-utils/keycodes.cjs.map +7 -0
- package/build/page-utils/keycodes.js +39 -53
- package/build/page-utils/keycodes.js.map +1 -7
- package/build/page-utils/press-keys.cjs +165 -0
- package/build/page-utils/press-keys.cjs.map +7 -0
- package/build/page-utils/press-keys.js +130 -153
- package/build/page-utils/press-keys.js.map +1 -7
- package/build/page-utils/set-browser-viewport.cjs +39 -0
- package/build/page-utils/set-browser-viewport.cjs.map +7 -0
- package/build/page-utils/set-browser-viewport.js +42 -35
- package/build/page-utils/set-browser-viewport.js.map +1 -7
- package/build/request-utils/blocks.cjs +56 -0
- package/build/request-utils/blocks.cjs.map +7 -0
- package/build/request-utils/blocks.js +40 -51
- package/build/request-utils/blocks.js.map +1 -7
- package/build/request-utils/comments.cjs +66 -0
- package/build/request-utils/comments.cjs.map +7 -0
- package/build/request-utils/comments.js +45 -59
- package/build/request-utils/comments.js.map +1 -7
- package/build/request-utils/gutenberg-experiments.cjs +66 -0
- package/build/request-utils/gutenberg-experiments.cjs.map +7 -0
- package/build/request-utils/gutenberg-experiments.js +38 -63
- package/build/request-utils/gutenberg-experiments.js.map +1 -7
- package/build/request-utils/index.cjs +194 -0
- package/build/request-utils/index.cjs.map +7 -0
- package/build/request-utils/index.js +155 -191
- package/build/request-utils/index.js.map +1 -7
- package/build/request-utils/login.cjs +48 -0
- package/build/request-utils/login.cjs.map +7 -0
- package/build/request-utils/login.js +18 -45
- package/build/request-utils/login.js.map +1 -7
- package/build/request-utils/media.cjs +83 -0
- package/build/request-utils/media.cjs.map +7 -0
- package/build/request-utils/media.js +64 -74
- package/build/request-utils/media.js.map +1 -7
- package/build/request-utils/menus.cjs +132 -0
- package/build/request-utils/menus.cjs.map +7 -0
- package/build/request-utils/menus.js +109 -121
- package/build/request-utils/menus.js.map +1 -7
- package/build/request-utils/pages.cjs +71 -0
- package/build/request-utils/pages.cjs.map +7 -0
- package/build/request-utils/pages.js +50 -63
- package/build/request-utils/pages.js.map +1 -7
- package/build/request-utils/patterns.cjs +44 -0
- package/build/request-utils/patterns.cjs.map +7 -0
- package/build/request-utils/patterns.js +24 -41
- package/build/request-utils/patterns.js.map +1 -7
- package/build/request-utils/plugins.cjs +81 -0
- package/build/request-utils/plugins.cjs.map +7 -0
- package/build/request-utils/plugins.js +74 -70
- package/build/request-utils/plugins.js.map +1 -7
- package/build/request-utils/posts.cjs +61 -0
- package/build/request-utils/posts.cjs.map +7 -0
- package/build/request-utils/posts.js +41 -55
- package/build/request-utils/posts.js.map +1 -7
- package/build/request-utils/preferences.cjs +41 -0
- package/build/request-utils/preferences.cjs.map +7 -0
- package/build/request-utils/preferences.js +17 -38
- package/build/request-utils/preferences.js.map +1 -7
- package/build/request-utils/rest.cjs +174 -0
- package/build/request-utils/rest.cjs.map +7 -0
- package/build/request-utils/rest.js +129 -155
- package/build/request-utils/rest.js.map +1 -7
- package/build/request-utils/site-settings.cjs +45 -0
- package/build/request-utils/site-settings.cjs.map +7 -0
- package/build/request-utils/site-settings.js +28 -40
- package/build/request-utils/site-settings.js.map +1 -7
- package/build/request-utils/templates.cjs +68 -0
- package/build/request-utils/templates.cjs.map +7 -0
- package/build/request-utils/templates.js +46 -60
- package/build/request-utils/templates.js.map +1 -7
- package/build/request-utils/themes.cjs +89 -0
- package/build/request-utils/themes.cjs.map +7 -0
- package/build/request-utils/themes.js +53 -80
- package/build/request-utils/themes.js.map +1 -7
- package/build/request-utils/users.cjs +83 -0
- package/build/request-utils/users.cjs.map +7 -0
- package/build/request-utils/users.js +72 -74
- package/build/request-utils/users.js.map +1 -7
- package/build/request-utils/widgets.cjs +79 -0
- package/build/request-utils/widgets.cjs.map +7 -0
- package/build/request-utils/widgets.js +55 -73
- package/build/request-utils/widgets.js.map +1 -7
- package/build/test.cjs +136 -0
- package/build/test.cjs.map +7 -0
- package/build/test.js +146 -130
- package/build/test.js.map +1 -7
- package/build/types.cjs +19 -0
- package/build/types.cjs.map +7 -0
- package/build/types.js +2 -18
- package/build/types.js.map +1 -7
- package/build-types/index.d.ts +1 -1
- package/build-types/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,55 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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: () => [],
|
|
9
40
|
};
|
|
10
|
-
|
|
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
|
-
|
|
20
|
-
// packages/e2e-test-utils-playwright/src/page-utils/keycodes.ts
|
|
21
|
-
var keycodes_exports = {};
|
|
22
|
-
__export(keycodes_exports, {
|
|
23
|
-
ALT: () => ALT,
|
|
24
|
-
COMMAND: () => COMMAND,
|
|
25
|
-
CTRL: () => CTRL,
|
|
26
|
-
SHIFT: () => SHIFT,
|
|
27
|
-
modifiers: () => modifiers
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(keycodes_exports);
|
|
30
|
-
var ALT = "alt";
|
|
31
|
-
var CTRL = "ctrl";
|
|
32
|
-
var COMMAND = "meta";
|
|
33
|
-
var SHIFT = "shift";
|
|
34
|
-
var modifiers = {
|
|
35
|
-
primary: (_isApple) => _isApple() ? [COMMAND] : [CTRL],
|
|
36
|
-
primaryShift: (_isApple) => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
|
|
37
|
-
primaryAlt: (_isApple) => _isApple() ? [ALT, COMMAND] : [CTRL, ALT],
|
|
38
|
-
secondary: (_isApple) => _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT],
|
|
39
|
-
access: (_isApple) => _isApple() ? [CTRL, ALT] : [SHIFT, ALT],
|
|
40
|
-
ctrl: () => [CTRL],
|
|
41
|
-
alt: () => [ALT],
|
|
42
|
-
ctrlShift: () => [CTRL, SHIFT],
|
|
43
|
-
shift: () => [SHIFT],
|
|
44
|
-
shiftAlt: () => [SHIFT, ALT],
|
|
45
|
-
undefined: () => []
|
|
46
|
-
};
|
|
47
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
-
0 && (module.exports = {
|
|
49
|
-
ALT,
|
|
50
|
-
COMMAND,
|
|
51
|
-
CTRL,
|
|
52
|
-
SHIFT,
|
|
53
|
-
modifiers
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=keycodes.js.map
|
|
41
|
+
//# sourceMappingURL=keycodes.js.map
|
|
@@ -1,7 +1 @@
|
|
|
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,IAAM,MAAM;AAKZ,IAAM,OAAO;AAKb,IAAM,UAAU;AAKhB,IAAM,QAAQ;AAMd,IAAM,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
|
+
{"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
|
|
20
|
+
// packages/e2e-test-utils-playwright/src/page-utils/press-keys.ts
|
|
21
|
+
var press_keys_exports = {};
|
|
22
|
+
__export(press_keys_exports, {
|
|
23
|
+
pressKeys: () => pressKeys,
|
|
24
|
+
setClipboardData: () => setClipboardData
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(press_keys_exports);
|
|
27
|
+
var import_change_case = require("change-case");
|
|
28
|
+
var import_keycodes = require("./keycodes.cjs");
|
|
29
|
+
var clipboardDataHolder = {
|
|
30
|
+
"text/plain": "",
|
|
31
|
+
"text/html": "",
|
|
32
|
+
"rich-text": ""
|
|
33
|
+
};
|
|
34
|
+
function setClipboardData({ plainText = "", html = "" }) {
|
|
35
|
+
clipboardDataHolder = {
|
|
36
|
+
"text/plain": plainText,
|
|
37
|
+
"text/html": html,
|
|
38
|
+
"rich-text": ""
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function emulateClipboard(page, type) {
|
|
42
|
+
const output = await page.evaluate(
|
|
43
|
+
([_type, _clipboardData]) => {
|
|
44
|
+
const canvasDoc = (
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
document.activeElement?.contentDocument ?? document
|
|
47
|
+
);
|
|
48
|
+
const event = new ClipboardEvent(_type, {
|
|
49
|
+
bubbles: true,
|
|
50
|
+
cancelable: true,
|
|
51
|
+
clipboardData: new DataTransfer()
|
|
52
|
+
});
|
|
53
|
+
if (!event.clipboardData) {
|
|
54
|
+
throw new Error("ClipboardEvent.clipboardData is null");
|
|
55
|
+
}
|
|
56
|
+
if (_type === "paste") {
|
|
57
|
+
event.clipboardData.setData(
|
|
58
|
+
"text/plain",
|
|
59
|
+
_clipboardData["text/plain"]
|
|
60
|
+
);
|
|
61
|
+
event.clipboardData.setData(
|
|
62
|
+
"text/html",
|
|
63
|
+
_clipboardData["text/html"]
|
|
64
|
+
);
|
|
65
|
+
event.clipboardData.setData(
|
|
66
|
+
"rich-text",
|
|
67
|
+
_clipboardData["rich-text"]
|
|
68
|
+
);
|
|
69
|
+
} else {
|
|
70
|
+
const selection = canvasDoc.defaultView.getSelection();
|
|
71
|
+
const plainText = selection.toString();
|
|
72
|
+
let html = plainText;
|
|
73
|
+
if (selection.rangeCount) {
|
|
74
|
+
const range = selection.getRangeAt(0);
|
|
75
|
+
const fragment = range.cloneContents();
|
|
76
|
+
html = Array.from(fragment.childNodes).map(
|
|
77
|
+
(node) => node.outerHTML ?? node.nodeValue
|
|
78
|
+
).join("");
|
|
79
|
+
}
|
|
80
|
+
event.clipboardData.setData("text/plain", plainText);
|
|
81
|
+
event.clipboardData.setData("text/html", html);
|
|
82
|
+
}
|
|
83
|
+
canvasDoc.activeElement.dispatchEvent(event);
|
|
84
|
+
if (_type === "paste") {
|
|
85
|
+
return event.defaultPrevented;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
"text/plain": event.clipboardData.getData("text/plain"),
|
|
89
|
+
"text/html": event.clipboardData.getData("text/html"),
|
|
90
|
+
"rich-text": event.clipboardData.getData("rich-text")
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
[type, clipboardDataHolder]
|
|
94
|
+
);
|
|
95
|
+
if (typeof output === "object") {
|
|
96
|
+
clipboardDataHolder = output;
|
|
97
|
+
}
|
|
98
|
+
if (output === false) {
|
|
99
|
+
await page.keyboard.type(clipboardDataHolder["text/plain"]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
var isAppleOS = () => process.platform === "darwin";
|
|
103
|
+
var isWebkit = (page) => page.context().browser().browserType().name() === "webkit";
|
|
104
|
+
var browserCache = /* @__PURE__ */ new WeakMap();
|
|
105
|
+
var getHasNaturalTabNavigation = async (page) => {
|
|
106
|
+
if (!isAppleOS() || !isWebkit(page)) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (browserCache.has(page.context().browser())) {
|
|
110
|
+
return browserCache.get(page.context().browser());
|
|
111
|
+
}
|
|
112
|
+
const testPage = await page.context().newPage();
|
|
113
|
+
await testPage.setContent(`<button>1</button><button>2</button>`);
|
|
114
|
+
await testPage.getByText("1").focus();
|
|
115
|
+
await testPage.keyboard.press("Tab");
|
|
116
|
+
const featureDetected = await testPage.getByText("2").evaluate((node) => node === document.activeElement);
|
|
117
|
+
browserCache.set(page.context().browser(), featureDetected);
|
|
118
|
+
await testPage.close();
|
|
119
|
+
return featureDetected;
|
|
120
|
+
};
|
|
121
|
+
var modifiers = {
|
|
122
|
+
...import_keycodes.modifiers,
|
|
123
|
+
shiftAlt: (_isApple) => _isApple() ? [import_keycodes.SHIFT, import_keycodes.ALT] : [import_keycodes.SHIFT, import_keycodes.CTRL]
|
|
124
|
+
};
|
|
125
|
+
async function pressKeys(key, { times, ...pressOptions } = {}) {
|
|
126
|
+
const hasNaturalTabNavigation = await getHasNaturalTabNavigation(
|
|
127
|
+
this.page
|
|
128
|
+
);
|
|
129
|
+
let command;
|
|
130
|
+
if (key.toLowerCase() === "primary+c") {
|
|
131
|
+
command = () => emulateClipboard(this.page, "copy");
|
|
132
|
+
} else if (key.toLowerCase() === "primary+x") {
|
|
133
|
+
command = () => emulateClipboard(this.page, "cut");
|
|
134
|
+
} else if (key.toLowerCase() === "primary+v") {
|
|
135
|
+
command = () => emulateClipboard(this.page, "paste");
|
|
136
|
+
} else {
|
|
137
|
+
const keys = key.split("+").flatMap((keyCode) => {
|
|
138
|
+
if (Object.prototype.hasOwnProperty.call(modifiers, keyCode)) {
|
|
139
|
+
return modifiers[keyCode](
|
|
140
|
+
isAppleOS
|
|
141
|
+
).map(
|
|
142
|
+
(modifier) => modifier === import_keycodes.CTRL ? "Control" : (0, import_change_case.capitalCase)(modifier)
|
|
143
|
+
);
|
|
144
|
+
} else if (keyCode === "Tab" && !hasNaturalTabNavigation) {
|
|
145
|
+
return ["Alt", "Tab"];
|
|
146
|
+
}
|
|
147
|
+
return keyCode;
|
|
148
|
+
});
|
|
149
|
+
const normalizedKeys = keys.join("+");
|
|
150
|
+
command = () => this.page.keyboard.press(normalizedKeys);
|
|
151
|
+
}
|
|
152
|
+
times = times ?? 1;
|
|
153
|
+
for (let i = 0; i < times; i += 1) {
|
|
154
|
+
await command();
|
|
155
|
+
if (times > 1 && pressOptions.delay) {
|
|
156
|
+
await this.page.waitForTimeout(pressOptions.delay);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
161
|
+
0 && (module.exports = {
|
|
162
|
+
pressKeys,
|
|
163
|
+
setClipboardData
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=press-keys.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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,165 +1,142 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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");
|
|
10
|
+
let clipboardDataHolder = {
|
|
11
|
+
'text/plain': '',
|
|
12
|
+
'text/html': '',
|
|
13
|
+
'rich-text': '',
|
|
9
14
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(press_keys_exports);
|
|
27
|
-
var import_change_case = require("change-case");
|
|
28
|
-
var import_keycodes = require("./keycodes");
|
|
29
|
-
var clipboardDataHolder = {
|
|
30
|
-
"text/plain": "",
|
|
31
|
-
"text/html": "",
|
|
32
|
-
"rich-text": ""
|
|
33
|
-
};
|
|
34
|
-
function setClipboardData({ plainText = "", html = "" }) {
|
|
35
|
-
clipboardDataHolder = {
|
|
36
|
-
"text/plain": plainText,
|
|
37
|
-
"text/html": html,
|
|
38
|
-
"rich-text": ""
|
|
39
|
-
};
|
|
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
|
+
};
|
|
40
30
|
}
|
|
41
31
|
async function emulateClipboard(page, type) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const canvasDoc = (
|
|
32
|
+
const output = await page.evaluate(([_type, _clipboardData]) => {
|
|
33
|
+
const canvasDoc =
|
|
45
34
|
// @ts-ignore
|
|
46
|
-
document.activeElement?.contentDocument ?? document
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const range = selection.getRangeAt(0);
|
|
75
|
-
const fragment = range.cloneContents();
|
|
76
|
-
html = Array.from(fragment.childNodes).map(
|
|
77
|
-
(node) => node.outerHTML ?? node.nodeValue
|
|
78
|
-
).join("");
|
|
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);
|
|
79
63
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
await page.keyboard.type(clipboardDataHolder["text/plain"]);
|
|
100
|
-
}
|
|
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
|
+
}
|
|
101
83
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
84
|
+
const isAppleOS = () => process.platform === 'darwin';
|
|
85
|
+
const isWebkit = (page) => page.context().browser().browserType().name() === 'webkit';
|
|
86
|
+
const browserCache = new WeakMap();
|
|
87
|
+
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;
|
|
120
104
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
105
|
+
const modifiers = {
|
|
106
|
+
...keycodes_1.modifiers,
|
|
107
|
+
shiftAlt: (_isApple) => _isApple() ? [keycodes_1.SHIFT, keycodes_1.ALT] : [keycodes_1.SHIFT, keycodes_1.CTRL],
|
|
124
108
|
};
|
|
125
109
|
async function pressKeys(key, { times, ...pressOptions } = {}) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
await this.page.waitForTimeout(pressOptions.delay);
|
|
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
|
+
}
|
|
157
140
|
}
|
|
158
|
-
}
|
|
159
141
|
}
|
|
160
|
-
|
|
161
|
-
0 && (module.exports = {
|
|
162
|
-
pressKeys,
|
|
163
|
-
setClipboardData
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=press-keys.js.map
|
|
142
|
+
//# sourceMappingURL=press-keys.js.map
|
|
@@ -1,7 +1 @@
|
|
|
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": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAA4B;AAO5B,sBAA6D;AAE7D,IAAI,sBAIA;AAAA,EACH,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AACd;AAWO,SAAS,iBAEf,EAAE,YAAY,IAAI,OAAO,GAAG,GAC3B;AACD,wBAAsB;AAAA,IACrB,cAAc;AAAA,IACd,aAAa;AAAA,IACb,aAAa;AAAA,EACd;AACD;AAEA,eAAe,iBAAkB,MAAY,MAAiC;AAC7E,QAAM,SAAS,MAAM,KAAK;AAAA,IACzB,CAAE,CAAE,OAAO,cAAe,MAAO;AAChC,YAAM;AAAA;AAAA,QAEL,SAAS,eAAe,mBAAmB;AAAA;AAC5C,YAAM,QAAQ,IAAI,eAAgB,OAAO;AAAA,QACxC,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,eAAe,IAAI,aAAa;AAAA,MACjC,CAAE;AAEF,UAAK,CAAE,MAAM,eAAgB;AAC5B,cAAM,IAAI,MAAO,sCAAuC;AAAA,MACzD;AAEA,UAAK,UAAU,SAAU;AACxB,cAAM,cAAc;AAAA,UACnB;AAAA,UACA,eAAgB,YAAa;AAAA,QAC9B;AACA,cAAM,cAAc;AAAA,UACnB;AAAA,UACA,eAAgB,WAAY;AAAA,QAC7B;AACA,cAAM,cAAc;AAAA,UACnB;AAAA,UACA,eAAgB,WAAY;AAAA,QAC7B;AAAA,MACD,OAAO;AACN,cAAM,YAAY,UAAU,YAAY,aAAa;AACrD,cAAM,YAAY,UAAU,SAAS;AACrC,YAAI,OAAO;AACX,YAAK,UAAU,YAAa;AAC3B,gBAAM,QAAQ,UAAU,WAAY,CAAE;AACtC,gBAAM,WAAW,MAAM,cAAc;AACrC,iBAAO,MAAM,KAAM,SAAS,UAAW,EACrC;AAAA,YACA,CAAE,SACC,KAAkB,aAClB,KAAkB;AAAA,UACtB,EACC,KAAM,EAAG;AAAA,QACZ;AACA,cAAM,cAAc,QAAS,cAAc,SAAU;AACrD,cAAM,cAAc,QAAS,aAAa,IAAK;AAAA,MAChD;AAEA,gBAAU,cAAc,cAAe,KAAM;AAE7C,UAAK,UAAU,SAAU;AACxB,eAAO,MAAM;AAAA,MACd;AAEA,aAAO;AAAA,QACN,cAAc,MAAM,cAAc,QAAS,YAAa;AAAA,QACxD,aAAa,MAAM,cAAc,QAAS,WAAY;AAAA,QACtD,aAAa,MAAM,cAAc,QAAS,WAAY;AAAA,MACvD;AAAA,IACD;AAAA,IACA,CAAE,MAAM,mBAAoB;AAAA,EAC7B;AAEA,MAAK,OAAO,WAAW,UAAW;AACjC,0BAAsB;AAAA,EACvB;AAEA,MAAK,WAAW,OAAQ;AAIvB,UAAM,KAAK,SAAS,KAAM,oBAAqB,YAAa,CAAE;AAAA,EAC/D;AACD;AAEA,IAAM,YAAY,MAAM,QAAQ,aAAa;AAE7C,IAAM,WAAW,CAAE,SAClB,KAAK,QAAQ,EAAE,QAAQ,EAAG,YAAY,EAAE,KAAK,MAAM;AAEpD,IAAM,eAAe,oBAAI,QAAQ;AACjC,IAAM,6BAA6B,OAAQ,SAAgB;AAC1D,MAAK,CAAE,UAAU,KAAK,CAAE,SAAU,IAAK,GAAI;AAC1C,WAAO;AAAA,EACR;AACA,MAAK,aAAa,IAAK,KAAK,QAAQ,EAAE,QAAQ,CAAG,GAAI;AACpD,WAAO,aAAa,IAAK,KAAK,QAAQ,EAAE,QAAQ,CAAG;AAAA,EACpD;AACA,QAAM,WAAW,MAAM,KAAK,QAAQ,EAAE,QAAQ;AAC9C,QAAM,SAAS,WAAY,sCAAuC;AAClE,QAAM,SAAS,UAAW,GAAI,EAAE,MAAM;AACtC,QAAM,SAAS,SAAS,MAAO,KAAM;AACrC,QAAM,kBAAkB,MAAM,SAC5B,UAAW,GAAI,EACf,SAAU,CAAE,SAAU,SAAS,SAAS,aAAc;AACxD,eAAa,IAAK,KAAK,QAAQ,EAAE,QAAQ,GAAI,eAAgB;AAC7D,QAAM,SAAS,MAAM;AACrB,SAAO;AACR;AAOA,IAAM,YAAY;AAAA,EACjB,GAAG,gBAAAA;AAAA,EACH,UAAU,CAAE,aACX,SAAS,IAAI,CAAE,uBAAO,mBAAI,IAAI,CAAE,uBAAO,oBAAK;AAC9C;AAEA,eAAsB,UAErB,KACA,EAAE,OAAO,GAAG,aAAa,IAAa,CAAC,GACtC;AACD,QAAM,0BAA0B,MAAM;AAAA,IACrC,KAAK;AAAA,EACN;AAEA,MAAI;AAEJ,MAAK,IAAI,YAAY,MAAM,aAAc;AACxC,cAAU,MAAM,iBAAkB,KAAK,MAAM,MAAO;AAAA,EACrD,WAAY,IAAI,YAAY,MAAM,aAAc;AAC/C,cAAU,MAAM,iBAAkB,KAAK,MAAM,KAAM;AAAA,EACpD,WAAY,IAAI,YAAY,MAAM,aAAc;AAC/C,cAAU,MAAM,iBAAkB,KAAK,MAAM,OAAQ;AAAA,EACtD,OAAO;AACN,UAAM,OAAO,IAAI,MAAO,GAAI,EAAE,QAAS,CAAE,YAAa;AACrD,UAAK,OAAO,UAAU,eAAe,KAAM,WAAW,OAAQ,GAAI;AACjE,eAAO,UAAW,OAAkC;AAAA,UACnD;AAAA,QACD,EAAE;AAAA,UAAK,CAAE,aACR,aAAa,uBAAO,gBAAY,gCAAa,QAAS;AAAA,QACvD;AAAA,MACD,WAAY,YAAY,SAAS,CAAE,yBAA0B;AAC5D,eAAO,CAAE,OAAO,KAAM;AAAA,MACvB;AACA,aAAO;AAAA,IACR,CAAE;AACF,UAAM,iBAAiB,KAAK,KAAM,GAAI;AACtC,cAAU,MAAM,KAAK,KAAK,SAAS,MAAO,cAAe;AAAA,EAC1D;AAEA,UAAQ,SAAS;AACjB,WAAU,IAAI,GAAG,IAAI,OAAO,KAAK,GAAI;AACpC,UAAM,QAAQ;AAEd,QAAK,QAAQ,KAAK,aAAa,OAAQ;AACtC,YAAM,KAAK,KAAK,eAAgB,aAAa,KAAM;AAAA,IACpD;AAAA,EACD;AACD;",
|
|
6
|
-
"names": ["baseModifiers"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"press-keys.js","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":"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"}
|