@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.
Files changed (49) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -0
  3. package/esm/SerenityReporterForJasmine.d.ts +11 -1
  4. package/esm/SerenityReporterForJasmine.d.ts.map +1 -1
  5. package/esm/SerenityReporterForJasmine.js +39 -6
  6. package/esm/SerenityReporterForJasmine.js.map +1 -1
  7. package/esm/bootstrap.d.ts +7 -2
  8. package/esm/bootstrap.d.ts.map +1 -1
  9. package/esm/bootstrap.js +99 -13
  10. package/esm/bootstrap.js.map +1 -1
  11. package/esm/jasmine/SpecResult.d.ts +10 -1
  12. package/esm/jasmine/SpecResult.d.ts.map +1 -1
  13. package/esm/jasmine/SuiteResult.d.ts +10 -1
  14. package/esm/jasmine/SuiteResult.d.ts.map +1 -1
  15. package/esm/jasmine/index.d.ts +1 -0
  16. package/esm/jasmine/index.d.ts.map +1 -1
  17. package/esm/jasmine/index.js +1 -0
  18. package/esm/jasmine/index.js.map +1 -1
  19. package/esm/monkeyPatched.d.ts +4 -0
  20. package/esm/monkeyPatched.d.ts.map +1 -1
  21. package/esm/monkeyPatched.js +36 -2
  22. package/esm/monkeyPatched.js.map +1 -1
  23. package/lib/SerenityReporterForJasmine.d.ts +11 -1
  24. package/lib/SerenityReporterForJasmine.d.ts.map +1 -1
  25. package/lib/SerenityReporterForJasmine.js +39 -6
  26. package/lib/SerenityReporterForJasmine.js.map +1 -1
  27. package/lib/bootstrap.d.ts +7 -2
  28. package/lib/bootstrap.d.ts.map +1 -1
  29. package/lib/bootstrap.js +99 -13
  30. package/lib/bootstrap.js.map +1 -1
  31. package/lib/jasmine/SpecResult.d.ts +10 -1
  32. package/lib/jasmine/SpecResult.d.ts.map +1 -1
  33. package/lib/jasmine/SuiteResult.d.ts +10 -1
  34. package/lib/jasmine/SuiteResult.d.ts.map +1 -1
  35. package/lib/jasmine/index.d.ts +1 -0
  36. package/lib/jasmine/index.d.ts.map +1 -1
  37. package/lib/jasmine/index.js +1 -0
  38. package/lib/jasmine/index.js.map +1 -1
  39. package/lib/monkeyPatched.d.ts +4 -0
  40. package/lib/monkeyPatched.d.ts.map +1 -1
  41. package/lib/monkeyPatched.js +36 -2
  42. package/lib/monkeyPatched.js.map +1 -1
  43. package/package.json +5 -5
  44. package/src/SerenityReporterForJasmine.ts +55 -9
  45. package/src/bootstrap.ts +112 -13
  46. package/src/jasmine/SpecResult.ts +11 -1
  47. package/src/jasmine/SuiteResult.ts +11 -1
  48. package/src/jasmine/index.ts +1 -0
  49. package/src/monkeyPatched.ts +39 -2
