@vitest/browser-playwright 5.0.0-beta.2 → 5.0.0-beta.4

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/index.js +31 -24
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -527,7 +527,7 @@ async function takeScreenshot(context, name, options) {
527
527
  const mask = options.mask?.map((selector) => getDescribedLocator(context, selector));
528
528
  const style = context.project.config.browser.ui ? options.style === undefined ? SCREENSHOT_STYLES : SCREENSHOT_STYLES + options.style : options.style;
529
529
  if (options.element) {
530
- const { element: selector, ...config } = options;
530
+ const { element: selector, target: _target, ...config } = options;
531
531
  const element = getDescribedLocator(context, selector);
532
532
  const buffer = await element.screenshot({
533
533
  ...config,
@@ -540,11 +540,17 @@ async function takeScreenshot(context, name, options) {
540
540
  path
541
541
  };
542
542
  }
543
- const buffer = await getDescribedLocator(context, {
543
+ const { target, ...config } = options;
544
+ const buffer = target === "page" ? await context.page.screenshot({
545
+ ...config,
546
+ mask,
547
+ path: savePath,
548
+ style
549
+ }) : await getDescribedLocator(context, {
544
550
  selector: "body",
545
551
  locator: "locator('body')"
546
552
  }).screenshot({
547
- ...options,
553
+ ...config,
548
554
  mask,
549
555
  path: savePath,
550
556
  style
@@ -955,7 +961,7 @@ class PlaywrightBrowserProvider {
955
961
  createMocker() {
956
962
  const idPredicates = new Map();
957
963
  const sessionIds = new Map();
958
- function createPredicate(sessionId, url) {
964
+ function createPredicate(url) {
959
965
  const moduleUrl = new URL(url, "http://localhost");
960
966
  const predicate = (url) => {
961
967
  if (url.searchParams.has("_vitest_original")) {
@@ -980,11 +986,10 @@ class PlaywrightBrowserProvider {
980
986
  }
981
987
  return true;
982
988
  };
983
- const ids = sessionIds.get(sessionId) || [];
984
- ids.push(moduleUrl.href);
985
- sessionIds.set(sessionId, ids);
986
- idPredicates.set(predicateKey(sessionId, moduleUrl.href), predicate);
987
- return predicate;
989
+ return {
990
+ url: moduleUrl.href,
991
+ predicate
992
+ };
988
993
  }
989
994
  function predicateKey(sessionId, url) {
990
995
  return `${sessionId}:${url}`;
@@ -992,7 +997,17 @@ class PlaywrightBrowserProvider {
992
997
  return {
993
998
  register: async (sessionId, module) => {
994
999
  const page = this.getPage(sessionId);
995
- await page.context().route(createPredicate(sessionId, module.url), async (route) => {
1000
+ const { url: moduleUrl, predicate } = createPredicate(module.url);
1001
+ const key = predicateKey(sessionId, moduleUrl);
1002
+ const existingPredicate = idPredicates.get(key);
1003
+ if (existingPredicate) {
1004
+ await page.context().unroute(existingPredicate);
1005
+ }
1006
+ const ids = sessionIds.get(sessionId) ?? new Set();
1007
+ ids.add(moduleUrl);
1008
+ sessionIds.set(sessionId, ids);
1009
+ idPredicates.set(key, predicate);
1010
+ await page.context().route(predicate, async (route) => {
996
1011
  if (module.type === "manual") {
997
1012
  const exports$1 = Object.keys(await module.resolve());
998
1013
  const body = createManualModuleSource(module.url, exports$1);
@@ -1053,8 +1068,8 @@ class PlaywrightBrowserProvider {
1053
1068
  },
1054
1069
  clear: async (sessionId) => {
1055
1070
  const page = this.getPage(sessionId);
1056
- const ids = sessionIds.get(sessionId) || [];
1057
- const promises = ids.map((id) => {
1071
+ const ids = sessionIds.get(sessionId) ?? new Set();
1072
+ const promises = [...ids].map((id) => {
1058
1073
  const key = predicateKey(sessionId, id);
1059
1074
  const predicate = idPredicates.get(key);
1060
1075
  if (predicate) {
@@ -1176,18 +1191,10 @@ class PlaywrightBrowserProvider {
1176
1191
  const page = this.getPage(sessionid);
1177
1192
  const cdp = await page.context().newCDPSession(page);
1178
1193
  return {
1179
- send(method, params) {
1180
- return cdp.send(method, params);
1181
- },
1182
- on(event, listener) {
1183
- return cdp.on(event, listener);
1184
- },
1185
- off(event, listener) {
1186
- return cdp.off(event, listener);
1187
- },
1188
- once(event, listener) {
1189
- return cdp.once(event, listener);
1190
- }
1194
+ send: cdp.send.bind(cdp),
1195
+ on: cdp.on.bind(cdp),
1196
+ off: cdp.off.bind(cdp),
1197
+ once: cdp.once.bind(cdp)
1191
1198
  };
1192
1199
  }
1193
1200
  async close() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/browser-playwright",
3
3
  "type": "module",
4
- "version": "5.0.0-beta.2",
4
+ "version": "5.0.0-beta.4",
5
5
  "description": "Browser running for Vitest using playwright",
6
6
  "license": "MIT",
7
7
  "funding": "https://opencollective.com/vitest",
@@ -42,7 +42,7 @@
42
42
  ],
43
43
  "peerDependencies": {
44
44
  "playwright": "*",
45
- "vitest": "5.0.0-beta.2"
45
+ "vitest": "5.0.0-beta.4"
46
46
  },
47
47
  "peerDependenciesMeta": {
48
48
  "playwright": {
@@ -51,12 +51,12 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "tinyrainbow": "^3.1.0",
54
- "@vitest/browser": "5.0.0-beta.2",
55
- "@vitest/mocker": "5.0.0-beta.2"
54
+ "@vitest/mocker": "5.0.0-beta.4",
55
+ "@vitest/browser": "5.0.0-beta.4"
56
56
  },
57
57
  "devDependencies": {
58
- "playwright": "^1.59.0",
59
- "vitest": "5.0.0-beta.2"
58
+ "playwright": "^1.60.0",
59
+ "vitest": "5.0.0-beta.4"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "premove dist && pnpm rollup -c",