@lvce-editor/test-with-playwright-worker 22.12.0 → 22.13.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 +83 -12
- package/package.json +1 -1
package/dist/workerMain.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { join, dirname, basename } from 'node:path';
|
|
2
|
-
import { readFile, writeFile, readdir,
|
|
1
|
+
import { join, dirname, basename, extname } from 'node:path';
|
|
2
|
+
import { readFile, writeFile, readdir, rm, mkdir, access, mkdtemp } from 'node:fs/promises';
|
|
3
3
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
4
|
import IstanbulCoverage from 'istanbul-lib-coverage';
|
|
5
5
|
import v8ToIstanbul from 'v8-to-istanbul';
|
|
@@ -989,6 +989,41 @@ const getTests = async testSrc => {
|
|
|
989
989
|
}
|
|
990
990
|
};
|
|
991
991
|
|
|
992
|
+
const selector = 'script.RendererWorkerTrace';
|
|
993
|
+
const getFileName = test => {
|
|
994
|
+
const name = basename(test);
|
|
995
|
+
return `${name.slice(0, -extname(name).length)}.json`;
|
|
996
|
+
};
|
|
997
|
+
const prepareDirectory = async directory => {
|
|
998
|
+
await rm(directory, {
|
|
999
|
+
force: true,
|
|
1000
|
+
recursive: true
|
|
1001
|
+
});
|
|
1002
|
+
await mkdir(directory, {
|
|
1003
|
+
recursive: true
|
|
1004
|
+
});
|
|
1005
|
+
};
|
|
1006
|
+
const exportTrace = async ({
|
|
1007
|
+
directory,
|
|
1008
|
+
page,
|
|
1009
|
+
test
|
|
1010
|
+
}) => {
|
|
1011
|
+
let text;
|
|
1012
|
+
try {
|
|
1013
|
+
text = await page.evaluate(traceSelector => {
|
|
1014
|
+
return globalThis.document.querySelector(traceSelector)?.textContent || undefined;
|
|
1015
|
+
}, selector);
|
|
1016
|
+
} catch {
|
|
1017
|
+
return false;
|
|
1018
|
+
}
|
|
1019
|
+
if (!text) {
|
|
1020
|
+
return false;
|
|
1021
|
+
}
|
|
1022
|
+
JSON.parse(text);
|
|
1023
|
+
await writeFile(join(directory, getFileName(test)), `${text}\n`);
|
|
1024
|
+
return true;
|
|
1025
|
+
};
|
|
1026
|
+
|
|
992
1027
|
const Cli = 6001;
|
|
993
1028
|
|
|
994
1029
|
const browserScriptCache = {};
|
|
@@ -1267,14 +1302,17 @@ const getTestState = (testOverlayState, text) => {
|
|
|
1267
1302
|
* @param {number} port
|
|
1268
1303
|
* @param {boolean} traceFocus
|
|
1269
1304
|
*/
|
|
1270
|
-
const getUrlFromTestFile = (absolutePath, port, traceFocus) => {
|
|
1305
|
+
const getUrlFromTestFile = (absolutePath, port, traceFocus, traceRendererWorker) => {
|
|
1271
1306
|
const baseName = basename(absolutePath);
|
|
1272
1307
|
const htmlFileName = baseName.slice(0, -'.js'.length) + '.html';
|
|
1273
|
-
const
|
|
1308
|
+
const url = new URL(`http://localhost:${port}/tests/${htmlFileName}`);
|
|
1274
1309
|
if (traceFocus) {
|
|
1275
|
-
|
|
1310
|
+
url.searchParams.set('traceFocus', 'true');
|
|
1276
1311
|
}
|
|
1277
|
-
|
|
1312
|
+
if (traceRendererWorker) {
|
|
1313
|
+
url.searchParams.set('traceRendererWorker', 'true');
|
|
1314
|
+
}
|
|
1315
|
+
return url.href;
|
|
1278
1316
|
};
|
|
1279
1317
|
const runTest = async ({
|
|
1280
1318
|
page,
|
|
@@ -1283,14 +1321,15 @@ const runTest = async ({
|
|
|
1283
1321
|
test,
|
|
1284
1322
|
testSrc,
|
|
1285
1323
|
timeout,
|
|
1286
|
-
traceFocus
|
|
1324
|
+
traceFocus,
|
|
1325
|
+
traceRendererWorker
|
|
1287
1326
|
}) => {
|
|
1288
1327
|
const start = performance.now();
|
|
1289
1328
|
try {
|
|
1290
1329
|
const {
|
|
1291
1330
|
expect
|
|
1292
1331
|
} = await import('@playwright/test');
|
|
1293
|
-
const url = getUrlFromTestFile(test, port, traceFocus);
|
|
1332
|
+
const url = getUrlFromTestFile(test, port, traceFocus ?? false, traceRendererWorker ?? false);
|
|
1294
1333
|
await page.goto(url, {
|
|
1295
1334
|
waitUntil: 'networkidle'
|
|
1296
1335
|
});
|
|
@@ -1371,6 +1410,7 @@ const runTests = async ({
|
|
|
1371
1410
|
onResult,
|
|
1372
1411
|
page,
|
|
1373
1412
|
port,
|
|
1413
|
+
rendererWorkerTraceDirectory,
|
|
1374
1414
|
svgScreenshotOptions,
|
|
1375
1415
|
tests,
|
|
1376
1416
|
testSrc,
|
|
@@ -1391,10 +1431,18 @@ const runTests = async ({
|
|
|
1391
1431
|
testSrc,
|
|
1392
1432
|
timeout,
|
|
1393
1433
|
traceFocus: traceFocus ?? false,
|
|
1434
|
+
traceRendererWorker: rendererWorkerTraceDirectory !== undefined,
|
|
1394
1435
|
...(svgScreenshotOptions && {
|
|
1395
1436
|
svgScreenshotOptions
|
|
1396
1437
|
})
|
|
1397
1438
|
});
|
|
1439
|
+
if (rendererWorkerTraceDirectory) {
|
|
1440
|
+
await exportTrace({
|
|
1441
|
+
directory: rendererWorkerTraceDirectory,
|
|
1442
|
+
page,
|
|
1443
|
+
test
|
|
1444
|
+
});
|
|
1445
|
+
}
|
|
1398
1446
|
await onResult(result);
|
|
1399
1447
|
// @ts-ignore
|
|
1400
1448
|
const resultCounts = getResultCounts$1(result.status);
|
|
@@ -1441,11 +1489,14 @@ const getResultCounts = status => {
|
|
|
1441
1489
|
};
|
|
1442
1490
|
}
|
|
1443
1491
|
};
|
|
1444
|
-
const getAllTestsUrl = (port, filter, traceFocus) => {
|
|
1492
|
+
const getAllTestsUrl = (port, filter, traceFocus, traceRendererWorker) => {
|
|
1445
1493
|
const url = new URL(`http://localhost:${port}/tests/_all.html`);
|
|
1446
1494
|
if (traceFocus) {
|
|
1447
1495
|
url.searchParams.set('traceFocus', 'true');
|
|
1448
1496
|
}
|
|
1497
|
+
if (traceRendererWorker) {
|
|
1498
|
+
url.searchParams.set('traceRendererWorker', 'true');
|
|
1499
|
+
}
|
|
1449
1500
|
if (filter) {
|
|
1450
1501
|
url.searchParams.set('filter', filter);
|
|
1451
1502
|
}
|
|
@@ -1538,13 +1589,14 @@ const runTestsWithReusedPage = async ({
|
|
|
1538
1589
|
onResult,
|
|
1539
1590
|
page,
|
|
1540
1591
|
port,
|
|
1592
|
+
rendererWorkerTraceDirectory,
|
|
1541
1593
|
timeout,
|
|
1542
1594
|
traceFocus
|
|
1543
1595
|
}) => {
|
|
1544
1596
|
const start = performance.now();
|
|
1545
1597
|
let results;
|
|
1546
1598
|
try {
|
|
1547
|
-
const url = getAllTestsUrl(port, filter, traceFocus ?? false);
|
|
1599
|
+
const url = getAllTestsUrl(port, filter, traceFocus ?? false, rendererWorkerTraceDirectory !== undefined);
|
|
1548
1600
|
await page.goto(url, {
|
|
1549
1601
|
timeout,
|
|
1550
1602
|
waitUntil: 'networkidle'
|
|
@@ -1554,6 +1606,13 @@ const runTestsWithReusedPage = async ({
|
|
|
1554
1606
|
} catch (error) {
|
|
1555
1607
|
results = [getFailedAllTestsResult(error, start)];
|
|
1556
1608
|
}
|
|
1609
|
+
if (rendererWorkerTraceDirectory) {
|
|
1610
|
+
await exportTrace({
|
|
1611
|
+
directory: rendererWorkerTraceDirectory,
|
|
1612
|
+
page,
|
|
1613
|
+
test: '_all.html'
|
|
1614
|
+
});
|
|
1615
|
+
}
|
|
1557
1616
|
let failed = 0;
|
|
1558
1617
|
let passed = 0;
|
|
1559
1618
|
let skipped = 0;
|
|
@@ -2117,8 +2176,9 @@ const tearDownTests = async ({
|
|
|
2117
2176
|
* @param {string} filter
|
|
2118
2177
|
* @param {boolean} reusePage
|
|
2119
2178
|
* @param {boolean} coverage
|
|
2179
|
+
* @param {boolean} traceRendererWorker
|
|
2120
2180
|
*/
|
|
2121
|
-
const runAllTests = async (extensionPath, testPath, cwd, browser, headless, timeout, runtimeOptions, traceFocus, filter, reusePage, svgScreenshotOptions, coverage) => {
|
|
2181
|
+
const runAllTests = async (extensionPath, testPath, cwd, browser, headless, timeout, runtimeOptions, traceFocus, filter, reusePage, svgScreenshotOptions, coverage, traceRendererWorker) => {
|
|
2122
2182
|
string(extensionPath);
|
|
2123
2183
|
string(testPath);
|
|
2124
2184
|
string(cwd);
|
|
@@ -2128,6 +2188,7 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
2128
2188
|
object(runtimeOptions);
|
|
2129
2189
|
boolean(reusePage);
|
|
2130
2190
|
boolean(coverage);
|
|
2191
|
+
boolean(traceRendererWorker);
|
|
2131
2192
|
if (svgScreenshotOptions !== undefined) {
|
|
2132
2193
|
object(svgScreenshotOptions);
|
|
2133
2194
|
}
|
|
@@ -2137,6 +2198,10 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
2137
2198
|
signal
|
|
2138
2199
|
} = controller;
|
|
2139
2200
|
const testSrc = join(testPath, 'src');
|
|
2201
|
+
const rendererWorkerTraceDirectory = join(cwd, 'renderer-worker-traces');
|
|
2202
|
+
if (traceRendererWorker) {
|
|
2203
|
+
await prepareDirectory(rendererWorkerTraceDirectory);
|
|
2204
|
+
}
|
|
2140
2205
|
const onResult = async result => {
|
|
2141
2206
|
await rpc.invoke(HandleResult, result);
|
|
2142
2207
|
};
|
|
@@ -2202,7 +2267,10 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
2202
2267
|
page,
|
|
2203
2268
|
port,
|
|
2204
2269
|
timeout,
|
|
2205
|
-
traceFocus
|
|
2270
|
+
traceFocus,
|
|
2271
|
+
...(traceRendererWorker && {
|
|
2272
|
+
rendererWorkerTraceDirectory
|
|
2273
|
+
})
|
|
2206
2274
|
});
|
|
2207
2275
|
}
|
|
2208
2276
|
});
|
|
@@ -2225,6 +2293,9 @@ const runAllTests = async (extensionPath, testPath, cwd, browser, headless, time
|
|
|
2225
2293
|
testSrc,
|
|
2226
2294
|
timeout,
|
|
2227
2295
|
traceFocus,
|
|
2296
|
+
...(traceRendererWorker && {
|
|
2297
|
+
rendererWorkerTraceDirectory
|
|
2298
|
+
}),
|
|
2228
2299
|
...(svgScreenshotOptions && {
|
|
2229
2300
|
svgScreenshotOptions
|
|
2230
2301
|
})
|