@lvce-editor/test-with-playwright-worker 20.1.0 → 21.0.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/dist/workerMain.js +91 -8
- package/package.json +1 -1
package/dist/workerMain.js
CHANGED
|
@@ -1,11 +1,58 @@
|
|
|
1
|
-
import { join, basename } from 'node:path';
|
|
2
|
-
import { readdir } from 'node:fs/promises';
|
|
3
|
-
import { expect, firefox, chromium } from '@playwright/test';
|
|
1
|
+
import { join, dirname, basename } from 'node:path';
|
|
2
|
+
import { readFile, writeFile, readdir } from 'node:fs/promises';
|
|
4
3
|
import { pathToFileURL } from 'node:url';
|
|
5
4
|
import net from 'node:net';
|
|
6
5
|
import os from 'node:os';
|
|
7
6
|
import { fork, spawn } from 'node:child_process';
|
|
8
7
|
import { createInterface } from 'node:readline';
|
|
8
|
+
import { createRequire } from 'node:module';
|
|
9
|
+
|
|
10
|
+
const require$1 = createRequire(import.meta.url);
|
|
11
|
+
const before = ` _onWebSocketOpened(event) {
|
|
12
|
+
const request2 = this._webSocketRequests.get(event.requestId);
|
|
13
|
+
assert(request2);
|
|
14
|
+
const response2 = this._webSocketResponses.get(event.requestId);
|
|
15
|
+
assert(response2);
|
|
16
|
+
this._webSocketRequests.delete(event.requestId);
|
|
17
|
+
this._webSocketResponses.delete(event.requestId);
|
|
18
|
+
this._page.frameManager.onWebSocketRequest(webSocketId(event.frameId, event.wsid), request2.headers);
|
|
19
|
+
this._page.frameManager.onWebSocketResponse(webSocketId(event.frameId, event.wsid), response2.status, response2.statusText, response2.headers);
|
|
20
|
+
}`;
|
|
21
|
+
const after = ` _onWebSocketOpened(event) {
|
|
22
|
+
const request2 = this._webSocketRequests.get(event.requestId);
|
|
23
|
+
const response2 = this._webSocketResponses.get(event.requestId);
|
|
24
|
+
if (!request2 || !response2) {
|
|
25
|
+
this._webSocketRequests.delete(event.requestId);
|
|
26
|
+
this._webSocketResponses.delete(event.requestId);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this._webSocketRequests.delete(event.requestId);
|
|
30
|
+
this._webSocketResponses.delete(event.requestId);
|
|
31
|
+
this._page.frameManager.onWebSocketRequest(webSocketId(event.frameId, event.wsid), request2.headers);
|
|
32
|
+
this._page.frameManager.onWebSocketResponse(webSocketId(event.frameId, event.wsid), response2.status, response2.statusText, response2.headers);
|
|
33
|
+
}`;
|
|
34
|
+
const patchCoreBundleContent = content => {
|
|
35
|
+
if (content.includes(after)) {
|
|
36
|
+
return content;
|
|
37
|
+
}
|
|
38
|
+
if (!content.includes(before)) {
|
|
39
|
+
throw new Error('Could not patch Playwright Firefox worker WebSocket handler');
|
|
40
|
+
}
|
|
41
|
+
return content.split(before).join(after);
|
|
42
|
+
};
|
|
43
|
+
const getCoreBundlePath = () => {
|
|
44
|
+
const packageJsonPath = require$1.resolve('playwright-core/package.json');
|
|
45
|
+
return join(dirname(packageJsonPath), 'lib', 'coreBundle.js');
|
|
46
|
+
};
|
|
47
|
+
const patchPlaywrightFirefoxWorkerWebSocket = async () => {
|
|
48
|
+
const file = getCoreBundlePath();
|
|
49
|
+
const content = await readFile(file, 'utf8');
|
|
50
|
+
const patched = patchCoreBundleContent(content);
|
|
51
|
+
if (patched === content) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
await writeFile(file, patched);
|
|
55
|
+
};
|
|
9
56
|
|
|
10
57
|
const normalizeLine = line => {
|
|
11
58
|
if (line.startsWith('Error: ')) {
|
|
@@ -957,6 +1004,9 @@ const runElectronTest = async ({
|
|
|
957
1004
|
status: Skip$1
|
|
958
1005
|
};
|
|
959
1006
|
}
|
|
1007
|
+
const {
|
|
1008
|
+
expect
|
|
1009
|
+
} = await import('@playwright/test');
|
|
960
1010
|
await withTimeout(testModule.test({
|
|
961
1011
|
electronApp,
|
|
962
1012
|
expect,
|
|
@@ -1104,6 +1154,9 @@ const runTest = async ({
|
|
|
1104
1154
|
}) => {
|
|
1105
1155
|
const start = performance.now();
|
|
1106
1156
|
try {
|
|
1157
|
+
const {
|
|
1158
|
+
expect
|
|
1159
|
+
} = await import('@playwright/test');
|
|
1107
1160
|
const url = getUrlFromTestFile(test, port, traceFocus);
|
|
1108
1161
|
await page.goto(url, {
|
|
1109
1162
|
waitUntil: 'networkidle'
|
|
@@ -1367,15 +1420,33 @@ const getServerPath = async serverPath => {
|
|
|
1367
1420
|
|
|
1368
1421
|
/**
|
|
1369
1422
|
*
|
|
1370
|
-
* @param {{browser:'chromium'|'firefox', signal:AbortSignal, headless:boolean}} options
|
|
1423
|
+
* @param {{browser:'chromium'|'firefox'|'webkit', signal:AbortSignal, headless:boolean}} options
|
|
1371
1424
|
* @returns
|
|
1372
1425
|
*/
|
|
1426
|
+
const getLauncher = async browser => {
|
|
1427
|
+
const {
|
|
1428
|
+
chromium,
|
|
1429
|
+
firefox,
|
|
1430
|
+
webkit
|
|
1431
|
+
} = await import('@playwright/test');
|
|
1432
|
+
switch (browser) {
|
|
1433
|
+
case 'chromium':
|
|
1434
|
+
return chromium;
|
|
1435
|
+
case 'firefox':
|
|
1436
|
+
return firefox;
|
|
1437
|
+
case 'webkit':
|
|
1438
|
+
return webkit;
|
|
1439
|
+
}
|
|
1440
|
+
};
|
|
1373
1441
|
const startBrowser = async ({
|
|
1374
1442
|
browser,
|
|
1375
1443
|
headless,
|
|
1376
1444
|
signal
|
|
1377
1445
|
}) => {
|
|
1378
|
-
|
|
1446
|
+
if (browser === 'firefox') {
|
|
1447
|
+
await patchPlaywrightFirefoxWorkerWebSocket();
|
|
1448
|
+
}
|
|
1449
|
+
const launcher = await getLauncher(browser);
|
|
1379
1450
|
const browserInstance = await launcher.launch({
|
|
1380
1451
|
headless
|
|
1381
1452
|
});
|
|
@@ -1431,7 +1502,7 @@ const startServer = async ({
|
|
|
1431
1502
|
|
|
1432
1503
|
/**
|
|
1433
1504
|
*
|
|
1434
|
-
* @param {{browser:'chromium'|'firefox', signal:AbortSignal, headless: boolean, onlyExtension:string, testPath:string}} options
|
|
1505
|
+
* @param {{browser:'chromium'|'firefox'|'webkit', signal:AbortSignal, headless: boolean, onlyExtension:string, testPath:string}} options
|
|
1435
1506
|
* @returns
|
|
1436
1507
|
*/
|
|
1437
1508
|
const setupTests = async ({
|
|
@@ -1619,6 +1690,9 @@ const startElectron = async ({
|
|
|
1619
1690
|
let browser;
|
|
1620
1691
|
try {
|
|
1621
1692
|
const endpoint = await waitForDevtoolsEndpoint(child);
|
|
1693
|
+
const {
|
|
1694
|
+
chromium
|
|
1695
|
+
} = await import('@playwright/test');
|
|
1622
1696
|
browser = await chromium.connectOverCDP(endpoint);
|
|
1623
1697
|
const page = await getFirstPage(browser);
|
|
1624
1698
|
return createElectronLaunch({
|
|
@@ -1661,7 +1735,7 @@ const tearDownTests = async ({
|
|
|
1661
1735
|
* @param {string} extensionPath
|
|
1662
1736
|
* @param {string} testPath
|
|
1663
1737
|
* @param {string} cwd
|
|
1664
|
-
* @param {'chromium'|'firefox'} browser
|
|
1738
|
+
* @param {'chromium'|'firefox'|'webkit'} browser
|
|
1665
1739
|
* @param {boolean} headless
|
|
1666
1740
|
* @param {number} timeout
|
|
1667
1741
|
* @param {string} serverPath
|
|
@@ -1779,4 +1853,13 @@ const main = async () => {
|
|
|
1779
1853
|
set(Cli, rpc);
|
|
1780
1854
|
};
|
|
1781
1855
|
|
|
1782
|
-
|
|
1856
|
+
const Main$1 = {
|
|
1857
|
+
__proto__: null,
|
|
1858
|
+
main
|
|
1859
|
+
};
|
|
1860
|
+
|
|
1861
|
+
if (process.argv.includes('--browser=firefox')) {
|
|
1862
|
+
await patchPlaywrightFirefoxWorkerWebSocket();
|
|
1863
|
+
}
|
|
1864
|
+
const Main = await Promise.resolve().then(function () { return Main$1; });
|
|
1865
|
+
await Main.main();
|