@rettangoli/vt 1.0.4 → 1.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rettangoli/vt",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Rettangoli Visual Testing",
5
5
  "type": "module",
6
6
  "repository": {
@@ -56,15 +56,11 @@ export class PlaywrightRunner {
56
56
  this.envVarPrefix = envVarPrefix;
57
57
  this.envVars = collectEnvVars(this.envVarPrefix);
58
58
  this.sharedContext = null;
59
- this.sharedPage = null;
60
- this.sharedRegisteredReadyEvents = new Set();
61
59
  }
62
60
 
63
61
  async initialize() {
64
62
  if (this.isolationMode === "fast") {
65
63
  this.sharedContext = await this.createContext();
66
- this.sharedPage = await this.sharedContext.newPage();
67
- await this.configurePage(this.sharedPage);
68
64
  }
69
65
  }
70
66
 
@@ -72,8 +68,6 @@ export class PlaywrightRunner {
72
68
  if (this.sharedContext) {
73
69
  await this.sharedContext.close();
74
70
  this.sharedContext = null;
75
- this.sharedPage = null;
76
- this.sharedRegisteredReadyEvents.clear();
77
71
  }
78
72
  }
79
73
 
@@ -83,8 +77,6 @@ export class PlaywrightRunner {
83
77
  }
84
78
  await this.dispose();
85
79
  this.sharedContext = await this.createContext();
86
- this.sharedPage = await this.sharedContext.newPage();
87
- await this.configurePage(this.sharedPage);
88
80
  }
89
81
 
90
82
  async createContext() {
@@ -138,32 +130,13 @@ export class PlaywrightRunner {
138
130
  });
139
131
  }
140
132
 
141
- async acquireSession() {
142
- if (this.isolationMode === "strict") {
143
- const context = await this.createContext();
144
- const page = await context.newPage();
145
- await this.configurePage(page);
146
- return {
147
- page,
148
- resetSession: async () => 0,
149
- registeredReadyEvents: new Set(),
150
- cleanup: async () => {
151
- await context.close();
152
- },
153
- };
133
+ async clearOriginRuntimeState(page) {
134
+ if (!page || page.isClosed()) {
135
+ return;
154
136
  }
155
137
 
156
- if (!this.sharedContext) {
157
- this.sharedContext = await this.createContext();
158
- }
159
- if (!this.sharedPage || this.sharedPage.isClosed()) {
160
- this.sharedPage = await this.sharedContext.newPage();
161
- await this.configurePage(this.sharedPage);
162
- }
163
- const resetSession = async () => {
164
- const resetStart = nowMs();
165
- // Clear origin-scoped runtime state before switching away.
166
- await this.sharedPage.evaluate(async () => {
138
+ try {
139
+ await page.evaluate(async () => {
167
140
  try {
168
141
  localStorage.clear();
169
142
  } catch {}
@@ -183,18 +156,48 @@ export class PlaywrightRunner {
183
156
  }
184
157
  } catch {}
185
158
  });
186
- await this.sharedPage.goto("about:blank", { waitUntil: "domcontentloaded" });
159
+ } catch {}
160
+ }
161
+
162
+ async acquireSession() {
163
+ if (this.isolationMode === "strict") {
164
+ const context = await this.createContext();
165
+ const page = await context.newPage();
166
+ await this.configurePage(page);
167
+ return {
168
+ page,
169
+ resetSession: async () => 0,
170
+ registeredReadyEvents: new Set(),
171
+ cleanup: async () => {
172
+ await context.close();
173
+ },
174
+ };
175
+ }
176
+
177
+ if (!this.sharedContext) {
178
+ this.sharedContext = await this.createContext();
179
+ }
180
+
181
+ const page = await this.sharedContext.newPage();
182
+ await this.configurePage(page);
183
+
184
+ const resetSession = async () => {
185
+ const resetStart = nowMs();
187
186
  await this.sharedContext.clearCookies();
188
187
  await this.sharedContext.clearPermissions();
189
- await this.configurePage(this.sharedPage);
190
188
  return nowMs() - resetStart;
191
189
  };
192
190
 
193
191
  return {
194
- page: this.sharedPage,
192
+ page,
195
193
  resetSession,
196
- registeredReadyEvents: this.sharedRegisteredReadyEvents,
197
- cleanup: async () => {},
194
+ registeredReadyEvents: new Set(),
195
+ cleanup: async () => {
196
+ await this.clearOriginRuntimeState(page);
197
+ if (!page.isClosed()) {
198
+ await page.close();
199
+ }
200
+ },
198
201
  };
199
202
  }
200
203