@smoothdeploy/playwright 1.60.1 → 1.62.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.
@@ -1,29 +1,29 @@
1
1
  # packages/playwright/lib/common/index.js
2
- # total: 111.2 KB
2
+ # total: 114.5 KB
3
3
 
4
4
  ## Inlined (20)
5
- 11.6 KB packages/playwright/src/common/config.ts
5
+ 12.0 KB packages/playwright/src/common/config.ts
6
6
  13.7 KB packages/playwright/src/common/configLoader.ts
7
- 2.1 KB packages/playwright/src/common/esmLoaderHost.ts
8
- 10.9 KB packages/playwright/src/common/fixtures.ts
7
+ 11.5 KB packages/playwright/src/common/fixtures.ts
9
8
  0.8 KB packages/playwright/src/common/index.ts
10
9
  1.3 KB packages/playwright/src/common/ipc.ts
11
10
  2.1 KB packages/playwright/src/common/poolBuilder.ts
12
- 3.7 KB packages/playwright/src/common/process.ts
11
+ 3.9 KB packages/playwright/src/common/process.ts
13
12
  4.7 KB packages/playwright/src/common/suiteUtils.ts
14
- 7.9 KB packages/playwright/src/common/test.ts
15
- 2.1 KB packages/playwright/src/common/testLoader.ts
16
- 12.5 KB packages/playwright/src/common/testType.ts
13
+ 8.5 KB packages/playwright/src/common/test.ts
14
+ 2.0 KB packages/playwright/src/common/testLoader.ts
15
+ 12.6 KB packages/playwright/src/common/testType.ts
17
16
  1.2 KB packages/playwright/src/common/validators.ts
18
17
  1.3 KB packages/playwright/src/isomorphic/teleReceiver.ts
19
- 9.6 KB packages/playwright/src/transform/compilationCache.ts
18
+ 9.7 KB packages/playwright/src/transform/compilationCache.ts
19
+ 1.7 KB packages/playwright/src/transform/esmLoaderSync.ts
20
20
  1.1 KB packages/playwright/src/transform/pirates.ts
21
21
  1.1 KB packages/playwright/src/transform/portTransport.ts
22
- 10.2 KB packages/playwright/src/transform/transform.ts
23
- 2.9 KB packages/playwright/src/transform/tsconfig-loader.ts
24
- 7.5 KB packages/playwright/src/util.ts
22
+ 12.3 KB packages/playwright/src/transform/transform.ts
23
+ 3.2 KB packages/playwright/src/transform/tsconfig-loader.ts
24
+ 7.0 KB packages/playwright/src/util.ts
25
25
 
26
- ## External (9)
26
+ ## External (8)
27
27
  ../globals
28
28
  ../matchers/expect
29
29
  ../package
@@ -32,4 +32,3 @@
32
32
  playwright-core/lib/bootstrap
33
33
  playwright-core/lib/coreBundle
34
34
  playwright-core/lib/utilsBundle
35
- playwright-core/package.json
@@ -32,9 +32,8 @@ __export(errorContext_exports, {
32
32
  });
33
33
  module.exports = __toCommonJS(errorContext_exports);
34
34
  var import_fs = __toESM(require("fs"));
35
- var import_path = __toESM(require("path"));
36
35
  var import_util = require("./util");
37
- const { parseErrorStack } = require("playwright-core/lib/coreBundle").iso;
36
+ const { parseErrorStack } = require("playwright-core/lib/coreBundle").utils;
38
37
  const { stripAnsiEscapes } = require("playwright-core/lib/coreBundle").iso;
