@vitest/browser 2.0.0-beta.11 → 2.0.0-beta.12

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.
@@ -62,8 +62,24 @@ class PlaywrightBrowserProvider {
62
62
  return {
63
63
  page,
64
64
  context: this.contexts.get(contextId),
65
- get frame() {
66
- return page.frame("vitest-iframe");
65
+ frame() {
66
+ return new Promise((resolve, reject) => {
67
+ const frame = page.frame("vitest-iframe");
68
+ if (frame) {
69
+ return resolve(frame);
70
+ }
71
+ const timeout = setTimeout(() => {
72
+ const err = new Error(`Cannot find "vitest-iframe" on the page. This is a bug in Vitest, please report it.`);
73
+ reject(err);
74
+ }, 1e3);
75
+ page.on("frameattached", (frame2) => {
76
+ clearTimeout(timeout);
77
+ resolve(frame2);
78
+ });
79
+ });
80
+ },
81
+ get iframe() {
82
+ return page.frameLocator('[data-vitest="true"]');
67
83
  }
68
84
  };
69
85
  }
@@ -76,12 +92,43 @@ class PlaywrightBrowserProvider {
76
92
  const context = await this.createContext(contextId);
77
93
  const page = await context.newPage();
78
94
  this.pages.set(contextId, page);
95
+ if (process.env.VITEST_PW_DEBUG) {
96
+ page.on("requestfailed", (request) => {
97
+ console.error(
98
+ "[PW Error]",
99
+ request.resourceType(),
100
+ "request failed for",
101
+ request.url(),
102
+ "url:",
103
+ request.failure()?.errorText
104
+ );
105
+ });
106
+ }
79
107
  return page;
80
108
  }
81
109
  async openPage(contextId, url) {
82
110
  const browserPage = await this.openBrowserPage(contextId);
83
111
  await browserPage.goto(url);
84
112
  }
113
+ async getCDPSession(contextId) {
114
+ const page = this.getPage(contextId);
115
+ const cdp = await page.context().newCDPSession(page);
116
+ return {
117
+ async send(method, params) {
118
+ const result = await cdp.send(method, params);
119
+ return result;
120
+ },
121
+ on(event, listener) {
122
+ cdp.on(event, listener);
123
+ },
124
+ off(event, listener) {
125
+ cdp.off(event, listener);
126
+ },
127
+ once(event, listener) {
128
+ cdp.once(event, listener);
129
+ }
130
+ };
131
+ }
85
132
  async close() {
86
133
  const browser = this.browser;
87
134
  this.browser = null;