@playwright/test 1.36.0-alpha-jun-9-2023 → 1.36.0-alpha-jun-10-2023
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/lib/isomorphic/teleReceiver.js +14 -4
- package/lib/reporters/blob.js +2 -2
- package/lib/reporters/merge.js +1 -1
- package/lib/reporters/teleEmitter.js +10 -2
- package/lib/runner/reporters.js +1 -1
- package/lib/runner/uiMode.js +2 -2
- package/lib/worker/fixtureRunner.js +1 -1
- package/package.json +2 -2
|
@@ -23,17 +23,19 @@ exports.serializeRegexPatterns = serializeRegexPatterns;
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
class TeleReporterReceiver {
|
|
26
|
-
constructor(pathSeparator, reporter, reportConfig) {
|
|
26
|
+
constructor(pathSeparator, reporter, reuseTestCases, reportConfig) {
|
|
27
27
|
this._rootSuite = void 0;
|
|
28
28
|
this._pathSeparator = void 0;
|
|
29
29
|
this._reporter = void 0;
|
|
30
30
|
this._tests = new Map();
|
|
31
31
|
this._rootDir = void 0;
|
|
32
32
|
this._clearPreviousResultsWhenTestBegins = false;
|
|
33
|
+
this._reuseTestCases = void 0;
|
|
33
34
|
this._reportConfig = void 0;
|
|
34
35
|
this._rootSuite = new TeleSuite('', 'root');
|
|
35
36
|
this._pathSeparator = pathSeparator;
|
|
36
37
|
this._reporter = reporter;
|
|
38
|
+
this._reuseTestCases = reuseTestCases;
|
|
37
39
|
this._reportConfig = reportConfig;
|
|
38
40
|
}
|
|
39
41
|
dispatch(message) {
|
|
@@ -130,7 +132,7 @@ class TeleReporterReceiver {
|
|
|
130
132
|
result.status = payload.status;
|
|
131
133
|
result.statusEx = payload.status;
|
|
132
134
|
result.errors = payload.errors;
|
|
133
|
-
result.attachments = payload.attachments;
|
|
135
|
+
result.attachments = this._parseAttachments(payload.attachments);
|
|
134
136
|
(_this$_reporter$onTes2 = (_this$_reporter3 = this._reporter).onTestEnd) === null || _this$_reporter$onTes2 === void 0 ? void 0 : _this$_reporter$onTes2.call(_this$_reporter3, test, result);
|
|
135
137
|
}
|
|
136
138
|
_onStepBegin(testId, resultId, payload) {
|
|
@@ -145,7 +147,7 @@ class TeleReporterReceiver {
|
|
|
145
147
|
location: this._absoluteLocation(payload.location),
|
|
146
148
|
parent: parentStep,
|
|
147
149
|
startTime: new Date(payload.startTime),
|
|
148
|
-
duration:
|
|
150
|
+
duration: -1,
|
|
149
151
|
steps: []
|
|
150
152
|
};
|
|
151
153
|
if (parentStep) parentStep.steps.push(step);else result.steps.push(step);
|
|
@@ -220,6 +222,14 @@ class TeleReporterReceiver {
|
|
|
220
222
|
use: {}
|
|
221
223
|
};
|
|
222
224
|
}
|
|
225
|
+
_parseAttachments(attachments) {
|
|
226
|
+
return attachments.map(a => {
|
|
227
|
+
return {
|
|
228
|
+
...a,
|
|
229
|
+
body: a.base64 && globalThis.Buffer ? Buffer.from(a.base64, 'base64') : undefined
|
|
230
|
+
};
|
|
231
|
+
});
|
|
232
|
+
}
|
|
223
233
|
_mergeSuitesInto(jsonSuites, parent) {
|
|
224
234
|
for (const jsonSuite of jsonSuites) {
|
|
225
235
|
let targetSuite = parent.suites.find(s => s.title === jsonSuite.title);
|
|
@@ -237,7 +247,7 @@ class TeleReporterReceiver {
|
|
|
237
247
|
}
|
|
238
248
|
_mergeTestsInto(jsonTests, parent) {
|
|
239
249
|
for (const jsonTest of jsonTests) {
|
|
240
|
-
let targetTest = parent.tests.find(s => s.title === jsonTest.title);
|
|
250
|
+
let targetTest = this._reuseTestCases ? parent.tests.find(s => s.title === jsonTest.title) : undefined;
|
|
241
251
|
if (!targetTest) {
|
|
242
252
|
targetTest = new TeleTestCase(jsonTest.testId, jsonTest.title, this._absoluteLocation(jsonTest.location));
|
|
243
253
|
targetTest.parent = parent;
|
package/lib/reporters/blob.js
CHANGED
|
@@ -29,7 +29,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
29
29
|
|
|
30
30
|
class BlobReporter extends _teleEmitter.TeleReporterEmitter {
|
|
31
31
|
constructor(options) {
|
|
32
|
-
super(message => this._messages.push(message));
|
|
32
|
+
super(message => this._messages.push(message), false);
|
|
33
33
|
this._messages = [];
|
|
34
34
|
this._options = void 0;
|
|
35
35
|
this._salt = void 0;
|
|
@@ -65,7 +65,7 @@ class BlobReporter extends _teleEmitter.TeleReporterEmitter {
|
|
|
65
65
|
_fs.default.promises.writeFile(this._reportFile, content).catch(e => console.error(`Failed to write report ${this._reportFile}: ${e}`))]);
|
|
66
66
|
}
|
|
67
67
|
_serializeAttachments(attachments) {
|
|
68
|
-
return attachments.map(attachment => {
|
|
68
|
+
return super._serializeAttachments(attachments).map(attachment => {
|
|
69
69
|
if (!attachment.path || !_fs.default.statSync(attachment.path).isFile()) return attachment;
|
|
70
70
|
// Add run guid to avoid clashes between shards.
|
|
71
71
|
const sha1 = (0, _utils.calculateSha1)(attachment.path + this._salt);
|
package/lib/reporters/merge.js
CHANGED
|
@@ -32,7 +32,7 @@ async function createMergedReport(config, dir, reporterDescriptions, resolvePath
|
|
|
32
32
|
const events = await mergeEvents(dir, shardFiles);
|
|
33
33
|
if (resolvePaths) patchAttachmentPaths(events, dir);
|
|
34
34
|
const reporters = await (0, _reporters.createReporters)(config, 'merge', reporterDescriptions);
|
|
35
|
-
const receiver = new _teleReceiver.TeleReporterReceiver(_path.default.sep, new _multiplexer.Multiplexer(reporters), config.config);
|
|
35
|
+
const receiver = new _teleReceiver.TeleReporterReceiver(_path.default.sep, new _multiplexer.Multiplexer(reporters), false, config.config);
|
|
36
36
|
for (const event of events) await receiver.dispatch(event);
|
|
37
37
|
}
|
|
38
38
|
function patchAttachmentPaths(events, resourceDir) {
|
|
@@ -26,10 +26,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
28
|
class TeleReporterEmitter {
|
|
29
|
-
constructor(messageSink) {
|
|
29
|
+
constructor(messageSink, skipBuffers) {
|
|
30
30
|
this._messageSink = void 0;
|
|
31
31
|
this._rootDir = void 0;
|
|
32
|
+
this._skipBuffers = void 0;
|
|
32
33
|
this._messageSink = messageSink;
|
|
34
|
+
this._skipBuffers = skipBuffers;
|
|
33
35
|
}
|
|
34
36
|
onBegin(config, suite) {
|
|
35
37
|
this._rootDir = config.rootDir;
|
|
@@ -201,7 +203,13 @@ class TeleReporterEmitter {
|
|
|
201
203
|
};
|
|
202
204
|
}
|
|
203
205
|
_serializeAttachments(attachments) {
|
|
204
|
-
return attachments
|
|
206
|
+
return attachments.map(a => {
|
|
207
|
+
return {
|
|
208
|
+
...a,
|
|
209
|
+
// There is no Buffer in the browser, so there is no point in sending the data there.
|
|
210
|
+
base64: a.body && !this._skipBuffers ? a.body.toString('base64') : undefined
|
|
211
|
+
};
|
|
212
|
+
});
|
|
205
213
|
}
|
|
206
214
|
_serializeStepStart(step) {
|
|
207
215
|
var _step$parent;
|
package/lib/runner/reporters.js
CHANGED
|
@@ -70,7 +70,7 @@ async function createReporters(config, mode, descriptions) {
|
|
|
70
70
|
const prints = r.printsToStdio ? r.printsToStdio() : true;
|
|
71
71
|
return prints;
|
|
72
72
|
});
|
|
73
|
-
if (reporters.length && !someReporterPrintsToStdio
|
|
73
|
+
if (reporters.length && !someReporterPrintsToStdio) {
|
|
74
74
|
// Add a line/dot/list-mode reporter for convenience.
|
|
75
75
|
// Important to put it first, jsut in case some other reporter stalls onEnd.
|
|
76
76
|
if (mode === 'list') reporters.unshift(new ListModeReporter());else reporters.unshift(!process.env.CI ? new _line.default({
|
package/lib/runner/uiMode.js
CHANGED
|
@@ -155,7 +155,7 @@ class UIMode {
|
|
|
155
155
|
(_this$_transport$send = (_this$_transport = this._transport).sendEvent) === null || _this$_transport$send === void 0 ? void 0 : _this$_transport$send.call(_this$_transport, method, params);
|
|
156
156
|
}
|
|
157
157
|
async _listTests() {
|
|
158
|
-
const listReporter = new _teleEmitter.TeleReporterEmitter(e => this._dispatchEvent(e.method, e.params));
|
|
158
|
+
const listReporter = new _teleEmitter.TeleReporterEmitter(e => this._dispatchEvent(e.method, e.params), true);
|
|
159
159
|
const reporter = new _internalReporter.InternalReporter([listReporter]);
|
|
160
160
|
this._config.cliListOnly = true;
|
|
161
161
|
this._config.testIdMatcher = undefined;
|
|
@@ -179,7 +179,7 @@ class UIMode {
|
|
|
179
179
|
this._config.cliListOnly = false;
|
|
180
180
|
this._config.testIdMatcher = id => !testIdSet || testIdSet.has(id);
|
|
181
181
|
const reporters = await (0, _reporters.createReporters)(this._config, 'ui');
|
|
182
|
-
reporters.push(new _teleEmitter.TeleReporterEmitter(e => this._dispatchEvent(e.method, e.params)));
|
|
182
|
+
reporters.push(new _teleEmitter.TeleReporterEmitter(e => this._dispatchEvent(e.method, e.params), true));
|
|
183
183
|
const reporter = new _internalReporter.InternalReporter(reporters);
|
|
184
184
|
const taskRunner = (0, _tasks.createTaskRunnerForWatch)(this._config, reporter);
|
|
185
185
|
const testRun = new _tasks.TestRun(this._config, reporter);
|
|
@@ -71,7 +71,7 @@ class Fixture {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
// Break the
|
|
74
|
+
// Break the registration function into before/after steps. Create these before/after stacks
|
|
75
75
|
// w/o scopes, and create single mutable step that will be converted into the after step.
|
|
76
76
|
const shouldGenerateStep = !this.registration.hideStep && !this.registration.name.startsWith('_') && !this.registration.option;
|
|
77
77
|
const isInternalFixture = this.registration.location && (0, _util.filterStackFile)(this.registration.location.file);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playwright/test",
|
|
3
|
-
"version": "1.36.0-alpha-jun-
|
|
3
|
+
"version": "1.36.0-alpha-jun-10-2023",
|
|
4
4
|
"description": "A high-level API to automate web browsers",
|
|
5
5
|
"repository": "github:Microsoft/playwright",
|
|
6
6
|
"homepage": "https://playwright.dev",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"license": "Apache-2.0",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@types/node": "*",
|
|
44
|
-
"playwright-core": "1.36.0-alpha-jun-
|
|
44
|
+
"playwright-core": "1.36.0-alpha-jun-10-2023"
|
|
45
45
|
},
|
|
46
46
|
"optionalDependencies": {
|
|
47
47
|
"fsevents": "2.3.2"
|