@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 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; } });
@@ -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
- plainText: '',
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.plainText);
40
- clipboardDataTransfer.setData('text/html', _clipboardData.html);
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
- plainText: clipboardDataTransfer.getData('text/plain'),
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":"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"}
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
- await page.evaluate(() => {
94
- window.localStorage.clear();
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":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
@@ -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 }: typeof clipboardDataHolder): void;
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;AAYpC,QAAA,IAAI,mBAAmB,EAAE;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAIb,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,SAAS,EACf,EAAE,SAAc,EAAE,IAAS,EAAE,EAAE,OAAO,mBAAmB,QAMzD;AAgFD,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"}
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"}
@@ -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,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyFjE,QAAA,MAAM,IAAI;WAED,KAAK;YACJ,MAAM;eACH,SAAS;oBACJ,IAAI;;kBAGN,YAAY;EAmCzB,CAAC;AAEJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC"}
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"}
@@ -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.9.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.38.0",
34
- "@wordpress/keycodes": "^3.41.0",
35
- "@wordpress/url": "^3.42.0",
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": "5eac1734bcdca2301fdd37ec8cfe2a45e722a2c4"
48
+ "gitHead": "cc35f517ed017ab7131319af3e87c359e8de175d"
47
49
  }