@wordpress/e2e-test-utils-playwright 0.9.0 → 0.10.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/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/lighthouse/index.js +60 -0
- package/build/lighthouse/index.js.map +1 -0
- package/build/metrics/index.js +84 -0
- package/build/metrics/index.js.map +1 -0
- package/build/page-utils/press-keys.js +12 -8
- package/build/page-utils/press-keys.js.map +1 -1
- package/build/test.js +33 -3
- package/build/test.js.map +1 -1
- package/build-types/index.d.ts +2 -0
- package/build-types/index.d.ts.map +1 -1
- package/build-types/lighthouse/index.d.ts +17 -0
- package/build-types/lighthouse/index.d.ts.map +1 -0
- package/build-types/metrics/index.d.ts +41 -0
- package/build-types/metrics/index.d.ts.map +1 -0
- package/build-types/page-utils/press-keys.d.ts +4 -5
- package/build-types/page-utils/press-keys.d.ts.map +1 -1
- package/build-types/test.d.ts +4 -1
- package/build-types/test.d.ts.map +1 -1
- package/build-types/types.d.ts +16 -0
- package/build-types/types.d.ts.map +1 -1
- package/package.json +7 -5
package/build/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.expect = exports.test = exports.RequestUtils = exports.PageUtils = exports.Editor = exports.Admin = void 0;
|
|
17
|
+
exports.expect = exports.test = exports.Lighthouse = exports.Metrics = exports.RequestUtils = exports.PageUtils = exports.Editor = exports.Admin = void 0;
|
|
18
18
|
__exportStar(require("./types"), exports);
|
|
19
19
|
var admin_1 = require("./admin");
|
|
20
20
|
Object.defineProperty(exports, "Admin", { enumerable: true, get: function () { return admin_1.Admin; } });
|
|
@@ -24,6 +24,10 @@ var page_utils_1 = require("./page-utils");
|
|
|
24
24
|
Object.defineProperty(exports, "PageUtils", { enumerable: true, get: function () { return page_utils_1.PageUtils; } });
|
|
25
25
|
var request_utils_1 = require("./request-utils");
|
|
26
26
|
Object.defineProperty(exports, "RequestUtils", { enumerable: true, get: function () { return request_utils_1.RequestUtils; } });
|
|
27
|
+
var metrics_1 = require("./metrics");
|
|
28
|
+
Object.defineProperty(exports, "Metrics", { enumerable: true, get: function () { return metrics_1.Metrics; } });
|
|
29
|
+
var lighthouse_1 = require("./lighthouse");
|
|
30
|
+
Object.defineProperty(exports, "Lighthouse", { enumerable: true, get: function () { return lighthouse_1.Lighthouse; } });
|
|
27
31
|
var test_1 = require("./test");
|
|
28
32
|
Object.defineProperty(exports, "test", { enumerable: true, get: function () { return test_1.test; } });
|
|
29
33
|
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return test_1.expect; } });
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+BAAsC;AAA7B,4FAAA,IAAI,OAAA;AAAE,8FAAA,MAAM,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+BAAsC;AAA7B,4FAAA,IAAI,OAAA;AAAE,8FAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Lighthouse = void 0;
|
|
4
|
+
const lighthouse = require("lighthouse/core/index.cjs");
|
|
5
|
+
class Lighthouse {
|
|
6
|
+
page;
|
|
7
|
+
port;
|
|
8
|
+
constructor(page, port) {
|
|
9
|
+
this.page = page;
|
|
10
|
+
this.port = port;
|
|
11
|
+
this.page = page;
|
|
12
|
+
this.port = port;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Returns the Lighthouse report for the current URL.
|
|
16
|
+
*
|
|
17
|
+
* Runs several Lighthouse audits in a separate browser window and returns
|
|
18
|
+
* the summary.
|
|
19
|
+
*/
|
|
20
|
+
async getReport() {
|
|
21
|
+
// From https://github.com/GoogleChrome/lighthouse/blob/d149e9c1b628d5881ca9ca451278d99ff1b31d9a/core/config/default-config.js#L433-L503
|
|
22
|
+
const audits = {
|
|
23
|
+
'largest-contentful-paint': 'LCP',
|
|
24
|
+
'total-blocking-time': 'TBT',
|
|
25
|
+
interactive: 'TTI',
|
|
26
|
+
'cumulative-layout-shift': 'CLS',
|
|
27
|
+
'experimental-interaction-to-next-paint': 'INP',
|
|
28
|
+
};
|
|
29
|
+
const report = await lighthouse(this.page.url(), { port: this.port }, {
|
|
30
|
+
extends: 'lighthouse:default',
|
|
31
|
+
settings: {
|
|
32
|
+
// "provided" means no throttling.
|
|
33
|
+
// TODO: Make configurable.
|
|
34
|
+
throttlingMethod: 'provided',
|
|
35
|
+
// Default is "mobile".
|
|
36
|
+
// See https://github.com/GoogleChrome/lighthouse/blob/main/docs/emulation.md
|
|
37
|
+
// TODO: Make configurable.
|
|
38
|
+
formFactor: 'desktop',
|
|
39
|
+
screenEmulation: {
|
|
40
|
+
disabled: true,
|
|
41
|
+
},
|
|
42
|
+
// Speeds up the report.
|
|
43
|
+
disableFullPageScreenshot: true,
|
|
44
|
+
// Only run certain audits to speed things up.
|
|
45
|
+
onlyAudits: Object.keys(audits),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
const result = {};
|
|
49
|
+
if (!report) {
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
const { lhr } = report;
|
|
53
|
+
for (const [audit, acronym] of Object.entries(audits)) {
|
|
54
|
+
result[acronym] = lhr.audits[audit]?.numericValue || 0;
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.Lighthouse = Lighthouse;
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lighthouse/index.ts"],"names":[],"mappings":";;;AAIA,wDAAwD;AAExD,MAAa,UAAU;IAEL;IACA;IAFjB,YACiB,IAAU,EACV,IAAY;QADZ,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAQ;QAE5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS;QACd,wIAAwI;QACxI,MAAM,MAAM,GAAG;YACd,0BAA0B,EAAE,KAAK;YACjC,qBAAqB,EAAE,KAAK;YAC5B,WAAW,EAAE,KAAK;YAClB,yBAAyB,EAAE,KAAK;YAChC,wCAAwC,EAAE,KAAK;SAC/C,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,UAAU,CAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EACf,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACnB;YACC,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE;gBACT,kCAAkC;gBAClC,2BAA2B;gBAC3B,gBAAgB,EAAE,UAAU;gBAC5B,uBAAuB;gBACvB,6EAA6E;gBAC7E,2BAA2B;gBAC3B,UAAU,EAAE,SAAS;gBACrB,eAAe,EAAE;oBAChB,QAAQ,EAAE,IAAI;iBACd;gBACD,wBAAwB;gBACxB,yBAAyB,EAAE,IAAI;gBAC/B,8CAA8C;gBAC9C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAE,MAAM,CAAE;aACjC;SACD,CACD,CAAC;QAEF,MAAM,MAAM,GAA6B,EAAE,CAAC;QAE5C,IAAK,CAAE,MAAM,EAAG;YACf,OAAO,MAAM,CAAC;SACd;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEvB,KAAM,MAAM,CAAE,KAAK,EAAE,OAAO,CAAE,IAAI,MAAM,CAAC,OAAO,CAAE,MAAM,CAAE,EAAG;YAC5D,MAAM,CAAE,OAAO,CAAE,GAAG,GAAG,CAAC,MAAM,CAAE,KAAK,CAAE,EAAE,YAAY,IAAI,CAAC,CAAC;SAC3D;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AA/DD,gCA+DC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Metrics = void 0;
|
|
4
|
+
class Metrics {
|
|
5
|
+
page;
|
|
6
|
+
constructor(page) {
|
|
7
|
+
this.page = page;
|
|
8
|
+
this.page = page;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Returns durations from the Server-Timing header.
|
|
12
|
+
*
|
|
13
|
+
* @param fields Optional fields to filter.
|
|
14
|
+
*/
|
|
15
|
+
async getServerTiming(fields = []) {
|
|
16
|
+
return this.page.evaluate((f) => performance.getEntriesByType('navigation')[0].serverTiming.reduce((acc, entry) => {
|
|
17
|
+
if (f.length === 0 || f.includes(entry.name)) {
|
|
18
|
+
acc[entry.name] = entry.duration;
|
|
19
|
+
}
|
|
20
|
+
return acc;
|
|
21
|
+
}, {}), fields);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns time to first byte (TTFB) using the Navigation Timing API.
|
|
25
|
+
*
|
|
26
|
+
* @see https://web.dev/ttfb/#measure-ttfb-in-javascript
|
|
27
|
+
*
|
|
28
|
+
* @return {Promise<number>} TTFB value.
|
|
29
|
+
*/
|
|
30
|
+
async getTimeToFirstByte() {
|
|
31
|
+
return this.page.evaluate(() => {
|
|
32
|
+
const { responseStart, startTime } = performance.getEntriesByType('navigation')[0];
|
|
33
|
+
return responseStart - startTime;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns the Largest Contentful Paint (LCP) value using the dedicated API.
|
|
38
|
+
*
|
|
39
|
+
* @see https://w3c.github.io/largest-contentful-paint/
|
|
40
|
+
* @see https://web.dev/lcp/#measure-lcp-in-javascript
|
|
41
|
+
*
|
|
42
|
+
* @return {Promise<number>} LCP value.
|
|
43
|
+
*/
|
|
44
|
+
async getLargestContentfulPaint() {
|
|
45
|
+
return this.page.evaluate(() => new Promise((resolve) => {
|
|
46
|
+
new PerformanceObserver((entryList) => {
|
|
47
|
+
const entries = entryList.getEntries();
|
|
48
|
+
// The last entry is the largest contentful paint.
|
|
49
|
+
const largestPaintEntry = entries.at(-1);
|
|
50
|
+
resolve(largestPaintEntry?.startTime || 0);
|
|
51
|
+
}).observe({
|
|
52
|
+
type: 'largest-contentful-paint',
|
|
53
|
+
buffered: true,
|
|
54
|
+
});
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns the Cumulative Layout Shift (CLS) value using the dedicated API.
|
|
59
|
+
*
|
|
60
|
+
* @see https://github.com/WICG/layout-instability
|
|
61
|
+
* @see https://web.dev/cls/#measure-layout-shifts-in-javascript
|
|
62
|
+
*
|
|
63
|
+
* @return {Promise<number>} CLS value.
|
|
64
|
+
*/
|
|
65
|
+
async getCumulativeLayoutShift() {
|
|
66
|
+
return this.page.evaluate(() => new Promise((resolve) => {
|
|
67
|
+
let CLS = 0;
|
|
68
|
+
new PerformanceObserver((l) => {
|
|
69
|
+
const entries = l.getEntries();
|
|
70
|
+
entries.forEach((entry) => {
|
|
71
|
+
if (!entry.hadRecentInput) {
|
|
72
|
+
CLS += entry.value;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
resolve(CLS);
|
|
76
|
+
}).observe({
|
|
77
|
+
type: 'layout-shift',
|
|
78
|
+
buffered: true,
|
|
79
|
+
});
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.Metrics = Metrics;
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":";;;AAKA,MAAa,OAAO;IACU;IAA7B,YAA6B,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAE,SAAmB,EAAE;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,CAAE,CAAW,EAAG,EAAE,CAEhB,WAAW,CAAC,gBAAgB,CAC3B,YAAY,CAEZ,CAAE,CAAC,CAAE,CAAC,YAAY,CAAC,MAAM,CAC1B,CAAE,GAAG,EAAE,KAAK,EAAG,EAAE;YAChB,IAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAE,KAAK,CAAC,IAAI,CAAE,EAAG;gBACjD,GAAG,CAAE,KAAK,CAAC,IAAI,CAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;aACnC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAA8B,CAC9B,EACF,MAAM,CACN,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAY,GAAG,EAAE;YACzC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GACjC,WAAW,CAAC,gBAAgB,CAC3B,YAAY,CAEZ,CAAE,CAAC,CAAE,CAAC;YACR,OAAO,aAAa,GAAG,SAAS,CAAC;QAClC,CAAC,CAAE,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,yBAAyB;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,GAAG,EAAE,CACJ,IAAI,OAAO,CAAE,CAAE,OAAO,EAAG,EAAE;YAC1B,IAAI,mBAAmB,CAAE,CAAE,SAAS,EAAG,EAAE;gBACxC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;gBACvC,kDAAkD;gBAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAE,CAAC,CAAC,CAAE,CAAC;gBAE3C,OAAO,CAAE,iBAAiB,EAAE,SAAS,IAAI,CAAC,CAAE,CAAC;YAC9C,CAAC,CAAE,CAAC,OAAO,CAAE;gBACZ,IAAI,EAAE,0BAA0B;gBAChC,QAAQ,EAAE,IAAI;aACd,CAAE,CAAC;QACL,CAAC,CAAE,CACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,wBAAwB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CACxB,GAAG,EAAE,CACJ,IAAI,OAAO,CAAE,CAAE,OAAO,EAAG,EAAE;YAC1B,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,IAAI,mBAAmB,CAAE,CAAE,CAAC,EAAG,EAAE;gBAChC,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAmB,CAAC;gBAEhD,OAAO,CAAC,OAAO,CAAE,CAAE,KAAK,EAAG,EAAE;oBAC5B,IAAK,CAAE,KAAK,CAAC,cAAc,EAAG;wBAC7B,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;qBACnB;gBACF,CAAC,CAAE,CAAC;gBAEJ,OAAO,CAAE,GAAG,CAAE,CAAC;YAChB,CAAC,CAAE,CAAC,OAAO,CAAE;gBACZ,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,IAAI;aACd,CAAE,CAAC;QACL,CAAC,CAAE,CACJ,CAAC;IACH,CAAC;CACD;AAzGD,0BAyGC"}
|
|
@@ -10,8 +10,9 @@ const change_case_1 = require("change-case");
|
|
|
10
10
|
*/
|
|
11
11
|
const keycodes_1 = require("@wordpress/keycodes");
|
|
12
12
|
let clipboardDataHolder = {
|
|
13
|
-
|
|
14
|
-
html: '',
|
|
13
|
+
'text/plain': '',
|
|
14
|
+
'text/html': '',
|
|
15
|
+
'rich-text': '',
|
|
15
16
|
};
|
|
16
17
|
/**
|
|
17
18
|
* Sets the clipboard data that can be pasted with
|
|
@@ -24,8 +25,9 @@ let clipboardDataHolder = {
|
|
|
24
25
|
*/
|
|
25
26
|
function setClipboardData({ plainText = '', html = '' }) {
|
|
26
27
|
clipboardDataHolder = {
|
|
27
|
-
plainText,
|
|
28
|
-
html,
|
|
28
|
+
'text/plain': plainText,
|
|
29
|
+
'text/html': html,
|
|
30
|
+
'rich-text': '',
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
exports.setClipboardData = setClipboardData;
|
|
@@ -36,8 +38,9 @@ async function emulateClipboard(page, type) {
|
|
|
36
38
|
document.activeElement?.contentDocument ?? document;
|
|
37
39
|
const clipboardDataTransfer = new DataTransfer();
|
|
38
40
|
if (_type === 'paste') {
|
|
39
|
-
clipboardDataTransfer.setData('text/plain', _clipboardData
|
|
40
|
-
clipboardDataTransfer.setData('text/html', _clipboardData
|
|
41
|
+
clipboardDataTransfer.setData('text/plain', _clipboardData['text/plain']);
|
|
42
|
+
clipboardDataTransfer.setData('text/html', _clipboardData['text/html']);
|
|
43
|
+
clipboardDataTransfer.setData('rich-text', _clipboardData['rich-text']);
|
|
41
44
|
}
|
|
42
45
|
else {
|
|
43
46
|
const selection = canvasDoc.defaultView.getSelection();
|
|
@@ -60,8 +63,9 @@ async function emulateClipboard(page, type) {
|
|
|
60
63
|
clipboardData: clipboardDataTransfer,
|
|
61
64
|
}));
|
|
62
65
|
return {
|
|
63
|
-
|
|
64
|
-
html: clipboardDataTransfer.getData('text/html'),
|
|
66
|
+
'text/plain': clipboardDataTransfer.getData('text/plain'),
|
|
67
|
+
'text/html': clipboardDataTransfer.getData('text/html'),
|
|
68
|
+
'rich-text': clipboardDataTransfer.getData('rich-text'),
|
|
65
69
|
};
|
|
66
70
|
}, [type, clipboardDataHolder]);
|
|
67
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press-keys.js","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6CAA0C;AAQ1C;;GAEG;AACH,kDAK6B;AAE7B,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"press-keys.js","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":"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"}
|
package/build/test.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.expect = exports.test = void 0;
|
|
|
7
7
|
const path = require("path");
|
|
8
8
|
const test_1 = require("@playwright/test");
|
|
9
9
|
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return test_1.expect; } });
|
|
10
|
+
const getPort = require("get-port");
|
|
10
11
|
/**
|
|
11
12
|
* Internal dependencies
|
|
12
13
|
*/
|
|
@@ -90,9 +91,16 @@ const test = test_1.test.extend({
|
|
|
90
91
|
page.on('console', observeConsoleLogging);
|
|
91
92
|
await use(page);
|
|
92
93
|
// Clear local storage after each test.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
// This needs to be wrapped with a try/catch because it can fail when
|
|
95
|
+
// the test is skipped (e.g. via fixme).
|
|
96
|
+
try {
|
|
97
|
+
await page.evaluate(() => {
|
|
98
|
+
window.localStorage.clear();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
// noop.
|
|
103
|
+
}
|
|
96
104
|
await page.close();
|
|
97
105
|
},
|
|
98
106
|
pageUtils: async ({ page }, use) => {
|
|
@@ -108,6 +116,28 @@ const test = test_1.test.extend({
|
|
|
108
116
|
},
|
|
109
117
|
{ scope: 'worker', auto: true },
|
|
110
118
|
],
|
|
119
|
+
// Spins up a new browser for use by the Lighthouse fixture
|
|
120
|
+
// so that Lighthouse can connect to the debugging port.
|
|
121
|
+
// As a worker-scoped fixture, this will only launch 1
|
|
122
|
+
// instance for the whole test worker, so multiple tests
|
|
123
|
+
// will share the same instance with the same port.
|
|
124
|
+
lighthousePort: [
|
|
125
|
+
async ({}, use) => {
|
|
126
|
+
const port = await getPort();
|
|
127
|
+
const browser = await test_1.chromium.launch({
|
|
128
|
+
args: [`--remote-debugging-port=${port}`],
|
|
129
|
+
});
|
|
130
|
+
await use(port);
|
|
131
|
+
await browser.close();
|
|
132
|
+
},
|
|
133
|
+
{ scope: 'worker' },
|
|
134
|
+
],
|
|
135
|
+
lighthouse: async ({ page, lighthousePort }, use) => {
|
|
136
|
+
await use(new index_1.Lighthouse(page, lighthousePort));
|
|
137
|
+
},
|
|
138
|
+
metrics: async ({ page }, use) => {
|
|
139
|
+
await use(new index_1.Metrics(page));
|
|
140
|
+
},
|
|
111
141
|
});
|
|
112
142
|
exports.test = test;
|
|
113
143
|
//# sourceMappingURL=test.js.map
|
package/build/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/build-types/index.d.ts
CHANGED
|
@@ -3,5 +3,7 @@ export { Admin } from './admin';
|
|
|
3
3
|
export { Editor } from './editor';
|
|
4
4
|
export { PageUtils } from './page-utils';
|
|
5
5
|
export { RequestUtils } from './request-utils';
|
|
6
|
+
export { Metrics } from './metrics';
|
|
7
|
+
export { Lighthouse } from './lighthouse';
|
|
6
8
|
export { test, expect } from './test';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { Page } from '@playwright/test';
|
|
5
|
+
export declare class Lighthouse {
|
|
6
|
+
readonly page: Page;
|
|
7
|
+
readonly port: number;
|
|
8
|
+
constructor(page: Page, port: number);
|
|
9
|
+
/**
|
|
10
|
+
* Returns the Lighthouse report for the current URL.
|
|
11
|
+
*
|
|
12
|
+
* Runs several Lighthouse audits in a separate browser window and returns
|
|
13
|
+
* the summary.
|
|
14
|
+
*/
|
|
15
|
+
getReport(): Promise<Record<string, number>>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lighthouse/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,qBAAa,UAAU;aAEL,IAAI,EAAE,IAAI;aACV,IAAI,EAAE,MAAM;gBADZ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM;IAM7B;;;;;OAKG;IACG,SAAS;CAgDf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { Page } from '@playwright/test';
|
|
5
|
+
export declare class Metrics {
|
|
6
|
+
readonly page: Page;
|
|
7
|
+
constructor(page: Page);
|
|
8
|
+
/**
|
|
9
|
+
* Returns durations from the Server-Timing header.
|
|
10
|
+
*
|
|
11
|
+
* @param fields Optional fields to filter.
|
|
12
|
+
*/
|
|
13
|
+
getServerTiming(fields?: string[]): Promise<Record<string, number>>;
|
|
14
|
+
/**
|
|
15
|
+
* Returns time to first byte (TTFB) using the Navigation Timing API.
|
|
16
|
+
*
|
|
17
|
+
* @see https://web.dev/ttfb/#measure-ttfb-in-javascript
|
|
18
|
+
*
|
|
19
|
+
* @return {Promise<number>} TTFB value.
|
|
20
|
+
*/
|
|
21
|
+
getTimeToFirstByte(): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the Largest Contentful Paint (LCP) value using the dedicated API.
|
|
24
|
+
*
|
|
25
|
+
* @see https://w3c.github.io/largest-contentful-paint/
|
|
26
|
+
* @see https://web.dev/lcp/#measure-lcp-in-javascript
|
|
27
|
+
*
|
|
28
|
+
* @return {Promise<number>} LCP value.
|
|
29
|
+
*/
|
|
30
|
+
getLargestContentfulPaint(): Promise<number>;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the Cumulative Layout Shift (CLS) value using the dedicated API.
|
|
33
|
+
*
|
|
34
|
+
* @see https://github.com/WICG/layout-instability
|
|
35
|
+
* @see https://web.dev/cls/#measure-layout-shifts-in-javascript
|
|
36
|
+
*
|
|
37
|
+
* @return {Promise<number>} CLS value.
|
|
38
|
+
*/
|
|
39
|
+
getCumulativeLayoutShift(): Promise<number>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,OAAO;aACU,IAAI,EAAE,IAAI;gBAAV,IAAI,EAAE,IAAI;IAIvC;;;;OAIG;IACG,eAAe,CAAE,MAAM,GAAE,MAAM,EAAO;IAoB5C;;;;;;OAMG;IACG,kBAAkB;IAWxB;;;;;;;OAOG;IACG,yBAAyB;IAkB/B;;;;;;;OAOG;IACG,wBAAwB;CAuB9B"}
|
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
4
|
import type { PageUtils } from './';
|
|
5
|
-
declare let clipboardDataHolder: {
|
|
6
|
-
plainText: string;
|
|
7
|
-
html: string;
|
|
8
|
-
};
|
|
9
5
|
/**
|
|
10
6
|
* Sets the clipboard data that can be pasted with
|
|
11
7
|
* `pressKeys( 'primary+v' )`.
|
|
@@ -15,7 +11,10 @@ declare let clipboardDataHolder: {
|
|
|
15
11
|
* @param clipboardData.plainText
|
|
16
12
|
* @param clipboardData.html
|
|
17
13
|
*/
|
|
18
|
-
export declare function setClipboardData(this: PageUtils, { plainText, html }:
|
|
14
|
+
export declare function setClipboardData(this: PageUtils, { plainText, html }: {
|
|
15
|
+
plainText?: string | undefined;
|
|
16
|
+
html?: string | undefined;
|
|
17
|
+
}): void;
|
|
19
18
|
type Options = {
|
|
20
19
|
times?: number;
|
|
21
20
|
delay?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press-keys.d.ts","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"press-keys.d.ts","sourceRoot":"","sources":["../../src/page-utils/press-keys.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAsBpC;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,SAAS,EACf,EAAE,SAAc,EAAE,IAAS,EAAE;;;CAAA,QAO7B;AAqFD,KAAK,OAAO,GAAG;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAQF,wBAAsB,SAAS,CAC9B,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAE,OAAY,iBAuCxC"}
|
package/build-types/test.d.ts
CHANGED
|
@@ -2,14 +2,17 @@ import { expect } from '@playwright/test';
|
|
|
2
2
|
/**
|
|
3
3
|
* Internal dependencies
|
|
4
4
|
*/
|
|
5
|
-
import { Admin, Editor, PageUtils, RequestUtils } from './index';
|
|
5
|
+
import { Admin, Editor, PageUtils, RequestUtils, Metrics, Lighthouse } from './index';
|
|
6
6
|
declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & {
|
|
7
7
|
admin: Admin;
|
|
8
8
|
editor: Editor;
|
|
9
9
|
pageUtils: PageUtils;
|
|
10
10
|
snapshotConfig: void;
|
|
11
|
+
metrics: Metrics;
|
|
12
|
+
lighthouse: Lighthouse;
|
|
11
13
|
}, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions & {
|
|
12
14
|
requestUtils: RequestUtils;
|
|
15
|
+
lighthousePort: number;
|
|
13
16
|
}>;
|
|
14
17
|
export { test, expect };
|
|
15
18
|
//# sourceMappingURL=test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,MAAM,EAAY,MAAM,kBAAkB,CAAC;AAIlE;;GAEG;AACH,OAAO,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,MAAM,SAAS,CAAC;AAyFjB,QAAA,MAAM,IAAI;WAED,KAAK;YACJ,MAAM;eACH,SAAS;oBACJ,IAAI;aACX,OAAO;gBACJ,UAAU;;kBAGR,YAAY;oBACV,MAAM;EAiErB,CAAC;AAEJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC"}
|
package/build-types/types.d.ts
CHANGED
|
@@ -2,6 +2,22 @@ declare global {
|
|
|
2
2
|
interface Window {
|
|
3
3
|
wp: any;
|
|
4
4
|
}
|
|
5
|
+
interface LayoutShiftAttribution {
|
|
6
|
+
readonly node: Node;
|
|
7
|
+
readonly previousRect: DOMRectReadOnly;
|
|
8
|
+
readonly currentRect: DOMRectReadOnly;
|
|
9
|
+
readonly toJSON: () => string;
|
|
10
|
+
}
|
|
11
|
+
interface LayoutShift extends PerformanceEntry {
|
|
12
|
+
readonly duration: number;
|
|
13
|
+
readonly entryType: 'layout-shift';
|
|
14
|
+
readonly name: 'layout-shift';
|
|
15
|
+
readonly startTime: DOMHighResTimeStamp;
|
|
16
|
+
readonly value: number;
|
|
17
|
+
readonly hadRecentInput: boolean;
|
|
18
|
+
readonly lastInputTime: DOMHighResTimeStamp;
|
|
19
|
+
readonly sources: LayoutShiftAttribution[];
|
|
20
|
+
}
|
|
5
21
|
}
|
|
6
22
|
export {};
|
|
7
23
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QAEf,EAAE,EAAE,GAAG,CAAC;KACR;CACD;AAED,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QAEf,EAAE,EAAE,GAAG,CAAC;KACR;IAID,UAAU,sBAAsB;QAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QACpB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;QACvC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;QACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;KAC9B;IAID,UAAU,WAAY,SAAQ,gBAAgB;QAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;QACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;QACjC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;KAC3C;CACD;AAED,OAAO,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/e2e-test-utils-playwright",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "End-To-End (E2E) test utils for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -30,11 +30,13 @@
|
|
|
30
30
|
"main": "./build/index.js",
|
|
31
31
|
"types": "./build-types",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@wordpress/api-fetch": "^6.
|
|
34
|
-
"@wordpress/keycodes": "^3.
|
|
35
|
-
"@wordpress/url": "^3.
|
|
33
|
+
"@wordpress/api-fetch": "^6.39.0",
|
|
34
|
+
"@wordpress/keycodes": "^3.42.0",
|
|
35
|
+
"@wordpress/url": "^3.43.0",
|
|
36
36
|
"change-case": "^4.1.2",
|
|
37
37
|
"form-data": "^4.0.0",
|
|
38
|
+
"get-port": "^5.1.1",
|
|
39
|
+
"lighthouse": "^10.4.0",
|
|
38
40
|
"mime": "^3.0.0"
|
|
39
41
|
},
|
|
40
42
|
"peerDependencies": {
|
|
@@ -43,5 +45,5 @@
|
|
|
43
45
|
"publishConfig": {
|
|
44
46
|
"access": "public"
|
|
45
47
|
},
|
|
46
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "cc35f517ed017ab7131319af3e87c359e8de175d"
|
|
47
49
|
}
|