@wordpress/e2e-test-utils-playwright 1.45.1-next.v.202605131032.0 → 1.47.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/index.js +3 -0
- package/build/admin/index.js.map +1 -1
- package/build/admin/visit-site-editor.js +1 -29
- package/build/admin/visit-site-editor.js.map +1 -1
- package/build/admin/wait-for-site-editor.js +41 -0
- package/build/admin/wait-for-site-editor.js.map +1 -0
- package/build/metrics/index.js +59 -3
- package/build/metrics/index.js.map +1 -1
- package/build/request-utils/index.js +2 -0
- package/build/request-utils/index.js.map +1 -1
- package/build/request-utils/preferences.js +34 -0
- package/build/request-utils/preferences.js.map +1 -1
- package/build-types/admin/index.d.ts +3 -0
- package/build-types/admin/index.d.ts.map +1 -1
- package/build-types/admin/visit-site-editor.d.ts.map +1 -1
- package/build-types/admin/wait-for-site-editor.d.ts +12 -0
- package/build-types/admin/wait-for-site-editor.d.ts.map +1 -0
- package/build-types/metrics/index.d.ts +22 -5
- package/build-types/metrics/index.d.ts.map +1 -1
- package/build-types/request-utils/index.d.ts +3 -1
- package/build-types/request-utils/index.d.ts.map +1 -1
- package/build-types/request-utils/preferences.d.ts +11 -0
- package/build-types/request-utils/preferences.d.ts.map +1 -1
- package/package.json +3 -4
- package/build/admin/create-new-post.cjs +0 -51
- package/build/admin/create-new-post.cjs.map +0 -7
- package/build/admin/edit-post.cjs +0 -40
- package/build/admin/edit-post.cjs.map +0 -7
- package/build/admin/get-page-error.cjs +0 -36
- package/build/admin/get-page-error.cjs.map +0 -7
- package/build/admin/index.cjs +0 -59
- package/build/admin/index.cjs.map +0 -7
- package/build/admin/visit-admin-page.cjs +0 -47
- package/build/admin/visit-admin-page.cjs.map +0 -7
- package/build/admin/visit-site-editor.cjs +0 -90
- package/build/admin/visit-site-editor.cjs.map +0 -7
- package/build/config.cjs +0 -45
- package/build/config.cjs.map +0 -7
- package/build/editor/click-block-options-menu-item.cjs +0 -34
- package/build/editor/click-block-options-menu-item.cjs.map +0 -7
- package/build/editor/click-block-toolbar-button.cjs +0 -38
- package/build/editor/click-block-toolbar-button.cjs.map +0 -7
- package/build/editor/get-blocks.cjs +0 -64
- package/build/editor/get-blocks.cjs.map +0 -7
- package/build/editor/get-edited-post-content.cjs +0 -36
- package/build/editor/get-edited-post-content.cjs.map +0 -7
- package/build/editor/index.cjs +0 -97
- package/build/editor/index.cjs.map +0 -7
- package/build/editor/insert-block.cjs +0 -55
- package/build/editor/insert-block.cjs.map +0 -7
- package/build/editor/open-document-settings-sidebar.cjs +0 -42
- package/build/editor/open-document-settings-sidebar.cjs.map +0 -7
- package/build/editor/preview.cjs +0 -42
- package/build/editor/preview.cjs.map +0 -7
- package/build/editor/publish-post.cjs +0 -47
- package/build/editor/publish-post.cjs.map +0 -7
- package/build/editor/save-draft.cjs +0 -34
- package/build/editor/save-draft.cjs.map +0 -7
- package/build/editor/select-blocks.cjs +0 -51
- package/build/editor/select-blocks.cjs.map +0 -7
- package/build/editor/set-content.cjs +0 -39
- package/build/editor/set-content.cjs.map +0 -7
- package/build/editor/set-is-fixed-toolbar.cjs +0 -36
- package/build/editor/set-is-fixed-toolbar.cjs.map +0 -7
- package/build/editor/set-preferences.cjs +0 -43
- package/build/editor/set-preferences.cjs.map +0 -7
- package/build/editor/show-block-toolbar.cjs +0 -35
- package/build/editor/show-block-toolbar.cjs.map +0 -7
- package/build/editor/site-editor.cjs +0 -51
- package/build/editor/site-editor.cjs.map +0 -7
- package/build/editor/switch-editor-tool.cjs +0 -47
- package/build/editor/switch-editor-tool.cjs.map +0 -7
- package/build/editor/switch-to-legacy-canvas.cjs +0 -39
- package/build/editor/switch-to-legacy-canvas.cjs.map +0 -7
- package/build/editor/transform-block-to.cjs +0 -46
- package/build/editor/transform-block-to.cjs.map +0 -7
- package/build/index.cjs +0 -51
- package/build/index.cjs.map +0 -7
- package/build/lighthouse/index.cjs +0 -96
- package/build/lighthouse/index.cjs.map +0 -7
- package/build/metrics/index.cjs +0 -309
- package/build/metrics/index.cjs.map +0 -7
- package/build/page-utils/drag-files.cjs +0 -143
- package/build/page-utils/drag-files.cjs.map +0 -7
- package/build/page-utils/emulate-network-conditions.cjs +0 -99
- package/build/page-utils/emulate-network-conditions.cjs.map +0 -7
- package/build/page-utils/index.cjs +0 -59
- package/build/page-utils/index.cjs.map +0 -7
- package/build/page-utils/is-current-url.cjs +0 -36
- package/build/page-utils/is-current-url.cjs.map +0 -7
- package/build/page-utils/keycodes.cjs +0 -55
- package/build/page-utils/keycodes.cjs.map +0 -7
- package/build/page-utils/press-keys.cjs +0 -165
- package/build/page-utils/press-keys.cjs.map +0 -7
- package/build/page-utils/set-browser-viewport.cjs +0 -39
- package/build/page-utils/set-browser-viewport.cjs.map +0 -7
- package/build/request-utils/blocks.cjs +0 -51
- package/build/request-utils/blocks.cjs.map +0 -7
- package/build/request-utils/comments.cjs +0 -66
- package/build/request-utils/comments.cjs.map +0 -7
- package/build/request-utils/gutenberg-experiments.cjs +0 -56
- package/build/request-utils/gutenberg-experiments.cjs.map +0 -7
- package/build/request-utils/index.cjs +0 -199
- package/build/request-utils/index.cjs.map +0 -7
- package/build/request-utils/login.cjs +0 -48
- package/build/request-utils/login.cjs.map +0 -7
- package/build/request-utils/media.cjs +0 -83
- package/build/request-utils/media.cjs.map +0 -7
- package/build/request-utils/menus.cjs +0 -128
- package/build/request-utils/menus.cjs.map +0 -7
- package/build/request-utils/pages.cjs +0 -66
- package/build/request-utils/pages.cjs.map +0 -7
- package/build/request-utils/patterns.cjs +0 -44
- package/build/request-utils/patterns.cjs.map +0 -7
- package/build/request-utils/plugins.cjs +0 -81
- package/build/request-utils/plugins.cjs.map +0 -7
- package/build/request-utils/posts.cjs +0 -56
- package/build/request-utils/posts.cjs.map +0 -7
- package/build/request-utils/preferences.cjs +0 -41
- package/build/request-utils/preferences.cjs.map +0 -7
- package/build/request-utils/records.cjs +0 -37
- package/build/request-utils/records.cjs.map +0 -7
- package/build/request-utils/rest.cjs +0 -174
- package/build/request-utils/rest.cjs.map +0 -7
- package/build/request-utils/site-settings.cjs +0 -45
- package/build/request-utils/site-settings.cjs.map +0 -7
- package/build/request-utils/templates.cjs +0 -68
- package/build/request-utils/templates.cjs.map +0 -7
- package/build/request-utils/themes.cjs +0 -92
- package/build/request-utils/themes.cjs.map +0 -7
- package/build/request-utils/users.cjs +0 -83
- package/build/request-utils/users.cjs.map +0 -7
- package/build/request-utils/widgets.cjs +0 -79
- package/build/request-utils/widgets.cjs.map +0 -7
- package/build/test.cjs +0 -136
- package/build/test.cjs.map +0 -7
- package/build/types.cjs +0 -19
- package/build/types.cjs.map +0 -7
|
@@ -1,92 +0,0 @@
|
|
|
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/request-utils/themes.ts
|
|
21
|
-
var themes_exports = {};
|
|
22
|
-
__export(themes_exports, {
|
|
23
|
-
activateTheme: () => activateTheme,
|
|
24
|
-
getCurrentThemeGlobalStylesPostId: () => getCurrentThemeGlobalStylesPostId,
|
|
25
|
-
getThemeGlobalStylesRevisions: () => getThemeGlobalStylesRevisions
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(themes_exports);
|
|
28
|
-
var import_config = require("../config.cjs");
|
|
29
|
-
var THEMES_URL = new URL("wp-admin/themes.php", import_config.WP_BASE_URL).href;
|
|
30
|
-
async function activateTheme(themeSlug) {
|
|
31
|
-
let response = await this.request.get(THEMES_URL);
|
|
32
|
-
const html = await response.text();
|
|
33
|
-
const optionalFolder = "([a-z0-9-]+%2F)?";
|
|
34
|
-
let matchGroup = html.match(
|
|
35
|
-
`action=activate&stylesheet=${encodeURIComponent(
|
|
36
|
-
themeSlug
|
|
37
|
-
)}&_wpnonce=[a-z0-9]+`
|
|
38
|
-
);
|
|
39
|
-
if (!matchGroup) {
|
|
40
|
-
matchGroup = html.match(
|
|
41
|
-
`action=activate&stylesheet=${optionalFolder}${encodeURIComponent(
|
|
42
|
-
themeSlug
|
|
43
|
-
)}&_wpnonce=[a-z0-9]+`
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
if (!matchGroup) {
|
|
47
|
-
if (html.includes(`data-slug="${themeSlug}"`)) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
throw new Error(`The theme "${themeSlug}" is not installed`);
|
|
51
|
-
}
|
|
52
|
-
const [activateQuery] = matchGroup;
|
|
53
|
-
const activateLink = THEMES_URL + `?${activateQuery}`.replace(/&/g, "&");
|
|
54
|
-
response = await this.request.get(activateLink);
|
|
55
|
-
await response.dispose();
|
|
56
|
-
}
|
|
57
|
-
async function getCurrentThemeGlobalStylesPostId() {
|
|
58
|
-
const themes = await this.rest({
|
|
59
|
-
path: "/wp/v2/themes"
|
|
60
|
-
});
|
|
61
|
-
let themeGlobalStylesId = "";
|
|
62
|
-
if (themes && themes.length) {
|
|
63
|
-
const currentTheme = themes.find(
|
|
64
|
-
({ status }) => status === "active"
|
|
65
|
-
);
|
|
66
|
-
const globalStylesURL = currentTheme?._links?.["wp:user-global-styles"]?.[0]?.href;
|
|
67
|
-
if (globalStylesURL) {
|
|
68
|
-
const idMatch = globalStylesURL.match(
|
|
69
|
-
/\/wp\/v2\/global-styles\/(\d+)/
|
|
70
|
-
);
|
|
71
|
-
if (idMatch) {
|
|
72
|
-
themeGlobalStylesId = idMatch[1];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return themeGlobalStylesId;
|
|
77
|
-
}
|
|
78
|
-
async function getThemeGlobalStylesRevisions(parentId) {
|
|
79
|
-
return await this.rest({
|
|
80
|
-
path: `/wp/v2/global-styles/${parentId}/revisions`,
|
|
81
|
-
params: {
|
|
82
|
-
per_page: 100
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
-
0 && (module.exports = {
|
|
88
|
-
activateTheme,
|
|
89
|
-
getCurrentThemeGlobalStylesPostId,
|
|
90
|
-
getThemeGlobalStylesRevisions
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=themes.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/request-utils/themes.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { RequestUtils } from './index';\nimport { WP_BASE_URL } from '../config';\n\nconst THEMES_URL = new URL( 'wp-admin/themes.php', WP_BASE_URL ).href;\n\nasync function activateTheme(\n\tthis: RequestUtils,\n\tthemeSlug: string\n): Promise< void > {\n\tlet response = await this.request.get( THEMES_URL );\n\tconst html = await response.text();\n\tconst optionalFolder = '([a-z0-9-]+%2F)?';\n\n\t// The `optionalFolder` regex part matches paths with a folder,\n\t// so it will return the first match, which might contain a folder.\n\t// First try to honor the included theme slug, that is, without a folder.\n\tlet matchGroup = html.match(\n\t\t`action=activate&stylesheet=${ encodeURIComponent(\n\t\t\tthemeSlug\n\t\t) }&_wpnonce=[a-z0-9]+`\n\t);\n\n\t// If the theme is not found, try to match the theme slug with a folder.\n\tif ( ! matchGroup ) {\n\t\tmatchGroup = html.match(\n\t\t\t`action=activate&stylesheet=${ optionalFolder }${ encodeURIComponent(\n\t\t\t\tthemeSlug\n\t\t\t) }&_wpnonce=[a-z0-9]+`\n\t\t);\n\t}\n\n\tif ( ! matchGroup ) {\n\t\tif ( html.includes( `data-slug=\"${ themeSlug }\"` ) ) {\n\t\t\t// The theme is already activated.\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error( `The theme \"${ themeSlug }\" is not installed` );\n\t}\n\n\tconst [ activateQuery ] = matchGroup;\n\tconst activateLink =\n\t\tTHEMES_URL + `?${ activateQuery }`.replace( /&/g, '&' );\n\n\tresponse = await this.request.get( activateLink );\n\n\tawait response.dispose();\n}\n\n// https://developer.wordpress.org/rest-api/reference/themes/#definition\nasync function getCurrentThemeGlobalStylesPostId( this: RequestUtils ) {\n\ttype ThemeItem = {\n\t\tstylesheet: string;\n\t\tstatus: string;\n\t\t_links: { 'wp:user-global-styles': { href: string }[] };\n\t};\n\tconst themes = await this.rest< ThemeItem[] >( {\n\t\tpath: '/wp/v2/themes',\n\t} );\n\tlet themeGlobalStylesId: string = '';\n\tif ( themes && themes.length ) {\n\t\tconst currentTheme: ThemeItem | undefined = themes.find(\n\t\t\t( { status } ) => status === 'active'\n\t\t);\n\n\t\tconst globalStylesURL =\n\t\t\tcurrentTheme?._links?.[ 'wp:user-global-styles' ]?.[ 0 ]?.href;\n\t\tif ( globalStylesURL ) {\n\t\t\t// Extract the ID from the URL. The URL format depends on\n\t\t\t// the permalink structure:\n\t\t\t// - Plain: ?rest_route=/wp/v2/global-styles/123\n\t\t\t// - Pretty: /wp-json/wp/v2/global-styles/123\n\t\t\tconst idMatch = globalStylesURL.match(\n\t\t\t\t/\\/wp\\/v2\\/global-styles\\/(\\d+)/\n\t\t\t);\n\t\t\tif ( idMatch ) {\n\t\t\t\tthemeGlobalStylesId = idMatch[ 1 ];\n\t\t\t}\n\t\t}\n\t}\n\treturn themeGlobalStylesId;\n}\n\n/**\n * Deletes all post revisions using the REST API.\n *\n * @param {} this RequestUtils.\n * @param {string|number} parentId Post attributes.\n */\nasync function getThemeGlobalStylesRevisions(\n\tthis: RequestUtils,\n\tparentId: number | string\n) {\n\t// Lists all global styles revisions.\n\treturn await this.rest< Record< string, Object >[] >( {\n\t\tpath: `/wp/v2/global-styles/${ parentId }/revisions`,\n\t\tparams: {\n\t\t\tper_page: 100,\n\t\t},\n\t} );\n}\n\nexport {\n\tactivateTheme,\n\tgetCurrentThemeGlobalStylesPostId,\n\tgetThemeGlobalStylesRevisions,\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAA4B;AAE5B,IAAM,aAAa,IAAI,IAAK,uBAAuB,yBAAY,EAAE;AAEjE,eAAe,cAEd,WACkB;AAClB,MAAI,WAAW,MAAM,KAAK,QAAQ,IAAK,UAAW;AAClD,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,QAAM,iBAAiB;AAKvB,MAAI,aAAa,KAAK;AAAA,IACrB,kCAAmC;AAAA,MAClC;AAAA,IACD,CAAE;AAAA,EACH;AAGA,MAAK,CAAE,YAAa;AACnB,iBAAa,KAAK;AAAA,MACjB,kCAAmC,cAAe,GAAI;AAAA,QACrD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD;AAEA,MAAK,CAAE,YAAa;AACnB,QAAK,KAAK,SAAU,cAAe,SAAU,GAAI,GAAI;AAEpD;AAAA,IACD;AAEA,UAAM,IAAI,MAAO,cAAe,SAAU,oBAAqB;AAAA,EAChE;AAEA,QAAM,CAAE,aAAc,IAAI;AAC1B,QAAM,eACL,aAAa,IAAK,aAAc,GAAG,QAAS,UAAU,GAAI;AAE3D,aAAW,MAAM,KAAK,QAAQ,IAAK,YAAa;AAEhD,QAAM,SAAS,QAAQ;AACxB;AAGA,eAAe,oCAAwD;AAMtE,QAAM,SAAS,MAAM,KAAK,KAAqB;AAAA,IAC9C,MAAM;AAAA,EACP,CAAE;AACF,MAAI,sBAA8B;AAClC,MAAK,UAAU,OAAO,QAAS;AAC9B,UAAM,eAAsC,OAAO;AAAA,MAClD,CAAE,EAAE,OAAO,MAAO,WAAW;AAAA,IAC9B;AAEA,UAAM,kBACL,cAAc,SAAU,uBAAwB,IAAK,CAAE,GAAG;AAC3D,QAAK,iBAAkB;AAKtB,YAAM,UAAU,gBAAgB;AAAA,QAC/B;AAAA,MACD;AACA,UAAK,SAAU;AACd,8BAAsB,QAAS,CAAE;AAAA,MAClC;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAQA,eAAe,8BAEd,UACC;AAED,SAAO,MAAM,KAAK,KAAoC;AAAA,IACrD,MAAM,wBAAyB,QAAS;AAAA,IACxC,QAAQ;AAAA,MACP,UAAU;AAAA,IACX;AAAA,EACD,CAAE;AACH;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
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/request-utils/users.ts
|
|
21
|
-
var users_exports = {};
|
|
22
|
-
__export(users_exports, {
|
|
23
|
-
createUser: () => createUser,
|
|
24
|
-
deleteAllUsers: () => deleteAllUsers
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(users_exports);
|
|
27
|
-
async function listUsers() {
|
|
28
|
-
const response = await this.rest({
|
|
29
|
-
method: "GET",
|
|
30
|
-
path: "/wp/v2/users",
|
|
31
|
-
params: {
|
|
32
|
-
per_page: 100
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return response;
|
|
36
|
-
}
|
|
37
|
-
async function createUser(user) {
|
|
38
|
-
const userData = {
|
|
39
|
-
username: user.username,
|
|
40
|
-
email: user.email
|
|
41
|
-
};
|
|
42
|
-
if (user.firstName) {
|
|
43
|
-
userData.first_name = user.firstName;
|
|
44
|
-
}
|
|
45
|
-
if (user.lastName) {
|
|
46
|
-
userData.last_name = user.lastName;
|
|
47
|
-
}
|
|
48
|
-
if (user.password) {
|
|
49
|
-
userData.password = user.password;
|
|
50
|
-
}
|
|
51
|
-
if (user.roles) {
|
|
52
|
-
userData.roles = user.roles;
|
|
53
|
-
}
|
|
54
|
-
const response = await this.rest({
|
|
55
|
-
method: "POST",
|
|
56
|
-
path: "/wp/v2/users",
|
|
57
|
-
data: userData
|
|
58
|
-
});
|
|
59
|
-
return response;
|
|
60
|
-
}
|
|
61
|
-
async function deleteUser(userId) {
|
|
62
|
-
const response = await this.rest({
|
|
63
|
-
method: "DELETE",
|
|
64
|
-
path: `/wp/v2/users/${userId}`,
|
|
65
|
-
params: { force: true, reassign: 1 }
|
|
66
|
-
});
|
|
67
|
-
return response;
|
|
68
|
-
}
|
|
69
|
-
async function deleteAllUsers() {
|
|
70
|
-
const users = await listUsers.bind(this)();
|
|
71
|
-
const responses = await Promise.all(
|
|
72
|
-
users.filter(
|
|
73
|
-
(user) => user.id !== 1 && user.name !== this.user.username
|
|
74
|
-
).map((user) => deleteUser.bind(this)(user.id))
|
|
75
|
-
);
|
|
76
|
-
return responses;
|
|
77
|
-
}
|
|
78
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
-
0 && (module.exports = {
|
|
80
|
-
createUser,
|
|
81
|
-
deleteAllUsers
|
|
82
|
-
});
|
|
83
|
-
//# sourceMappingURL=users.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/request-utils/users.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { RequestUtils } from './index';\n\nexport interface User {\n\tid: number;\n\tname: string;\n\temail: string;\n}\n\nexport interface UserData {\n\tusername: string;\n\temail: string;\n\tfirstName?: string;\n\tlastName?: string;\n\tpassword?: string;\n\troles?: string[];\n}\n\nexport interface UserRequestData {\n\tusername: string;\n\temail: string;\n\tfirst_name?: string;\n\tlast_name?: string;\n\tpassword?: string;\n\troles?: string[];\n}\n\n/**\n * List all users.\n *\n * @see https://developer.wordpress.org/rest-api/reference/users/#list-users\n * @param this\n */\nasync function listUsers( this: RequestUtils ) {\n\tconst response = await this.rest< User[] >( {\n\t\tmethod: 'GET',\n\t\tpath: '/wp/v2/users',\n\t\tparams: {\n\t\t\tper_page: 100,\n\t\t},\n\t} );\n\n\treturn response;\n}\n\n/**\n * Add a test user.\n *\n * @see https://developer.wordpress.org/rest-api/reference/users/#create-a-user\n * @param this\n * @param user User data to create.\n */\nasync function createUser( this: RequestUtils, user: UserData ) {\n\tconst userData: UserRequestData = {\n\t\tusername: user.username,\n\t\temail: user.email,\n\t};\n\n\tif ( user.firstName ) {\n\t\tuserData.first_name = user.firstName;\n\t}\n\n\tif ( user.lastName ) {\n\t\tuserData.last_name = user.lastName;\n\t}\n\n\tif ( user.password ) {\n\t\tuserData.password = user.password;\n\t}\n\n\tif ( user.roles ) {\n\t\tuserData.roles = user.roles;\n\t}\n\n\tconst response = await this.rest< User >( {\n\t\tmethod: 'POST',\n\t\tpath: '/wp/v2/users',\n\t\tdata: userData,\n\t} );\n\n\treturn response;\n}\n\n/**\n * Delete a user.\n *\n * @see https://developer.wordpress.org/rest-api/reference/users/#delete-a-user\n * @param this\n * @param userId The ID of the user.\n */\nasync function deleteUser( this: RequestUtils, userId: number ) {\n\tconst response = await this.rest( {\n\t\tmethod: 'DELETE',\n\t\tpath: `/wp/v2/users/${ userId }`,\n\t\tparams: { force: true, reassign: 1 },\n\t} );\n\n\treturn response;\n}\n\n/**\n * Delete all users except main root user.\n *\n * @param this\n */\nasync function deleteAllUsers( this: RequestUtils ) {\n\tconst users = await listUsers.bind( this )();\n\n\t// The users endpoint doesn't support batch request yet.\n\tconst responses = await Promise.all(\n\t\tusers\n\t\t\t// Do not delete neither root user nor the current user.\n\t\t\t.filter(\n\t\t\t\t( user: User ) =>\n\t\t\t\t\tuser.id !== 1 && user.name !== this.user.username\n\t\t\t)\n\t\t\t.map( ( user: User ) => deleteUser.bind( this )( user.id ) )\n\t);\n\n\treturn responses;\n}\n\nexport { createUser, deleteAllUsers };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCA,eAAe,YAAgC;AAC9C,QAAM,WAAW,MAAM,KAAK,KAAgB;AAAA,IAC3C,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,MACP,UAAU;AAAA,IACX;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AASA,eAAe,WAAgC,MAAiB;AAC/D,QAAM,WAA4B;AAAA,IACjC,UAAU,KAAK;AAAA,IACf,OAAO,KAAK;AAAA,EACb;AAEA,MAAK,KAAK,WAAY;AACrB,aAAS,aAAa,KAAK;AAAA,EAC5B;AAEA,MAAK,KAAK,UAAW;AACpB,aAAS,YAAY,KAAK;AAAA,EAC3B;AAEA,MAAK,KAAK,UAAW;AACpB,aAAS,WAAW,KAAK;AAAA,EAC1B;AAEA,MAAK,KAAK,OAAQ;AACjB,aAAS,QAAQ,KAAK;AAAA,EACvB;AAEA,QAAM,WAAW,MAAM,KAAK,KAAc;AAAA,IACzC,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACP,CAAE;AAEF,SAAO;AACR;AASA,eAAe,WAAgC,QAAiB;AAC/D,QAAM,WAAW,MAAM,KAAK,KAAM;AAAA,IACjC,QAAQ;AAAA,IACR,MAAM,gBAAiB,MAAO;AAAA,IAC9B,QAAQ,EAAE,OAAO,MAAM,UAAU,EAAE;AAAA,EACpC,CAAE;AAEF,SAAO;AACR;AAOA,eAAe,iBAAqC;AACnD,QAAM,QAAQ,MAAM,UAAU,KAAM,IAAK,EAAE;AAG3C,QAAM,YAAY,MAAM,QAAQ;AAAA,IAC/B,MAEE;AAAA,MACA,CAAE,SACD,KAAK,OAAO,KAAK,KAAK,SAAS,KAAK,KAAK;AAAA,IAC3C,EACC,IAAK,CAAE,SAAgB,WAAW,KAAM,IAAK,EAAG,KAAK,EAAG,CAAE;AAAA,EAC7D;AAEA,SAAO;AACR;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
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/request-utils/widgets.js
|
|
21
|
-
var widgets_exports = {};
|
|
22
|
-
__export(widgets_exports, {
|
|
23
|
-
addWidgetBlock: () => addWidgetBlock,
|
|
24
|
-
deleteAllWidgets: () => deleteAllWidgets
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(widgets_exports);
|
|
27
|
-
async function deleteAllWidgets() {
|
|
28
|
-
const [widgets, sidebars] = await Promise.all([
|
|
29
|
-
this.rest({ path: "/wp/v2/widgets" }),
|
|
30
|
-
this.rest({ path: "/wp/v2/sidebars" })
|
|
31
|
-
]);
|
|
32
|
-
await this.batchRest(
|
|
33
|
-
widgets.map((widget) => ({
|
|
34
|
-
method: "DELETE",
|
|
35
|
-
path: `/wp/v2/widgets/${widget.id}?force=true`
|
|
36
|
-
}))
|
|
37
|
-
);
|
|
38
|
-
await Promise.all(
|
|
39
|
-
sidebars.map(
|
|
40
|
-
(sidebar) => this.rest({
|
|
41
|
-
method: "POST",
|
|
42
|
-
path: `/wp/v2/sidebars/${sidebar.id}`,
|
|
43
|
-
data: { id: sidebar.id, widgets: [] }
|
|
44
|
-
})
|
|
45
|
-
)
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
async function addWidgetBlock(serializedBlock, widgetAreaId) {
|
|
49
|
-
const { id: blockId } = await this.rest({
|
|
50
|
-
method: "POST",
|
|
51
|
-
path: "/wp/v2/widgets",
|
|
52
|
-
data: {
|
|
53
|
-
id_base: "block",
|
|
54
|
-
sidebar: widgetAreaId,
|
|
55
|
-
instance: {
|
|
56
|
-
raw: { content: serializedBlock }
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
const { widgets } = await this.rest({
|
|
61
|
-
path: `/wp/v2/sidebars/${widgetAreaId}`
|
|
62
|
-
});
|
|
63
|
-
const updatedWidgets = new Set(widgets);
|
|
64
|
-
updatedWidgets.delete(blockId);
|
|
65
|
-
updatedWidgets.add(blockId);
|
|
66
|
-
await this.rest({
|
|
67
|
-
method: "PUT",
|
|
68
|
-
path: `/wp/v2/sidebars/${widgetAreaId}`,
|
|
69
|
-
data: {
|
|
70
|
-
widgets: [...updatedWidgets]
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
-
0 && (module.exports = {
|
|
76
|
-
addWidgetBlock,
|
|
77
|
-
deleteAllWidgets
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=widgets.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/request-utils/widgets.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Delete all the widgets in the widgets screen.\n *\n * @this {import('./index').RequestUtils}\n */\nexport async function deleteAllWidgets() {\n\tconst [ widgets, sidebars ] = await Promise.all( [\n\t\tthis.rest( { path: '/wp/v2/widgets' } ),\n\t\tthis.rest( { path: '/wp/v2/sidebars' } ),\n\t] );\n\n\tawait this.batchRest(\n\t\twidgets.map( ( widget ) => ( {\n\t\t\tmethod: 'DELETE',\n\t\t\tpath: `/wp/v2/widgets/${ widget.id }?force=true`,\n\t\t} ) )\n\t);\n\n\t// The endpoint doesn't support batch requests yet.\n\tawait Promise.all(\n\t\tsidebars.map( ( sidebar ) =>\n\t\t\tthis.rest( {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tpath: `/wp/v2/sidebars/${ sidebar.id }`,\n\t\t\t\tdata: { id: sidebar.id, widgets: [] },\n\t\t\t} )\n\t\t)\n\t);\n}\n\n/**\n * Add a widget block to the widget area.\n *\n * @this {import('./index').RequestUtils}\n * @param {string} serializedBlock The serialized content of the inserted block HTML.\n * @param {string} widgetAreaId The ID of the widget area.\n */\nexport async function addWidgetBlock( serializedBlock, widgetAreaId ) {\n\tconst { id: blockId } = await this.rest( {\n\t\tmethod: 'POST',\n\t\tpath: '/wp/v2/widgets',\n\t\tdata: {\n\t\t\tid_base: 'block',\n\t\t\tsidebar: widgetAreaId,\n\t\t\tinstance: {\n\t\t\t\traw: { content: serializedBlock },\n\t\t\t},\n\t\t},\n\t} );\n\n\tconst { widgets } = await this.rest( {\n\t\tpath: `/wp/v2/sidebars/${ widgetAreaId }`,\n\t} );\n\n\tconst updatedWidgets = new Set( widgets );\n\t// Remove duplicate.\n\tupdatedWidgets.delete( blockId );\n\t// Add to last block.\n\tupdatedWidgets.add( blockId );\n\n\tawait this.rest( {\n\t\tmethod: 'PUT',\n\t\tpath: `/wp/v2/sidebars/${ widgetAreaId }`,\n\t\tdata: {\n\t\t\twidgets: [ ...updatedWidgets ],\n\t\t},\n\t} );\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,eAAsB,mBAAmB;AACxC,QAAM,CAAE,SAAS,QAAS,IAAI,MAAM,QAAQ,IAAK;AAAA,IAChD,KAAK,KAAM,EAAE,MAAM,iBAAiB,CAAE;AAAA,IACtC,KAAK,KAAM,EAAE,MAAM,kBAAkB,CAAE;AAAA,EACxC,CAAE;AAEF,QAAM,KAAK;AAAA,IACV,QAAQ,IAAK,CAAE,YAAc;AAAA,MAC5B,QAAQ;AAAA,MACR,MAAM,kBAAmB,OAAO,EAAG;AAAA,IACpC,EAAI;AAAA,EACL;AAGA,QAAM,QAAQ;AAAA,IACb,SAAS;AAAA,MAAK,CAAE,YACf,KAAK,KAAM;AAAA,QACV,QAAQ;AAAA,QACR,MAAM,mBAAoB,QAAQ,EAAG;AAAA,QACrC,MAAM,EAAE,IAAI,QAAQ,IAAI,SAAS,CAAC,EAAE;AAAA,MACrC,CAAE;AAAA,IACH;AAAA,EACD;AACD;AASA,eAAsB,eAAgB,iBAAiB,cAAe;AACrE,QAAM,EAAE,IAAI,QAAQ,IAAI,MAAM,KAAK,KAAM;AAAA,IACxC,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,UAAU;AAAA,QACT,KAAK,EAAE,SAAS,gBAAgB;AAAA,MACjC;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,EAAE,QAAQ,IAAI,MAAM,KAAK,KAAM;AAAA,IACpC,MAAM,mBAAoB,YAAa;AAAA,EACxC,CAAE;AAEF,QAAM,iBAAiB,IAAI,IAAK,OAAQ;AAExC,iBAAe,OAAQ,OAAQ;AAE/B,iBAAe,IAAK,OAAQ;AAE5B,QAAM,KAAK,KAAM;AAAA,IAChB,QAAQ;AAAA,IACR,MAAM,mBAAoB,YAAa;AAAA,IACvC,MAAM;AAAA,MACL,SAAS,CAAE,GAAG,cAAe;AAAA,IAC9B;AAAA,EACD,CAAE;AACH;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/build/test.cjs
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// packages/e2e-test-utils-playwright/src/test.ts
|
|
31
|
-
var test_exports = {};
|
|
32
|
-
__export(test_exports, {
|
|
33
|
-
expect: () => import_test.expect,
|
|
34
|
-
test: () => test
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(test_exports);
|
|
37
|
-
var path = __toESM(require("path"));
|
|
38
|
-
var import_test = require("@playwright/test");
|
|
39
|
-
var import_get_port = __toESM(require("get-port"));
|
|
40
|
-
var import_index = require("./index.cjs");
|
|
41
|
-
var STORAGE_STATE_PATH = process.env.STORAGE_STATE_PATH || path.join(process.cwd(), "artifacts/storage-states/admin.json");
|
|
42
|
-
var OBSERVED_CONSOLE_MESSAGE_TYPES = ["warn", "error"];
|
|
43
|
-
function observeConsoleLogging(message) {
|
|
44
|
-
const type = message.type();
|
|
45
|
-
if (!OBSERVED_CONSOLE_MESSAGE_TYPES.includes(
|
|
46
|
-
type
|
|
47
|
-
)) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const text = message.text();
|
|
51
|
-
if (text.includes("This is a global warning")) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (text.includes("A cookie associated with a cross-site resource") || text.includes(
|
|
55
|
-
"https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite"
|
|
56
|
-
)) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (text.includes("net::ERR_UNKNOWN_URL_SCHEME")) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (text.includes("elements with non-unique id #_wpnonce")) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (text.includes("JQMIGRATE")) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (text.includes("Layout was forced before the page was fully loaded")) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (text.includes("MouseEvent.moz")) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const logFunction = type;
|
|
75
|
-
console[logFunction](text);
|
|
76
|
-
}
|
|
77
|
-
var test = import_test.test.extend({
|
|
78
|
-
admin: async ({ page, pageUtils, editor }, use) => {
|
|
79
|
-
await use(new import_index.Admin({ page, pageUtils, editor }));
|
|
80
|
-
},
|
|
81
|
-
editor: async ({ page }, use) => {
|
|
82
|
-
await use(new import_index.Editor({ page }));
|
|
83
|
-
},
|
|
84
|
-
page: async ({ page }, use) => {
|
|
85
|
-
page.on("console", observeConsoleLogging);
|
|
86
|
-
await use(page);
|
|
87
|
-
try {
|
|
88
|
-
await page.evaluate(() => {
|
|
89
|
-
window.localStorage.clear();
|
|
90
|
-
});
|
|
91
|
-
} catch {
|
|
92
|
-
}
|
|
93
|
-
await page.close();
|
|
94
|
-
},
|
|
95
|
-
pageUtils: async ({ page, browserName }, use) => {
|
|
96
|
-
await use(new import_index.PageUtils({ page, browserName }));
|
|
97
|
-
},
|
|
98
|
-
requestUtils: [
|
|
99
|
-
async ({}, use, workerInfo) => {
|
|
100
|
-
const requestUtils = await import_index.RequestUtils.setup({
|
|
101
|
-
baseURL: workerInfo.project.use.baseURL,
|
|
102
|
-
storageStatePath: STORAGE_STATE_PATH
|
|
103
|
-
});
|
|
104
|
-
await use(requestUtils);
|
|
105
|
-
},
|
|
106
|
-
{ scope: "worker", auto: true }
|
|
107
|
-
],
|
|
108
|
-
// Spins up a new browser for use by the Lighthouse fixture
|
|
109
|
-
// so that Lighthouse can connect to the debugging port.
|
|
110
|
-
// As a worker-scoped fixture, this will only launch 1
|
|
111
|
-
// instance for the whole test worker, so multiple tests
|
|
112
|
-
// will share the same instance with the same port.
|
|
113
|
-
lighthousePort: [
|
|
114
|
-
async ({}, use) => {
|
|
115
|
-
const port = await (0, import_get_port.default)();
|
|
116
|
-
const browser = await import_test.chromium.launch({
|
|
117
|
-
args: [`--remote-debugging-port=${port}`]
|
|
118
|
-
});
|
|
119
|
-
await use(port);
|
|
120
|
-
await browser.close();
|
|
121
|
-
},
|
|
122
|
-
{ scope: "worker" }
|
|
123
|
-
],
|
|
124
|
-
lighthouse: async ({ page, lighthousePort }, use) => {
|
|
125
|
-
await use(new import_index.Lighthouse({ page, port: lighthousePort }));
|
|
126
|
-
},
|
|
127
|
-
metrics: async ({ page }, use) => {
|
|
128
|
-
await use(new import_index.Metrics({ page }));
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
132
|
-
0 && (module.exports = {
|
|
133
|
-
expect,
|
|
134
|
-
test
|
|
135
|
-
});
|
|
136
|
-
//# sourceMappingURL=test.cjs.map
|
package/build/test.cjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/test.ts"],
|
|
4
|
-
"sourcesContent": ["// Playwright fixtures use `use()` which is not a React hook.\n\n/**\n * External dependencies\n */\nimport * as path from 'path';\nimport { test as base, expect, chromium } from '@playwright/test';\nimport type { ConsoleMessage } from '@playwright/test';\nimport getPort from 'get-port';\n\n/**\n * Internal dependencies\n */\nimport {\n\tAdmin,\n\tEditor,\n\tPageUtils,\n\tRequestUtils,\n\tMetrics,\n\tLighthouse,\n} from './index';\n\nconst STORAGE_STATE_PATH =\n\tprocess.env.STORAGE_STATE_PATH ||\n\tpath.join( process.cwd(), 'artifacts/storage-states/admin.json' );\n\n/**\n * Set of console logging types observed to protect against unexpected yet\n * handled (i.e. not catastrophic) errors or warnings. Each key corresponds\n * to the Playwright ConsoleMessage type, its value the corresponding function\n * on the console global object.\n */\nconst OBSERVED_CONSOLE_MESSAGE_TYPES = [ 'warn', 'error' ] as const;\n\n/**\n * Adds a page event handler to emit uncaught exception to process if one of\n * the observed console logging types is encountered.\n *\n * @param message The console message.\n */\nfunction observeConsoleLogging( message: ConsoleMessage ) {\n\tconst type = message.type();\n\tif (\n\t\t! OBSERVED_CONSOLE_MESSAGE_TYPES.includes(\n\t\t\ttype as ( typeof OBSERVED_CONSOLE_MESSAGE_TYPES )[ number ]\n\t\t)\n\t) {\n\t\treturn;\n\t}\n\n\tconst text = message.text();\n\n\t// An exception is made for _blanket_ deprecation warnings: Those\n\t// which log regardless of whether a deprecated feature is in use.\n\tif ( text.includes( 'This is a global warning' ) ) {\n\t\treturn;\n\t}\n\n\t// A chrome advisory warning about SameSite cookies is informational\n\t// about future changes, tracked separately for improvement in core.\n\t//\n\t// See: https://core.trac.wordpress.org/ticket/37000\n\t// See: https://www.chromestatus.com/feature/5088147346030592\n\t// See: https://www.chromestatus.com/feature/5633521622188032\n\tif (\n\t\ttext.includes( 'A cookie associated with a cross-site resource' ) ||\n\t\ttext.includes(\n\t\t\t'https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite'\n\t\t)\n\t) {\n\t\treturn;\n\t}\n\n\t// Viewing posts on the front end can result in this error, which\n\t// has nothing to do with Gutenberg.\n\tif ( text.includes( 'net::ERR_UNKNOWN_URL_SCHEME' ) ) {\n\t\treturn;\n\t}\n\n\t// TODO: Not implemented yet.\n\t// Network errors are ignored only if we are intentionally testing\n\t// offline mode.\n\t// if (\n\t// \ttext.includes( 'net::ERR_INTERNET_DISCONNECTED' ) &&\n\t// \tisOfflineMode()\n\t// ) {\n\t// \treturn;\n\t// }\n\n\t// As of WordPress 5.3.2 in Chrome 79, navigating to the block editor\n\t// (Posts > Add New) will display a console warning about\n\t// non - unique IDs.\n\t// See: https://core.trac.wordpress.org/ticket/23165\n\tif ( text.includes( 'elements with non-unique id #_wpnonce' ) ) {\n\t\treturn;\n\t}\n\n\t// Ignore all JQMIGRATE (jQuery migrate) deprecation warnings.\n\tif ( text.includes( 'JQMIGRATE' ) ) {\n\t\treturn;\n\t}\n\n\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1404468\n\tif (\n\t\ttext.includes( 'Layout was forced before the page was fully loaded' )\n\t) {\n\t\treturn;\n\t}\n\n\t// Deprecated warnings coming from the third-party libraries.\n\tif ( text.includes( 'MouseEvent.moz' ) ) {\n\t\treturn;\n\t}\n\n\tconst logFunction =\n\t\ttype as ( typeof OBSERVED_CONSOLE_MESSAGE_TYPES )[ number ];\n\n\t// Disable reason: We intentionally bubble up the console message\n\t// which, unless the test explicitly anticipates the logging via\n\t// @wordpress/jest-console matchers, will cause the intended test\n\t// failure.\n\t// eslint-disable-next-line no-console\n\tconsole[ logFunction ]( text );\n}\n\nconst test = base.extend<\n\t{\n\t\tadmin: Admin;\n\t\teditor: Editor;\n\t\tpageUtils: PageUtils;\n\t\tsnapshotConfig: void;\n\t\tmetrics: Metrics;\n\t\tlighthouse: Lighthouse;\n\t},\n\t{\n\t\trequestUtils: RequestUtils;\n\t\tlighthousePort: number;\n\t}\n>( {\n\tadmin: async ( { page, pageUtils, editor }, use ) => {\n\t\tawait use( new Admin( { page, pageUtils, editor } ) );\n\t},\n\teditor: async ( { page }, use ) => {\n\t\tawait use( new Editor( { page } ) );\n\t},\n\tpage: async ( { page }, use ) => {\n\t\tpage.on( 'console', observeConsoleLogging );\n\n\t\tawait use( page );\n\n\t\t// Clear local storage after each test.\n\t\t// This needs to be wrapped with a try/catch because it can fail when\n\t\t// the test is skipped (e.g. via fixme).\n\t\ttry {\n\t\t\tawait page.evaluate( () => {\n\t\t\t\twindow.localStorage.clear();\n\t\t\t} );\n\t\t} catch {\n\t\t\t// noop.\n\t\t}\n\n\t\tawait page.close();\n\t},\n\tpageUtils: async ( { page, browserName }, use ) => {\n\t\tawait use( new PageUtils( { page, browserName } ) );\n\t},\n\trequestUtils: [\n\t\tasync ( {}, use, workerInfo ) => {\n\t\t\tconst requestUtils = await RequestUtils.setup( {\n\t\t\t\tbaseURL: workerInfo.project.use.baseURL,\n\t\t\t\tstorageStatePath: STORAGE_STATE_PATH,\n\t\t\t} );\n\n\t\t\tawait use( requestUtils );\n\t\t},\n\t\t{ scope: 'worker', auto: true },\n\t],\n\t// Spins up a new browser for use by the Lighthouse fixture\n\t// so that Lighthouse can connect to the debugging port.\n\t// As a worker-scoped fixture, this will only launch 1\n\t// instance for the whole test worker, so multiple tests\n\t// will share the same instance with the same port.\n\tlighthousePort: [\n\t\tasync ( {}, use ) => {\n\t\t\tconst port = await getPort();\n\t\t\tconst browser = await chromium.launch( {\n\t\t\t\targs: [ `--remote-debugging-port=${ port }` ],\n\t\t\t} );\n\n\t\t\tawait use( port );\n\n\t\t\tawait browser.close();\n\t\t},\n\t\t{ scope: 'worker' },\n\t],\n\tlighthouse: async ( { page, lighthousePort }, use ) => {\n\t\tawait use( new Lighthouse( { page, port: lighthousePort } ) );\n\t},\n\tmetrics: async ( { page }, use ) => {\n\t\tawait use( new Metrics( { page } ) );\n\t},\n} );\n\nexport { test, expect };\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["base", "getPort"]
|
|
7
|
-
}
|
package/build/types.cjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
|
|
16
|
-
// packages/e2e-test-utils-playwright/src/types.ts
|
|
17
|
-
var types_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(types_exports);
|
|
19
|
-
//# sourceMappingURL=types.cjs.map
|
package/build/types.cjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\ndeclare global {\n\tinterface Window {\n\t\t// Silence the warning for `window.wp` in Playwright's evaluate functions.\n\t\twp: any;\n\t\t// Helper function added by Metrics fixture for web-vitals.js.\n\t\t__reportVitals__: ( data: string ) => void;\n\t}\n}\n\nexport {};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|