@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.
Files changed (2) hide show
  1. package/dist/workerMain.js +83 -12
  2. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { join, dirname, basename } from 'node:path';
2
- import { readFile, writeFile, readdir, mkdir, rm, access, mkdtemp } from 'node:fs/promises';
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 baseUrl = `http://localhost:${port}/tests/${htmlFileName}`;
1308
+ const url = new URL(`http://localhost:${port}/tests/${htmlFileName}`);
1274
1309
  if (traceFocus) {
1275
- return `${baseUrl}?traceFocus=true`;
1310
+ url.searchParams.set('traceFocus', 'true');
1276
1311
  }
1277
- return baseUrl;
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
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/test-with-playwright-worker",
3
- "version": "22.12.0",
3
+ "version": "22.13.0",
4
4
  "description": "Worker package for test-with-playwright",
5
5
  "repository": {
6
6
  "type": "git",