@lvce-editor/test-with-playwright-worker 22.40.3 → 22.40.5

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 +34 -21
  2. package/package.json +1 -1
@@ -1786,13 +1786,11 @@ const runTest = async ({
1786
1786
  }) => {
1787
1787
  const start = performance.now();
1788
1788
  try {
1789
- const {
1790
- expect
1791
- } = await import('@playwright/test');
1792
1789
  const url = getUrlFromTestFile(test, port, traceFocus ?? false, traceRendererWorker ?? false);
1793
1790
  await navigateToTest(page, url, browser);
1794
1791
  const testOverlay = page.locator('#TestOverlay');
1795
- await expect(testOverlay).toBeVisible({
1792
+ await testOverlay.waitFor({
1793
+ state: 'visible',
1796
1794
  timeout
1797
1795
  });
1798
1796
  const text = await testOverlay.textContent();
@@ -2170,7 +2168,8 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2170
2168
  const command = new Promise((resolve, reject) => {
2171
2169
  pendingCommands.set(id, {
2172
2170
  reject,
2173
- resolve
2171
+ resolve,
2172
+ sessionId
2174
2173
  });
2175
2174
  });
2176
2175
  void session.send('Target.sendMessageToTarget', {
@@ -2201,12 +2200,14 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2201
2200
  callCount: true,
2202
2201
  detailed: true
2203
2202
  });
2204
- const timer = setInterval(() => {
2205
- trackPromise(pendingEntries, readTargetCoverage(sendToTarget, sessionId, entries), error => {
2206
- recordCollectionError(error);
2207
- });
2208
- }, 50);
2209
- timers.set(sessionId, timer);
2203
+ if (!stopped && sessions.has(sessionId)) {
2204
+ const timer = setInterval(() => {
2205
+ trackPromise(pendingEntries, readTargetCoverage(sendToTarget, sessionId, entries), error => {
2206
+ recordCollectionError(error);
2207
+ });
2208
+ }, 50);
2209
+ timers.set(sessionId, timer);
2210
+ }
2210
2211
  }
2211
2212
  await sendToTarget(sessionId, 'Runtime.runIfWaitingForDebugger');
2212
2213
  if (matches) {
@@ -2216,6 +2217,10 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2216
2217
  const onAttached = target => {
2217
2218
  trackPromise(tasks, handleAttachedTarget(target), async error => {
2218
2219
  recordCollectionError(error);
2220
+ const message = error instanceof Error ? error.message : String(error);
2221
+ if (message.includes('No session with given id') || message.includes('Target closed')) {
2222
+ return;
2223
+ }
2219
2224
  try {
2220
2225
  await sendToTarget(target.sessionId, 'Runtime.runIfWaitingForDebugger');
2221
2226
  } catch {
@@ -2226,8 +2231,12 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2226
2231
  const onDetached = ({
2227
2232
  sessionId
2228
2233
  }) => {
2229
- if (!sessions.has(sessionId)) {
2230
- return;
2234
+ for (const [id, pending] of pendingCommands) {
2235
+ if (pending.sessionId !== sessionId) {
2236
+ continue;
2237
+ }
2238
+ pendingCommands.delete(id);
2239
+ pending.reject(new Error('Target closed'));
2231
2240
  }
2232
2241
  sessions.delete(sessionId);
2233
2242
  const timer = timers.get(sessionId);
@@ -2251,17 +2260,11 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2251
2260
  }
2252
2261
  stopped = true;
2253
2262
  session.off('Target.attachedToTarget', onAttached);
2254
- session.off('Target.detachedFromTarget', onDetached);
2255
2263
  try {
2256
2264
  for (const timer of timers.values()) {
2257
2265
  clearInterval(timer);
2258
2266
  }
2259
2267
  timers.clear();
2260
- await session.send('Target.setAutoAttach', {
2261
- autoAttach: false,
2262
- flatten: false,
2263
- waitForDebuggerOnStart: false
2264
- });
2265
2268
  while (tasks.size > 0) {
2266
2269
  await Promise.all(tasks);
2267
2270
  }
@@ -2297,8 +2300,18 @@ const startWorkerJavascriptCoverage = async (page, targetScript) => {
2297
2300
  }
2298
2301
  return result;
2299
2302
  } finally {
2300
- session.off('Target.receivedMessageFromTarget', onReceivedMessage);
2301
- await session.detach();
2303
+ try {
2304
+ // Disabling auto-attach detaches worker sessions, so finish all coverage commands first.
2305
+ await session.send('Target.setAutoAttach', {
2306
+ autoAttach: false,
2307
+ flatten: false,
2308
+ waitForDebuggerOnStart: false
2309
+ });
2310
+ } finally {
2311
+ session.off('Target.detachedFromTarget', onDetached);
2312
+ session.off('Target.receivedMessageFromTarget', onReceivedMessage);
2313
+ await session.detach();
2314
+ }
2302
2315
  }
2303
2316
  }
2304
2317
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/test-with-playwright-worker",
3
- "version": "22.40.3",
3
+ "version": "22.40.5",
4
4
  "description": "Worker package for test-with-playwright",
5
5
  "repository": {
6
6
  "type": "git",