@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 +1 -1
- package/src/capture/playwright-runner.js +40 -37
package/package.json
CHANGED
|
@@ -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
|
|
142
|
-
if (
|
|
143
|
-
|
|
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
|
-
|
|
157
|
-
|
|
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
|
-
|
|
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
|
|
192
|
+
page,
|
|
195
193
|
resetSession,
|
|
196
|
-
registeredReadyEvents:
|
|
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
|
|