@@ -16,7 +16,8 @@ class SerenityReporterForJasmine {
16
16
  describes = [];
17
17
  currentSceneId = undefined;
18
18
  /**
19
- * @param {Serenity} serenity
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 activityDetails = new index_js_3.ActivityDetails(new index_js_3.Name('Expectation'), new index_js_2.FileSystemLocation(index_js_2.Path.from(result.location.path), result.location.line, result.location.column));
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.fromJSON(spec.location)),
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
- return new index_js_3.TestSuiteDetails(new index_js_3.Name(result.description), index_js_2.FileSystemLocation.fromJSON(result.location), new index_js_3.CorrelationId(result.id));
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 path = new index_js_2.Path(spec.location.path);
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': // eslint-disable-line unicorn/no-useless-switch-case
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;AAW9C;;;GAGG;AACH,MAAa,0BAA0B;IAWd;IACA;IAVb,MAAM,CAAU,mBAAmB,GAAG,0BAA0B,CAAC;IACjE,SAAS,GAAkB,EAAE,CAAC;IAE9B,cAAc,GAAkB,SAAS,CAAC;IAElD;;OAEG;IACH,YACqB,QAAkB,EAClB,oBAA2C;QAD3C,aAAQ,GAAR,QAAQ,CAAU;QAClB,yBAAoB,GAApB,oBAAoB,CAAuB;IAEhE,CAAC;IAED,cAAc,CAAC,IAAwB;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,MAAmB;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,IAAI,0BAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,SAAS,CAAC,MAAmB;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,IAAI,CAAC,IAAI,4BAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,WAAW,CAAC,MAAkB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAEvD,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CACL,IAAI,sBAAW,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAElF,GAAI,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;aAC9H,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,sBAAW,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAEvF,IAAI,6BAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,eAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAE7F,GAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,sBAAW,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CACtG,CAAC;IACN,CAAC;IAED,QAAQ,CAAC,MAAkB;QAEvB;;;WAGG;QACH,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC/C,MAAM,eAAe,GAAG,IAAI,0BAAe,CACvC,IAAI,eAAI,CAAC,aAAa,CAAC,EACvB,IAAI,6BAAkB,CAClB,eAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,MAAM,CAAC,QAAQ,CAAC,MAAM,CACzB,CACJ,CAAC;gBAEF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;gBAEtE,IAAI,CAAC,IAAI,CACL,IAAI,qBAAU,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EACjF,IAAI,uBAAY,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAClI,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MACI,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EACpD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAa,CACvB,IAAI,CAAC,cAAc,EACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC9B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;aAChC,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAa,CACvB,IAAI,CAAC,cAAc,EACnB,eAAe,EACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC9B,CAAC,CAAC;QACP,CAAC,EAAE,KAAK,CAAC,EAAE;YACP,MAAM,YAAY,GAAG,IAAI,mCAAwB,CAAC,KAAK,CAAC,CAAC;YAEzD,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAa,CACvB,IAAI,CAAC,cAAc,EACnB,eAAe,EACf,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC7B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,OAAO,EACb,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC9B,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW,CAAC,SAA0B;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,0BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;aAChC,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,IAAI,0BAAe,CAAC,IAAI,8BAAmB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,IAAI,0BAAe,CAAC,IAAI,mCAAwB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACjG,MAAM,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACK,IAAI,CAAC,GAAG,MAAqB;QACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,IAAgB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO;YACH,eAAe,EAAE,IAAI,0BAAe,CAChC,IAAI,eAAI,CAAC,eAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAC9B,IAAI,mBAAQ,CAAC,eAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EACzC,6BAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAe,CAAC,CACpD;YACD,YAAY,EAAE,eAAI,CAAC,IAAI,CAAC,GAAI,WAAY,IAAK,IAAK,EAAE,CAAC;SACxD,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,MAAmB;QAC1C,OAAO,IAAI,2BAAgB,CACvB,IAAI,eAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAC5B,6BAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAe,CAAC,EACnD,IAAI,wBAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAC/B,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,IAAgB;QAC1C,MAAM,IAAI,GAAG,IAAI,eAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW;YAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,kBAA0B;QACrD,MAAM,CAAE,SAAS,EAAE,GAAG,IAAI,CAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAE9C,OAAO,IAAI,CAAC,OAAO,EAAE;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,GAAI,OAAO,CAAC,WAAY,IAAK,IAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC7F,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,MAAgC;QAChD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,KAAK,SAAS;gBACV,OAAO,IAAI,gCAAqB,CAAC,IAAI,iCAA0B,CAAE,MAAc,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1G,KAAK,UAAU;gBACX,OAAO,IAAI,2BAAgB,EAAE,CAAC;YAClC,KAAK,QAAQ,CAAC,CAAE,qDAAqD;YACrE;gBACI,OAAO,IAAI,8BAAmB,EAAE,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,OAAoB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,KAAK,YAAY,qBAAc,EAAE,CAAC;YAClC,6DAA6D;YAC7D,sFAAsF;YACtF,OAAO,IAAI,4CAAiC,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,YAAY,2BAAoB,EAAE,CAAC;YACxC,OAAO,IAAI,+BAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAuB,gGAAgG;YAC7I,OAAO,IAAI,4CAAiC,CACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAc,EAAE;gBACtC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE;oBACF,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACzB;gBACD,KAAK,EAAE,KAAK;aACf,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,IAAI,mCAAwB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEO,SAAS,CAAC,OAAoB;QAClC,IAAI,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,OAAO,sBAAe,CAAC,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,4DAA4D,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,OAAO,sBAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,sBAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEO,gCAAgC,CAAC,OAAoB;QACzD,OAAO,CAAC,CAAE,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC;IAEO,4DAA4D,CAAC,OAAoB;QACrF,OAAO,CAAC,CAAE,OAAO,CAAC,KAAK;eAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC;eAC9C,0BAA0B,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;IAEO,kCAAkC,CAAC,OAAoB;QAC3D,OAAO,CAAC,CAAE,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpG,CAAC;IAED;;;;;;;;;;;OAWG;IACK,oBAAoB,CAAC,OAAoB;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAE/F,OAAO;YACH,OAAO,CAAC,OAAO;YACf,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;;AAlSL,gEAmSC"}
1
+ {"version":3,"file":"SerenityReporterForJasmine.js","sourceRoot":"","sources":["../src/SerenityReporterForJasmine.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { SerenityReporterForJasmine } from './SerenityReporterForJasmine.js';
2
2
  /**
3
- * Monkey-patches Jasmine's Suite and Spec so that they provide more accurate information,
4
- * and returns a bootstrapped instance of the [`SerenityReporterForJasmine`](https://serenity-js.org/api/jasmine/function/default/) to be registered with Jasmine.
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
  *
@@ -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;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,MAAM,GAAE,gCAAqC,EAAE,OAAO,MAA0B,GAAG,0BAA0B,CAuBtI;AAED,MAAM,WAAW,gCAAgC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B"}
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
- * Monkey-patches Jasmine's Suite and Spec so that they provide more accurate information,
10
- * and returns a bootstrapped instance of the [`SerenityReporterForJasmine`](https://serenity-js.org/api/jasmine/function/default/) to be registered with Jasmine.
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
- const wrappers = {
32
- expectationResultFactory: originalExpectationResultFactory => ((attributes) => {
33
- const result = originalExpectationResultFactory(attributes);
34
- if (!attributes.passed && attributes.error instanceof core_1.RuntimeError) {
35
- result.stack = attributes.error.stack;
36
- }
37
- return result;
38
- }),
39
- };
40
- jasmine.Suite = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.Suite, wrappers);
41
- jasmine.Spec = (0, monkeyPatched_js_1.monkeyPatched)(jasmine.Spec, wrappers);
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
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;AA4BA,8BAuBC;AAnDD,4CAA2D;AAC3D,gEAA4F;AAE5F,yDAAmD;AACnD,mFAA6E;AAE7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,SAAS,CAAC,SAA2C,EAAE,EAAE,UAAW,MAAc,CAAC,OAAO;IACtG,MAAM,QAAQ,GAAG;QACb,wBAAwB,EAAE,gCAAgC,CAAC,EAAE,CAAC,CAAC,CAAC,UAA6C,EAAE,EAAE;YAC7G,MAAM,MAAM,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAI,CAAE,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,YAAY,mBAAY,EAAE,CAAC;gBAClE,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;KACL,CAAC;IAEF,OAAO,CAAC,KAAK,GAAG,IAAA,gCAAa,EAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,GAAG,IAAA,gCAAa,EAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,eAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,MAAM,qBAAqB,GAAG,IAAI,gCAAqB,CACnD,IAAI,qBAAU,CAAC,GAAG,CAAC,EACnB,MAAM,EAAE,aAAa,IAAI,GAAG,CAAC,OAAO,CAAC,eAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CACzE,CAAC;IAEF,OAAO,IAAI,0DAA0B,CAAC,eAAQ,EAAE,qBAAqB,CAAC,CAAC;AAC3E,CAAC"}
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
- location: Location;
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;CACtB"}
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
- location: Location;
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;CACtB"}
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"}
@@ -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"}
@@ -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);
@@ -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"}
@@ -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;;;;;;;;GAQG;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,SAkBtD"}
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"}
@@ -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, @typescript-eslint/ban-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
- instance.result.location = callerLocation();
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)
@@ -1 +1 @@
1
- {"version":3,"file":"monkeyPatched.js","sourceRoot":"","sources":["../src/monkeyPatched.ts"],"names":[],"mappings":";;AAeA,sCAsBC;AArCD,oEAAyE;AAEzE,MAAM,MAAM,GAAG,IAAI,2BAAgB,EAAE,CAAC;AAEtC,oGAAoG;AAEpG;;;;;;;;GAQG;AACH,SAAgB,aAAa,CACzB,kBAAuB,EACvB,WAA0F,EAAE;IAE5F,MAAM,MAAM,GAAG,SAAS,aAAa,CAAC,KAAa;QAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC;QAE5C,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;SACzC,MAAM,CAAC,iBAAiB,CAAC;SACzB,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,MAAM,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,gBAAgB;AAEhB;;;;GAIG;AACH,SAAS,cAAc;IACnB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,MAAM;SACf,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACxD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE7F,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAEhF,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,MAAM,EAAE,MAAM,CAAC,YAAY;KAC9B,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,QAAgB;IACvC,OAAO,CAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvF,CAAC"}
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.38.0",
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.38.0"
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": "5.13.0",
88
+ "jasmine": "6.0.0",
89
89
  "mocha": "11.7.5",
90
90
  "mocha-multi": "1.1.7"
91
91
  },
92
- "gitHead": "d86152afd35fb815038b3a153e8c53a0b023e4b3"
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 {Serenity} serenity
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(result.location.path),
119
- result.location.line,
120
- result.location.column,
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.fromJSON(spec.location as any),
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.fromJSON(result.location as any),
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 path = new Path(spec.location.path);
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': // eslint-disable-line unicorn/no-useless-switch-case
303
+ case 'passed':
258
304
  default:
259
305
  return new ExecutionSuccessful();
260
306
  }