@serenity-js/jasmine 3.38.0 → 3.39.0
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/CHANGELOG.md +11 -0
- package/README.md +1 -0
- package/esm/SerenityReporterForJasmine.d.ts +11 -1
- package/esm/SerenityReporterForJasmine.d.ts.map +1 -1
- package/esm/SerenityReporterForJasmine.js +39 -6
- package/esm/SerenityReporterForJasmine.js.map +1 -1
- package/esm/bootstrap.d.ts +7 -2
- package/esm/bootstrap.d.ts.map +1 -1
- package/esm/bootstrap.js +99 -13
- package/esm/bootstrap.js.map +1 -1
- package/esm/jasmine/SpecResult.d.ts +10 -1
- package/esm/jasmine/SpecResult.d.ts.map +1 -1
- package/esm/jasmine/SuiteResult.d.ts +10 -1
- package/esm/jasmine/SuiteResult.d.ts.map +1 -1
- package/esm/jasmine/index.d.ts +1 -0
- package/esm/jasmine/index.d.ts.map +1 -1
- package/esm/jasmine/index.js +1 -0
- package/esm/jasmine/index.js.map +1 -1
- package/esm/monkeyPatched.d.ts +4 -0
- package/esm/monkeyPatched.d.ts.map +1 -1
- package/esm/monkeyPatched.js +36 -2
- package/esm/monkeyPatched.js.map +1 -1
- package/lib/SerenityReporterForJasmine.d.ts +11 -1
- package/lib/SerenityReporterForJasmine.d.ts.map +1 -1
- package/lib/SerenityReporterForJasmine.js +39 -6
- package/lib/SerenityReporterForJasmine.js.map +1 -1
- package/lib/bootstrap.d.ts +7 -2
- package/lib/bootstrap.d.ts.map +1 -1
- package/lib/bootstrap.js +99 -13
- package/lib/bootstrap.js.map +1 -1
- package/lib/jasmine/SpecResult.d.ts +10 -1
- package/lib/jasmine/SpecResult.d.ts.map +1 -1
- package/lib/jasmine/SuiteResult.d.ts +10 -1
- package/lib/jasmine/SuiteResult.d.ts.map +1 -1
- package/lib/jasmine/index.d.ts +1 -0
- package/lib/jasmine/index.d.ts.map +1 -1
- package/lib/jasmine/index.js +1 -0
- package/lib/jasmine/index.js.map +1 -1
- package/lib/monkeyPatched.d.ts +4 -0
- package/lib/monkeyPatched.d.ts.map +1 -1
- package/lib/monkeyPatched.js +36 -2
- package/lib/monkeyPatched.js.map +1 -1
- package/package.json +5 -5
- package/src/SerenityReporterForJasmine.ts +55 -9
- package/src/bootstrap.ts +112 -13
- package/src/jasmine/SpecResult.ts +11 -1
- package/src/jasmine/SuiteResult.ts +11 -1
- package/src/jasmine/index.ts +1 -0
- package/src/monkeyPatched.ts +39 -2
|
@@ -16,7 +16,8 @@ class SerenityReporterForJasmine {
|
|
|
16
16
|
describes = [];
|
|
17
17
|
currentSceneId = undefined;
|
|
18
18
|
/**
|
|
19
|
-
* @param
|
|
19
|
+
* @param serenity - The Serenity instance
|
|
20
|
+
* @param requirementsHierarchy - The requirements hierarchy for tagging
|
|
20
21
|
*/
|
|
21
22
|
constructor(serenity, requirementsHierachy) {
|
|
22
23
|
this.serenity = serenity;
|
|
@@ -47,7 +48,8 @@ class SerenityReporterForJasmine {
|
|
|
47
48
|
if (result.failedExpectations.length > 1) {
|
|
48
49
|
result.failedExpectations.forEach(failedExpectation => {
|
|
49
50
|
const sceneId = this.serenity.currentSceneId();
|
|
50
|
-
const
|
|
51
|
+
const location = this.locationOf(result);
|
|
52
|
+
const activityDetails = new index_js_3.ActivityDetails(new index_js_3.Name('Expectation'), new index_js_2.FileSystemLocation(index_js_2.Path.from(location.path), location.line, location.column));
|
|
51
53
|
const activityId = this.serenity.assignNewActivityId(activityDetails);
|
|
52
54
|
this.emit(new index_js_1.TaskStarts(sceneId, activityId, activityDetails, this.serenity.currentTime()), new index_js_1.TaskFinished(sceneId, activityId, activityDetails, this.failureOutcomeFrom(failedExpectation), this.serenity.currentTime()));
|
|
53
55
|
});
|
|
@@ -83,6 +85,34 @@ class SerenityReporterForJasmine {
|
|
|
83
85
|
emit(...events) {
|
|
84
86
|
events.forEach(event => this.serenity.announce(event));
|
|
85
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Extracts location information from a spec or suite result.
|
|
90
|
+
* Supports both Jasmine 5.x and 6.x (location object from monkey-patching).
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
* @param result - The spec or suite result
|
|
94
|
+
* @returns Location object with path, line, and column
|
|
95
|
+
*/
|
|
96
|
+
locationOf(result) {
|
|
97
|
+
// Jasmine 5.x and 6.x with monkey-patching provides location object
|
|
98
|
+
if (result.location) {
|
|
99
|
+
return result.location;
|
|
100
|
+
}
|
|
101
|
+
// Fallback: use filename property if available (Jasmine 6.x without monkey-patching)
|
|
102
|
+
if (result.filename) {
|
|
103
|
+
return {
|
|
104
|
+
path: result.filename,
|
|
105
|
+
line: 0,
|
|
106
|
+
column: 0,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Fallback for edge cases
|
|
110
|
+
return {
|
|
111
|
+
path: 'unknown',
|
|
112
|
+
line: 0,
|
|
113
|
+
column: 0,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
86
116
|
/**
|
|
87
117
|
* @private
|
|
88
118
|
* @param {SpecResult} spec
|
|
@@ -91,8 +121,9 @@ class SerenityReporterForJasmine {
|
|
|
91
121
|
scenarioDetailsOf(spec) {
|
|
92
122
|
const name = this.currentScenarioNameFor(spec.description);
|
|
93
123
|
const featureName = this.currentFeatureNameFor(spec);
|
|
124
|
+
const location = this.locationOf(spec);
|
|
94
125
|
return {
|
|
95
|
-
scenarioDetails: new index_js_3.ScenarioDetails(new index_js_3.Name(index_js_3.Tags.stripFrom(name)), new index_js_3.Category(index_js_3.Tags.stripFrom(featureName)), index_js_2.FileSystemLocation.
|
|
126
|
+
scenarioDetails: new index_js_3.ScenarioDetails(new index_js_3.Name(index_js_3.Tags.stripFrom(name)), new index_js_3.Category(index_js_3.Tags.stripFrom(featureName)), new index_js_2.FileSystemLocation(index_js_2.Path.from(location.path), location.line, location.column)),
|
|
96
127
|
scenarioTags: index_js_3.Tags.from(`${featureName} ${name}`)
|
|
97
128
|
};
|
|
98
129
|
}
|
|
@@ -102,14 +133,16 @@ class SerenityReporterForJasmine {
|
|
|
102
133
|
* @returns {TestSuiteDetails}
|
|
103
134
|
*/
|
|
104
135
|
testSuiteDetailsOf(result) {
|
|
105
|
-
|
|
136
|
+
const location = this.locationOf(result);
|
|
137
|
+
return new index_js_3.TestSuiteDetails(new index_js_3.Name(result.description), new index_js_2.FileSystemLocation(index_js_2.Path.from(location.path), location.line, location.column), new index_js_3.CorrelationId(result.id));
|
|
106
138
|
}
|
|
107
139
|
/**
|
|
108
140
|
* @private
|
|
109
141
|
* @returns {string}
|
|
110
142
|
*/
|
|
111
143
|
currentFeatureNameFor(spec) {
|
|
112
|
-
const
|
|
144
|
+
const location = this.locationOf(spec);
|
|
145
|
+
const path = new index_js_2.Path(location.path);
|
|
113
146
|
return this.describes[0]
|
|
114
147
|
? this.describes[0].description
|
|
115
148
|
: this.serenity.cwd().relative(path).value;
|
|
@@ -137,7 +170,7 @@ class SerenityReporterForJasmine {
|
|
|
137
170
|
return new index_js_3.ImplementationPending(new core_1.ImplementationPendingError(result.pendingReason || ''));
|
|
138
171
|
case 'excluded':
|
|
139
172
|
return new index_js_3.ExecutionSkipped();
|
|
140
|
-
case 'passed':
|
|
173
|
+
case 'passed':
|
|
141
174
|
default:
|
|
142
175
|
return new index_js_3.ExecutionSuccessful();
|
|
143
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerenityReporterForJasmine.js","sourceRoot":"","sources":["../src/SerenityReporterForJasmine.ts"],"names":[],"mappings":";;;AAAA,4CAM2B;AAC3B,oEAc+C;AAE/C,gEAA6E;AAC7E,mEAiB8C;
|
|
1
|
+
{"version":3,"file":"SerenityReporterForJasmine.js","sourceRoot":"","sources":["../src/SerenityReporterForJasmine.ts"],"names":[],"mappings":"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"}
|
package/lib/bootstrap.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { SerenityReporterForJasmine } from './SerenityReporterForJasmine.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Bootstraps the Serenity/JS reporter for Jasmine.
|
|
4
|
+
*
|
|
5
|
+
* This function monkey-patches Jasmine's Suite and Spec constructors
|
|
6
|
+
* so that they provide more accurate location information.
|
|
7
|
+
*
|
|
8
|
+
* For Jasmine 5.x, Suite and Spec are on the jasmine object directly.
|
|
9
|
+
* For Jasmine 6.x, Suite and Spec are in jasmine.private.
|
|
5
10
|
*
|
|
6
11
|
* ## Registering the reporter from the command line
|
|
7
12
|
*
|
package/lib/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,SAAS,CAAC,MAAM,GAAE,gCAAqC,EAAE,OAAO,MAA0B,GAAG,0BAA0B,CA6CtI;AA0ED,MAAM,WAAW,gCAAgC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
package/lib/bootstrap.js
CHANGED
|
@@ -6,8 +6,13 @@ const index_js_1 = require("@serenity-js/core/lib/io/index.js");
|
|
|
6
6
|
const monkeyPatched_js_1 = require("./monkeyPatched.js");
|
|
7
7
|
const SerenityReporterForJasmine_js_1 = require("./SerenityReporterForJasmine.js");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Bootstraps the Serenity/JS reporter for Jasmine.
|
|
10
|
+
*
|
|
11
|
+
* This function monkey-patches Jasmine's Suite and Spec constructors
|
|
12
|
+
* so that they provide more accurate location information.
|
|
13
|
+
*
|
|
14
|
+
* For Jasmine 5.x, Suite and Spec are on the jasmine object directly.
|
|
15
|
+
* For Jasmine 6.x, Suite and Spec are in jasmine.private.
|
|
11
16
|
*
|
|
12
17
|
* ## Registering the reporter from the command line
|
|
13
18
|
*
|
|
@@ -28,19 +33,100 @@ const SerenityReporterForJasmine_js_1 = require("./SerenityReporterForJasmine.js
|
|
|
28
33
|
* the global.jasmine instance
|
|
29
34
|
*/
|
|
30
35
|
function bootstrap(config = {}, jasmine = global.jasmine) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
// Jasmine 6+ moved Suite and Spec to jasmine.private,
|
|
37
|
+
// so we check both locations for backwards compatibility
|
|
38
|
+
const Suite = jasmine.Suite || jasmine.private?.Suite;
|
|
39
|
+
const Spec = jasmine.Spec || jasmine.private?.Spec;
|
|
40
|
+
if (Suite && Spec) {
|
|
41
|
+
// Monkey-patch Suite and Spec to capture location info
|
|
42
|
+
const wrappers = {
|
|
43
|
+
expectationResultFactory: originalExpectationResultFactory => ((attributes) => {
|
|
44
|
+
const result = originalExpectationResultFactory(attributes);
|
|
45
|
+
if (!attributes.passed && attributes.error instanceof core_1.RuntimeError) {
|
|
46
|
+
result.stack = attributes.error.stack;
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
// Jasmine 5.x: Suite and Spec are on jasmine directly
|
|
52
|
+
if (jasmine.Suite && jasmine.Spec) {
|
|
53
|
+
jasmine.Suite = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.Suite, wrappers);
|
|
54
|
+
jasmine.Spec = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.Spec, wrappers);
|
|
55
|
+
}
|
|
56
|
+
// Jasmine 6+: Suite and Spec are in jasmine.private
|
|
57
|
+
else if (jasmine.private?.Suite && jasmine.private?.Spec) {
|
|
58
|
+
jasmine.private.Suite = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.private.Suite, wrappers);
|
|
59
|
+
jasmine.private.Spec = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.private.Spec, wrappers);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// For Jasmine 6+, patch the Expector and buildExpectationResult to restore expected/actual values
|
|
63
|
+
// This is needed because Jasmine 6 removed these from expectation results
|
|
64
|
+
patchBuildExpectationResultForExpectedActual(jasmine);
|
|
65
|
+
patchExpectorForExpectedActual(jasmine);
|
|
42
66
|
const cwd = index_js_1.Path.from(process.cwd());
|
|
43
67
|
const requirementsHierarchy = new index_js_1.RequirementsHierarchy(new index_js_1.FileSystem(cwd), config?.specDirectory && cwd.resolve(index_js_1.Path.from(config?.specDirectory)));
|
|
44
68
|
return new SerenityReporterForJasmine_js_1.SerenityReporterForJasmine(core_1.serenity, requirementsHierarchy);
|
|
45
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Patches Jasmine's buildExpectationResult to include expected/actual values
|
|
72
|
+
* in the expectation result. This restores functionality that was removed in Jasmine 6.
|
|
73
|
+
*
|
|
74
|
+
* In Jasmine 6, the buildExpectationResult function no longer includes expected/actual
|
|
75
|
+
* values in the result object. This patch wraps the function to preserve these values
|
|
76
|
+
* when they are provided.
|
|
77
|
+
*
|
|
78
|
+
* @param jasmine - The global jasmine instance
|
|
79
|
+
*/
|
|
80
|
+
function patchBuildExpectationResultForExpectedActual(jasmine) {
|
|
81
|
+
// Access the private buildExpectationResult function
|
|
82
|
+
const originalBuildExpectationResult = jasmine?.private?.buildExpectationResult;
|
|
83
|
+
if (!originalBuildExpectationResult) {
|
|
84
|
+
// buildExpectationResult not available, skip
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
jasmine.private.buildExpectationResult = function (options) {
|
|
88
|
+
const result = originalBuildExpectationResult(options);
|
|
89
|
+
// Restore expected/actual values that Jasmine 6 removed
|
|
90
|
+
if (options.expected !== undefined) {
|
|
91
|
+
result.expected = options.expected;
|
|
92
|
+
}
|
|
93
|
+
if (options.actual !== undefined) {
|
|
94
|
+
result.actual = options.actual;
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Patches Jasmine's Expector.prototype.processResult to include expected/actual values
|
|
101
|
+
* when calling addExpectationResult. This ensures the values are passed to
|
|
102
|
+
* buildExpectationResult.
|
|
103
|
+
*
|
|
104
|
+
* @param jasmine - The global jasmine instance
|
|
105
|
+
*/
|
|
106
|
+
function patchExpectorForExpectedActual(jasmine) {
|
|
107
|
+
// Access the private Expector class through jasmine's internal structure
|
|
108
|
+
// In Jasmine 6+, Expector is in jasmine.private.Expector
|
|
109
|
+
const Expector = jasmine?.private?.Expector;
|
|
110
|
+
if (!Expector || !Expector.prototype || !Expector.prototype.processResult) {
|
|
111
|
+
// Expector not available, skip
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
Expector.prototype.processResult = function (result, errorForStack) {
|
|
115
|
+
const message = this.buildMessage(result);
|
|
116
|
+
let expected = this.expected;
|
|
117
|
+
if (Array.isArray(expected) && expected.length === 1) {
|
|
118
|
+
expected = expected[0];
|
|
119
|
+
}
|
|
120
|
+
this.addExpectationResult(result.pass, {
|
|
121
|
+
matcherName: this.matcherName,
|
|
122
|
+
passed: result.pass,
|
|
123
|
+
message: message,
|
|
124
|
+
error: errorForStack ? undefined : result.error,
|
|
125
|
+
errorForStack: errorForStack || undefined,
|
|
126
|
+
// Include expected/actual values that Jasmine 6 removed
|
|
127
|
+
expected: expected,
|
|
128
|
+
actual: this.actual,
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
}
|
|
46
132
|
//# sourceMappingURL=bootstrap.js.map
|
package/lib/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,15 @@ export interface SpecResult {
|
|
|
19
19
|
status?: string;
|
|
20
20
|
/** The time in ms used by the spec execution, including any before/afterEach. */
|
|
21
21
|
duration: number | null;
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* The file system location of the spec.
|
|
24
|
+
* Available in Jasmine 5.x and earlier when monkey-patched by Serenity/JS.
|
|
25
|
+
*/
|
|
26
|
+
location?: Location;
|
|
27
|
+
/**
|
|
28
|
+
* The filename where the spec is defined.
|
|
29
|
+
* Available in Jasmine 6.x and later.
|
|
30
|
+
*/
|
|
31
|
+
filename?: string;
|
|
23
32
|
}
|
|
24
33
|
//# sourceMappingURL=SpecResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpecResult.d.ts","sourceRoot":"","sources":["../../src/jasmine/SpecResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,UAAU;IACvB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IAEX,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,iFAAiF;IACjF,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAEnC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IAEtB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,QAAQ,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"SpecResult.d.ts","sourceRoot":"","sources":["../../src/jasmine/SpecResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,UAAU;IACvB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IAEX,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,iFAAiF;IACjF,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAEnC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IAEtB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -20,6 +20,15 @@ export interface SuiteResult extends Result {
|
|
|
20
20
|
status?: string;
|
|
21
21
|
/** The time in ms for Suite execution, including any before/afterAll, before/afterEach. */
|
|
22
22
|
duration: number | null;
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* The file system location of the suite.
|
|
25
|
+
* Available in Jasmine 5.x and earlier when monkey-patched by Serenity/JS.
|
|
26
|
+
*/
|
|
27
|
+
location?: Location;
|
|
28
|
+
/**
|
|
29
|
+
* The filename where the suite is defined.
|
|
30
|
+
* Available in Jasmine 6.x and later.
|
|
31
|
+
*/
|
|
32
|
+
filename?: string;
|
|
24
33
|
}
|
|
25
34
|
//# sourceMappingURL=SuiteResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuiteResult.d.ts","sourceRoot":"","sources":["../../src/jasmine/SuiteResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM;IACvC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IAEpB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,oEAAoE;IACpE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAEnC,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,QAAQ,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"SuiteResult.d.ts","sourceRoot":"","sources":["../../src/jasmine/SuiteResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM;IACvC,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IAEX,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IAEpB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAElC,oEAAoE;IACpE,mBAAmB,EAAE,WAAW,EAAE,CAAC;IAEnC,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/lib/jasmine/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './Expectation.js';
|
|
|
2
2
|
export * from './JasmineDoneInfo.js';
|
|
3
3
|
export * from './JasmineReporter.js';
|
|
4
4
|
export * from './JasmineStartedInfo.js';
|
|
5
|
+
export * from './Location.js';
|
|
5
6
|
export * from './Order.js';
|
|
6
7
|
export * from './SpecResult.js';
|
|
7
8
|
export * from './SuiteResult.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jasmine/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jasmine/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
package/lib/jasmine/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./Expectation.js"), exports);
|
|
|
18
18
|
__exportStar(require("./JasmineDoneInfo.js"), exports);
|
|
19
19
|
__exportStar(require("./JasmineReporter.js"), exports);
|
|
20
20
|
__exportStar(require("./JasmineStartedInfo.js"), exports);
|
|
21
|
+
__exportStar(require("./Location.js"), exports);
|
|
21
22
|
__exportStar(require("./Order.js"), exports);
|
|
22
23
|
__exportStar(require("./SpecResult.js"), exports);
|
|
23
24
|
__exportStar(require("./SuiteResult.js"), exports);
|
package/lib/jasmine/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jasmine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,6CAA2B;AAC3B,kDAAgC;AAChC,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jasmine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,gDAA8B;AAC9B,6CAA2B;AAC3B,kDAAgC;AAChC,mDAAiC"}
|
package/lib/monkeyPatched.d.ts
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This helps to make reporting more accurate.
|
|
6
6
|
*
|
|
7
|
+
* For Jasmine 5.x, the location is stored on instance.result.location.
|
|
8
|
+
* For Jasmine 6.x, the location is stored on instance._serenityLocation and
|
|
9
|
+
* injected into the result events via patched startedEvent/doneEvent methods.
|
|
10
|
+
*
|
|
7
11
|
* @param jasmineConstructor - A Jasmine constructor function to be patched
|
|
8
12
|
* @param {object} wrappers - Attributes to wrap when the monkey-patched Jasmine constructor is invoked
|
|
9
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monkeyPatched.d.ts","sourceRoot":"","sources":["../src/monkeyPatched.ts"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"monkeyPatched.d.ts","sourceRoot":"","sources":["../src/monkeyPatched.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CACzB,kBAAkB,EAAE,GAAG,EACvB,QAAQ,GAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CAAM,WAE/C,MAAM,SAmDtD"}
|
package/lib/monkeyPatched.js
CHANGED
|
@@ -3,13 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.monkeyPatched = monkeyPatched;
|
|
4
4
|
const index_js_1 = require("@serenity-js/core/lib/errors/index.js");
|
|
5
5
|
const parser = new index_js_1.ErrorStackParser();
|
|
6
|
-
/* eslint-disable @typescript-eslint/explicit-module-boundary-types
|
|
6
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
7
7
|
/**
|
|
8
8
|
* Monkey-patches Jasmine domain model constructors so that they
|
|
9
9
|
* record information about the file system location of the caller function.
|
|
10
10
|
*
|
|
11
11
|
* This helps to make reporting more accurate.
|
|
12
12
|
*
|
|
13
|
+
* For Jasmine 5.x, the location is stored on instance.result.location.
|
|
14
|
+
* For Jasmine 6.x, the location is stored on instance._serenityLocation and
|
|
15
|
+
* injected into the result events via patched startedEvent/doneEvent methods.
|
|
16
|
+
*
|
|
13
17
|
* @param jasmineConstructor - A Jasmine constructor function to be patched
|
|
14
18
|
* @param {object} wrappers - Attributes to wrap when the monkey-patched Jasmine constructor is invoked
|
|
15
19
|
*/
|
|
@@ -19,7 +23,37 @@ function monkeyPatched(jasmineConstructor, wrappers = {}) {
|
|
|
19
23
|
attrs[key] = wrappers[key](attrs[key]);
|
|
20
24
|
});
|
|
21
25
|
const instance = new jasmineConstructor(attrs);
|
|
22
|
-
|
|
26
|
+
const location = callerLocation();
|
|
27
|
+
// Jasmine 5.x: instance.result exists, store location there
|
|
28
|
+
if (instance.result) {
|
|
29
|
+
instance.result.location = location;
|
|
30
|
+
}
|
|
31
|
+
// Jasmine 6.x: store location on instance and patch event methods
|
|
32
|
+
else {
|
|
33
|
+
instance._serenityLocation = location;
|
|
34
|
+
// Patch startedEvent to include location
|
|
35
|
+
if (typeof instance.startedEvent === 'function') {
|
|
36
|
+
const originalStartedEvent = instance.startedEvent.bind(instance);
|
|
37
|
+
instance.startedEvent = function () {
|
|
38
|
+
const event = originalStartedEvent();
|
|
39
|
+
if (event && instance._serenityLocation) {
|
|
40
|
+
event.location = instance._serenityLocation;
|
|
41
|
+
}
|
|
42
|
+
return event;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Patch doneEvent to include location
|
|
46
|
+
if (typeof instance.doneEvent === 'function') {
|
|
47
|
+
const originalDoneEvent = instance.doneEvent.bind(instance);
|
|
48
|
+
instance.doneEvent = function () {
|
|
49
|
+
const event = originalDoneEvent();
|
|
50
|
+
if (event && instance._serenityLocation) {
|
|
51
|
+
event.location = instance._serenityLocation;
|
|
52
|
+
}
|
|
53
|
+
return event;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
23
57
|
return instance;
|
|
24
58
|
};
|
|
25
59
|
Object.getOwnPropertyNames(jasmineConstructor)
|
package/lib/monkeyPatched.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monkeyPatched.js","sourceRoot":"","sources":["../src/monkeyPatched.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"monkeyPatched.js","sourceRoot":"","sources":["../src/monkeyPatched.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serenity-js/jasmine",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.39.0",
|
|
4
4
|
"description": "Serenity/JS test runner adapter for Jasmine, enabling the use of the Screenplay Pattern in Jasmine-based test suites and leveraging Serenity/JS reporting capabilities",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jan Molak",
|
|
@@ -75,19 +75,19 @@
|
|
|
75
75
|
"node": "^20 || ^22 || ^24"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@serenity-js/core": "3.
|
|
78
|
+
"@serenity-js/core": "3.39.0"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
-
"jasmine": "^5.13.0"
|
|
81
|
+
"jasmine": "^5.13.0 || ^6.0.0"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
84
|
"@integration/testing-tools": "3.0.0",
|
|
85
85
|
"@types/chai": "4.3.20",
|
|
86
86
|
"@types/mocha": "10.0.10",
|
|
87
87
|
"c8": "10.1.3",
|
|
88
|
-
"jasmine": "
|
|
88
|
+
"jasmine": "6.0.0",
|
|
89
89
|
"mocha": "11.7.5",
|
|
90
90
|
"mocha-multi": "1.1.7"
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "253c63474dd24f3850a0f34b6d5f42559049a25c"
|
|
93
93
|
}
|
|
@@ -46,6 +46,7 @@ import type {
|
|
|
46
46
|
JasmineDoneInfo,
|
|
47
47
|
JasmineReporter,
|
|
48
48
|
JasmineStartedInfo,
|
|
49
|
+
Location,
|
|
49
50
|
SpecResult,
|
|
50
51
|
SuiteResult
|
|
51
52
|
} from './jasmine/index.js';
|
|
@@ -62,11 +63,12 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
62
63
|
private currentSceneId: CorrelationId = undefined;
|
|
63
64
|
|
|
64
65
|
/**
|
|
65
|
-
* @param
|
|
66
|
+
* @param serenity - The Serenity instance
|
|
67
|
+
* @param requirementsHierarchy - The requirements hierarchy for tagging
|
|
66
68
|
*/
|
|
67
69
|
constructor(
|
|
68
70
|
private readonly serenity: Serenity,
|
|
69
|
-
private readonly requirementsHierachy: RequirementsHierarchy
|
|
71
|
+
private readonly requirementsHierachy: RequirementsHierarchy,
|
|
70
72
|
) {
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -112,12 +114,13 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
112
114
|
if (result.failedExpectations.length > 1) {
|
|
113
115
|
result.failedExpectations.forEach(failedExpectation => {
|
|
114
116
|
const sceneId = this.serenity.currentSceneId();
|
|
117
|
+
const location = this.locationOf(result);
|
|
115
118
|
const activityDetails = new ActivityDetails(
|
|
116
119
|
new Name('Expectation'),
|
|
117
120
|
new FileSystemLocation(
|
|
118
|
-
Path.from(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
Path.from(location.path),
|
|
122
|
+
location.line,
|
|
123
|
+
location.column,
|
|
121
124
|
),
|
|
122
125
|
);
|
|
123
126
|
|
|
@@ -185,6 +188,37 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
185
188
|
events.forEach(event => this.serenity.announce(event));
|
|
186
189
|
}
|
|
187
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Extracts location information from a spec or suite result.
|
|
193
|
+
* Supports both Jasmine 5.x and 6.x (location object from monkey-patching).
|
|
194
|
+
*
|
|
195
|
+
* @private
|
|
196
|
+
* @param result - The spec or suite result
|
|
197
|
+
* @returns Location object with path, line, and column
|
|
198
|
+
*/
|
|
199
|
+
private locationOf(result: SpecResult | SuiteResult): Location {
|
|
200
|
+
// Jasmine 5.x and 6.x with monkey-patching provides location object
|
|
201
|
+
if (result.location) {
|
|
202
|
+
return result.location;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Fallback: use filename property if available (Jasmine 6.x without monkey-patching)
|
|
206
|
+
if (result.filename) {
|
|
207
|
+
return {
|
|
208
|
+
path: result.filename,
|
|
209
|
+
line: 0,
|
|
210
|
+
column: 0,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Fallback for edge cases
|
|
215
|
+
return {
|
|
216
|
+
path: 'unknown',
|
|
217
|
+
line: 0,
|
|
218
|
+
column: 0,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
188
222
|
/**
|
|
189
223
|
* @private
|
|
190
224
|
* @param {SpecResult} spec
|
|
@@ -193,12 +227,17 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
193
227
|
private scenarioDetailsOf(spec: SpecResult): { scenarioDetails: ScenarioDetails, scenarioTags: Tag[] } {
|
|
194
228
|
const name = this.currentScenarioNameFor(spec.description);
|
|
195
229
|
const featureName = this.currentFeatureNameFor(spec);
|
|
230
|
+
const location = this.locationOf(spec);
|
|
196
231
|
|
|
197
232
|
return {
|
|
198
233
|
scenarioDetails: new ScenarioDetails(
|
|
199
234
|
new Name(Tags.stripFrom(name)),
|
|
200
235
|
new Category(Tags.stripFrom(featureName)),
|
|
201
|
-
FileSystemLocation
|
|
236
|
+
new FileSystemLocation(
|
|
237
|
+
Path.from(location.path),
|
|
238
|
+
location.line,
|
|
239
|
+
location.column,
|
|
240
|
+
),
|
|
202
241
|
),
|
|
203
242
|
scenarioTags: Tags.from(`${ featureName } ${ name }`)
|
|
204
243
|
};
|
|
@@ -210,9 +249,15 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
210
249
|
* @returns {TestSuiteDetails}
|
|
211
250
|
*/
|
|
212
251
|
private testSuiteDetailsOf(result: SuiteResult): TestSuiteDetails {
|
|
252
|
+
const location = this.locationOf(result);
|
|
253
|
+
|
|
213
254
|
return new TestSuiteDetails(
|
|
214
255
|
new Name(result.description),
|
|
215
|
-
FileSystemLocation
|
|
256
|
+
new FileSystemLocation(
|
|
257
|
+
Path.from(location.path),
|
|
258
|
+
location.line,
|
|
259
|
+
location.column,
|
|
260
|
+
),
|
|
216
261
|
new CorrelationId(result.id),
|
|
217
262
|
);
|
|
218
263
|
}
|
|
@@ -222,7 +267,8 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
222
267
|
* @returns {string}
|
|
223
268
|
*/
|
|
224
269
|
private currentFeatureNameFor(spec: SpecResult): string {
|
|
225
|
-
const
|
|
270
|
+
const location = this.locationOf(spec);
|
|
271
|
+
const path = new Path(location.path);
|
|
226
272
|
|
|
227
273
|
return this.describes[0]
|
|
228
274
|
? this.describes[0].description
|
|
@@ -254,7 +300,7 @@ export class SerenityReporterForJasmine implements JasmineReporter {
|
|
|
254
300
|
return new ImplementationPending(new ImplementationPendingError((result as any).pendingReason || ''));
|
|
255
301
|
case 'excluded':
|
|
256
302
|
return new ExecutionSkipped();
|
|
257
|
-
case 'passed':
|
|
303
|
+
case 'passed':
|
|
258
304
|
default:
|
|
259
305
|
return new ExecutionSuccessful();
|
|
260
306
|
}
|