39
38
  const fixTestInstructions = `# Instructions
40
39
 
@@ -101,7 +100,7 @@ function buildCodeFrame(error, testLocation) {
101
100
  const stack = error.stack;
102
101
  if (!stack)
103
102
  return void 0;
104
- const parsed = parseErrorStack(stack, import_path.default.sep);
103
+ const parsed = parseErrorStack(stack);
105
104
  const errorLocation = parsed.location;
106
105
  if (!errorLocation)
107
106
  return void 0;
package/lib/index.js CHANGED
@@ -45,7 +45,6 @@ var import_utilsBundle = require("playwright-core/lib/utilsBundle");
45
45
  var import_errorContext = require("./errorContext");
46
46
  var import_common = require("./common");
47
47
  var globals = __toESM(require("./globals"));
48
- var import_package = require("./package");
49
48
  var import_browserBackend = require("./mcp/test/browserBackend");
50
49
  var import_expect = require("./matchers/expect");
51
50
  var import_common2 = require("./common");
@@ -56,10 +55,9 @@ const { escapeHTML } = require("playwright-core/lib/coreBundle").iso;
56
55
  const { jsonStringifyForceASCII } = require("playwright-core/lib/coreBundle").utils;
57
56
  const { createGuid } = require("playwright-core/lib/coreBundle").utils;
58
57
  const { debugMode } = require("playwright-core/lib/coreBundle").utils;
59
- const { setBoxedStackPrefixes } = require("playwright-core/lib/coreBundle").utils;
58
+ const { debugLogger } = require("playwright-core/lib/coreBundle").utils;
60
59
  const { currentZone } = require("playwright-core/lib/coreBundle").utils;
61
60
  const _baseTest = import_common.testType.rootTestType.test;
62
- setBoxedStackPrefixes([import_package.packageRoot]);
63
61
  if (process["__pw_initiator__"]) {
64
62
  const originalStackTraceLimit = Error.stackTraceLimit;
65
63
  Error.stackTraceLimit = 200;
@@ -402,16 +400,6 @@ const playwrightFixtures = {
402
400
  }
403
401
  } : {};
404
402
  const context = await browser.newContext({ ...videoOptions, ...options });
405
- if (process.env.PW_CLOCK === "frozen") {
406
- await context._wrapApiCall(async () => {
407
- await context.clock.install({ time: 0 });
408
- await context.clock.pauseAt(1e3);
409
- }, { internal: true });
410
- } else if (process.env.PW_CLOCK === "realtime") {
411
- await context._wrapApiCall(async () => {
412
- await context.clock.install({ time: 0 });
413
- }, { internal: true });
414
- }
415
403
  let closed = false;
416
404
  const close = async () => {
417
405
  if (closed)
@@ -419,8 +407,7 @@ const playwrightFixtures = {
419
407
  closed = true;
420
408
  const closeReason = testInfo.status === "timedOut" ? "Test timeout of " + testInfo.timeout + "ms exceeded." : "Test ended.";
421
409
  await context.close({ reason: closeReason });
422
- const testFailed = testInfo.status !== testInfo.expectedStatus;
423
- const preserveVideo = captureVideo && (videoMode === "on" || testFailed && videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1);
410
+ const preserveVideo = captureVideo && shouldPreserveVideo(videoMode, testInfo);
424
411
  if (preserveVideo) {
425
412
  const { pagesWithVideo: pagesForVideo } = contexts.get(context);
426
413
  const videos = pagesForVideo.map((p) => p.video()).filter((video2) => !!video2);
@@ -445,9 +432,10 @@ const playwrightFixtures = {
445
432
  }, { scope: "test", title: "context", box: true }],
446
433
  _optionContextReuseMode: ["none", { scope: "worker", option: true, box: true }],
447
434
  _optionConnectOptions: [void 0, { scope: "worker", option: true, box: true }],
448
- _reuseContext: [async ({ video, _optionContextReuseMode }, use) => {
435
+ reuseContext: [false, { scope: "worker", option: true, box: true }],
436
+ _reuseContext: [async ({ video, _optionContextReuseMode, reuseContext }, use) => {
449
437
  let mode = _optionContextReuseMode;
450
- if (process.env.PW_TEST_REUSE_CONTEXT)
438
+ if (process.env.PW_TEST_REUSE_CONTEXT || reuseContext)
451
439
  mode = "when-possible";
452
440
  const reuse = mode === "when-possible" && normalizeVideoMode(video) === "off";
453
441
  await use(reuse);
@@ -479,6 +467,28 @@ const playwrightFixtures = {
479
467
  if (!page)
480
468
  page = await context.newPage();
481
469
  await use(page);
470
+ },
471
+ mount: async ({ page, baseURL }, use) => {
472
+ const callMount = (params) => page.evaluate(async (p) => {
473
+ const w = window;
474
+ if (typeof w.mount !== "function")
475
+ throw new Error("The gallery page does not define window.mount().");
476
+ await w.mount(p);
477
+ }, params, { exposeFunctions: true });
478
+ await use(async (storyId, props) => {
479
+ if (!baseURL)
480
+ throw new Error("mount() requires `baseURL` to point at the component gallery. Set it in your Playwright config.");
481
+ await page.goto(baseURL);
482
+ await callMount({ story: storyId, props });
483
+ return Object.assign(page.locator("#root"), {
484
+ // update() re-renders the same story with new props without navigating; if the gallery
485
+ // reuses its root/instance, the framework reconciles and component state is preserved.
486
+ update: (newProps) => callMount({ story: storyId, props: newProps }),
487
+ unmount: () => page.evaluate(async () => {
488
+ await window.unmount?.();
489
+ })
490
+ });
491
+ });
482
492
  }
483
493
  };
484
494
  function normalizeVideoMode(video) {
@@ -490,7 +500,23 @@ function normalizeVideoMode(video) {
490
500
  return videoMode;
491
501
  }
492
502
  function shouldCaptureVideo(videoMode, testInfo) {
493
- return videoMode === "on" || videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1;
503
+ return videoMode === "on" || videoMode === "retain-on-failure" || videoMode === "retain-on-failure-and-retries" || videoMode === "on-first-retry" && testInfo.retry === 1 || videoMode === "on-all-retries" && testInfo.retry > 0 || videoMode === "retain-on-first-failure" && testInfo.retry === 0;
504
+ }
505
+ function shouldPreserveVideo(videoMode, testInfo) {
506
+ const testFailed = testInfo.status !== testInfo.expectedStatus;
507
+ switch (videoMode) {
508
+ case "on":
509
+ case "on-first-retry":
510
+ case "on-all-retries":
511
+ return true;
512
+ case "retain-on-failure":
513
+ case "retain-on-first-failure":
514
+ return testFailed;
515
+ case "retain-on-failure-and-retries":
516
+ return testFailed || testInfo.retry > 0;
517
+ default:
518
+ return false;
519
+ }
494
520
  }
495
521
  function normalizeScreenshotMode(screenshot) {
496
522
  if (!screenshot)
@@ -528,7 +554,7 @@ function resolveClientCerticates(clientCertificates) {
528
554
  }
529
555
  return clientCertificates;
530
556
  }
531
- const kTracingStarted = Symbol("kTracingStarted");
557
+ const kTracingStarted = /* @__PURE__ */ Symbol("kTracingStarted");
532
558
  function connectOptionsFromEnv() {
533
559
  const wsEndpoint = process.env.PW_TEST_CONNECT_WS_ENDPOINT;
534
560
  if (!wsEndpoint)
@@ -617,7 +643,7 @@ class ArtifactsRecorder {
617
643
  this._resultScreenshots = resultScreenshots;
618
644
  this._pauseOnFailure = pauseOnFailure;
619
645
  const screenshotOptions = typeof screenshot === "string" ? void 0 : screenshot;
620
- this._startedCollectingArtifacts = Symbol("startedCollectingArtifacts");
646
+ this._startedCollectingArtifacts = /* @__PURE__ */ Symbol("startedCollectingArtifacts");
621
647
  this._screenshotRecorder = new SnapshotRecorder(this, normalizeScreenshotMode(screenshot), "screenshot", "image/png", ".png", async (page, path2) => {
622
648
  await page._wrapApiCall(async () => {
623
649
  await page.screenshot({ ...screenshotOptions, timeout: 5e3, path: path2, caret: "initial" });
@@ -656,7 +682,8 @@ class ArtifactsRecorder {
656
682
  await page._wrapApiCall(async () => {
657
683
  this._pageSnapshot = await page.ariaSnapshot({ mode: "ai", timeout: 5e3 });
658
684
  }, { internal: true });
659
- } catch {
685
+ } catch (error) {
686
+ debugLogger.log("error", `failed to capture aria snapshot: ${error}`);
660
687
  }
661
688
  }
662
689
  async didCreateRequestContext(context) {
@@ -24,7 +24,7 @@ var LoaderMain = class extends import_common.ProcessRunner {
24
24
  return { fileSuite: fileSuite._deepSerialize(), testErrors };
25
25
  }
26
26
  async getCompilationCacheFromLoader() {
27
- await import_common.esm.incorporateCompilationCache();
27
+ await import_common.transform.incorporateCompilationCache();
28
28
  return import_common.cc.serializeCompilationCache();
29
29
  }
30
30
  };