@serenity-js/jasmine 3.11.0 → 3.12.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 +20 -0
- package/esm/SerenityReporterForJasmine.d.ts +80 -0
- package/esm/SerenityReporterForJasmine.d.ts.map +1 -0
- package/esm/SerenityReporterForJasmine.js +201 -0
- package/esm/SerenityReporterForJasmine.js.map +1 -0
- package/esm/adapter/JasmineAdapter.d.ts +46 -0
- package/esm/adapter/JasmineAdapter.d.ts.map +1 -0
- package/esm/adapter/JasmineAdapter.js +116 -0
- package/esm/adapter/JasmineAdapter.js.map +1 -0
- package/esm/adapter/JasmineConfig.d.ts +82 -0
- package/esm/adapter/JasmineConfig.d.ts.map +1 -0
- package/esm/adapter/JasmineConfig.js +2 -0
- package/esm/adapter/JasmineConfig.js.map +1 -0
- package/esm/adapter/filters/AcceptingSpecFilter.d.ts +8 -0
- package/esm/adapter/filters/AcceptingSpecFilter.d.ts.map +1 -0
- package/esm/adapter/filters/AcceptingSpecFilter.js +9 -0
- package/esm/adapter/filters/AcceptingSpecFilter.js.map +1 -0
- package/esm/adapter/filters/CustomFunctionSpecFilter.d.ts +10 -0
- package/esm/adapter/filters/CustomFunctionSpecFilter.d.ts.map +1 -0
- package/esm/adapter/filters/CustomFunctionSpecFilter.js +12 -0
- package/esm/adapter/filters/CustomFunctionSpecFilter.js.map +1 -0
- package/esm/adapter/filters/GrepSpecFilter.d.ts +13 -0
- package/esm/adapter/filters/GrepSpecFilter.d.ts.map +1 -0
- package/esm/adapter/filters/GrepSpecFilter.js +15 -0
- package/esm/adapter/filters/GrepSpecFilter.js.map +1 -0
- package/esm/adapter/filters/InvertedGrepSpecFilter.d.ts +10 -0
- package/esm/adapter/filters/InvertedGrepSpecFilter.d.ts.map +1 -0
- package/esm/adapter/filters/InvertedGrepSpecFilter.js +12 -0
- package/esm/adapter/filters/InvertedGrepSpecFilter.js.map +1 -0
- package/esm/adapter/filters/SpecFilter.d.ts +7 -0
- package/esm/adapter/filters/SpecFilter.d.ts.map +1 -0
- package/esm/adapter/filters/SpecFilter.js +2 -0
- package/esm/adapter/filters/SpecFilter.js.map +1 -0
- package/esm/adapter/filters/index.d.ts +6 -0
- package/esm/adapter/filters/index.d.ts.map +1 -0
- package/esm/adapter/filters/index.js +6 -0
- package/esm/adapter/filters/index.js.map +1 -0
- package/esm/adapter/index.d.ts +3 -0
- package/esm/adapter/index.d.ts.map +1 -0
- package/esm/adapter/index.js +3 -0
- package/esm/adapter/index.js.map +1 -0
- package/esm/bootstrap.d.ts +27 -0
- package/esm/bootstrap.d.ts.map +1 -0
- package/esm/bootstrap.js +42 -0
- package/esm/bootstrap.js.map +1 -0
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -0
- package/esm/jasmine/Expectation.d.ts +19 -0
- package/esm/jasmine/Expectation.d.ts.map +1 -0
- package/esm/jasmine/Expectation.js +2 -0
- package/esm/jasmine/Expectation.js.map +1 -0
- package/esm/jasmine/JasmineDoneInfo.d.ts +22 -0
- package/esm/jasmine/JasmineDoneInfo.d.ts.map +1 -0
- package/esm/jasmine/JasmineDoneInfo.js +2 -0
- package/esm/jasmine/JasmineDoneInfo.js.map +1 -0
- package/esm/jasmine/JasmineReporter.d.ts +80 -0
- package/esm/jasmine/JasmineReporter.d.ts.map +1 -0
- package/esm/jasmine/JasmineReporter.js +2 -0
- package/esm/jasmine/JasmineReporter.js.map +1 -0
- package/esm/jasmine/JasmineStartedInfo.d.ts +15 -0
- package/esm/jasmine/JasmineStartedInfo.d.ts.map +1 -0
- package/esm/jasmine/JasmineStartedInfo.js +2 -0
- package/esm/jasmine/JasmineStartedInfo.js.map +1 -0
- package/esm/jasmine/Location.d.ts +12 -0
- package/esm/jasmine/Location.d.ts.map +1 -0
- package/esm/jasmine/Location.js +2 -0
- package/esm/jasmine/Location.js.map +1 -0
- package/esm/jasmine/Order.d.ts +16 -0
- package/esm/jasmine/Order.d.ts.map +1 -0
- package/esm/jasmine/Order.js +2 -0
- package/esm/jasmine/Order.js.map +1 -0
- package/esm/jasmine/Result.d.ts +18 -0
- package/esm/jasmine/Result.d.ts.map +1 -0
- package/esm/jasmine/Result.js +2 -0
- package/esm/jasmine/Result.js.map +1 -0
- package/esm/jasmine/SpecResult.d.ts +24 -0
- package/esm/jasmine/SpecResult.d.ts.map +1 -0
- package/esm/jasmine/SpecResult.js +2 -0
- package/esm/jasmine/SpecResult.js.map +1 -0
- package/esm/jasmine/SuiteResult.d.ts +25 -0
- package/esm/jasmine/SuiteResult.d.ts.map +1 -0
- package/esm/jasmine/SuiteResult.js +2 -0
- package/esm/jasmine/SuiteResult.js.map +1 -0
- package/esm/jasmine/index.d.ts +8 -0
- package/esm/jasmine/index.d.ts.map +1 -0
- package/esm/jasmine/index.js +8 -0
- package/esm/jasmine/index.js.map +1 -0
- package/esm/monkeyPatched.d.ts +14 -0
- package/esm/monkeyPatched.d.ts.map +1 -0
- package/esm/monkeyPatched.js +60 -0
- package/esm/monkeyPatched.js.map +1 -0
- package/lib/SerenityReporterForJasmine.d.ts +3 -2
- package/lib/SerenityReporterForJasmine.d.ts.map +1 -1
- package/lib/SerenityReporterForJasmine.js +37 -27
- package/lib/SerenityReporterForJasmine.js.map +1 -1
- package/lib/adapter/JasmineAdapter.d.ts +4 -4
- package/lib/adapter/JasmineAdapter.d.ts.map +1 -1
- package/lib/adapter/JasmineAdapter.js +12 -9
- package/lib/adapter/JasmineAdapter.js.map +1 -1
- package/lib/adapter/JasmineConfig.d.ts +1 -1
- package/lib/adapter/JasmineConfig.d.ts.map +1 -1
- package/lib/adapter/filters/AcceptingSpecFilter.d.ts +1 -1
- package/lib/adapter/filters/AcceptingSpecFilter.d.ts.map +1 -1
- package/lib/adapter/filters/CustomFunctionSpecFilter.d.ts +1 -1
- package/lib/adapter/filters/CustomFunctionSpecFilter.d.ts.map +1 -1
- package/lib/adapter/filters/GrepSpecFilter.d.ts +1 -1
- package/lib/adapter/filters/GrepSpecFilter.d.ts.map +1 -1
- package/lib/adapter/filters/InvertedGrepSpecFilter.d.ts +1 -1
- package/lib/adapter/filters/InvertedGrepSpecFilter.d.ts.map +1 -1
- package/lib/adapter/filters/index.d.ts +5 -5
- package/lib/adapter/filters/index.d.ts.map +1 -1
- package/lib/adapter/filters/index.js +5 -5
- package/lib/adapter/filters/index.js.map +1 -1
- package/lib/adapter/index.d.ts +2 -2
- package/lib/adapter/index.d.ts.map +1 -1
- package/lib/adapter/index.js +2 -2
- package/lib/adapter/index.js.map +1 -1
- package/lib/bootstrap.d.ts +1 -1
- package/lib/bootstrap.d.ts.map +1 -1
- package/lib/bootstrap.js +5 -5
- package/lib/bootstrap.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/jasmine/JasmineDoneInfo.d.ts +2 -2
- package/lib/jasmine/JasmineDoneInfo.d.ts.map +1 -1
- package/lib/jasmine/JasmineReporter.d.ts +4 -4
- package/lib/jasmine/JasmineReporter.d.ts.map +1 -1
- package/lib/jasmine/JasmineStartedInfo.d.ts +1 -1
- package/lib/jasmine/JasmineStartedInfo.d.ts.map +1 -1
- package/lib/jasmine/Result.d.ts +1 -1
- package/lib/jasmine/Result.d.ts.map +1 -1
- package/lib/jasmine/SpecResult.d.ts +2 -2
- package/lib/jasmine/SpecResult.d.ts.map +1 -1
- package/lib/jasmine/SuiteResult.d.ts +3 -3
- package/lib/jasmine/SuiteResult.d.ts.map +1 -1
- package/lib/jasmine/index.d.ts +7 -7
- package/lib/jasmine/index.d.ts.map +1 -1
- package/lib/jasmine/index.js +7 -7
- package/lib/jasmine/index.js.map +1 -1
- package/lib/monkeyPatched.js +5 -4
- package/lib/monkeyPatched.js.map +1 -1
- package/lib/package.json +1 -0
- package/package.json +33 -8
- package/src/SerenityReporterForJasmine.ts +30 -19
- package/src/adapter/JasmineAdapter.ts +9 -9
- package/src/adapter/JasmineConfig.ts +1 -1
- package/src/adapter/filters/AcceptingSpecFilter.ts +1 -1
- package/src/adapter/filters/CustomFunctionSpecFilter.ts +1 -1
- package/src/adapter/filters/GrepSpecFilter.ts +1 -1
- package/src/adapter/filters/InvertedGrepSpecFilter.ts +1 -1
- package/src/adapter/filters/index.ts +5 -5
- package/src/adapter/index.ts +2 -2
- package/src/bootstrap.ts +2 -2
- package/src/index.ts +1 -3
- package/src/jasmine/JasmineDoneInfo.ts +2 -2
- package/src/jasmine/JasmineReporter.ts +4 -4
- package/src/jasmine/JasmineStartedInfo.ts +1 -1
- package/src/jasmine/Result.ts +1 -1
- package/src/jasmine/SpecResult.ts +2 -2
- package/src/jasmine/SuiteResult.ts +3 -3
- package/src/jasmine/index.ts +7 -7
- package/src/monkeyPatched.ts +5 -3
- package/tsconfig.build.json +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.12.0](https://github.com/serenity-js/serenity-js/compare/v3.11.1...v3.12.0) (2023-10-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **jasmine:** support for Jasmine 5 ([ee80215](https://github.com/serenity-js/serenity-js/commit/ee802152d1af7a50665def985fd946fc04e6399d)), closes [#1088](https://github.com/serenity-js/serenity-js/issues/1088) [#913](https://github.com/serenity-js/serenity-js/issues/913)
|
|
12
|
+
* **jasmine:** support for Jasmine 5 ([9b34e1e](https://github.com/serenity-js/serenity-js/commit/9b34e1eb9bfe1a1ad507fff569083da429b10f30))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [3.11.1](https://github.com/serenity-js/serenity-js/compare/v3.11.0...v3.11.1) (2023-10-04)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @serenity-js/jasmine
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
# [3.11.0](https://github.com/serenity-js/serenity-js/compare/v3.10.4...v3.11.0) (2023-10-03)
|
|
7
27
|
|
|
8
28
|
**Note:** Version bump only for package @serenity-js/jasmine
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type Serenity } from '@serenity-js/core';
|
|
2
|
+
import type { JasmineDoneInfo, JasmineReporter, JasmineStartedInfo, SpecResult, SuiteResult } from './jasmine/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* [Jasmine reporter](https://jasmine.github.io/tutorials/custom_reporter) that translates Jasmine-specific test events
|
|
5
|
+
* to Serenity/JS events.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SerenityReporterForJasmine implements JasmineReporter {
|
|
8
|
+
private readonly serenity;
|
|
9
|
+
private static readonly errorMessagePattern;
|
|
10
|
+
private describes;
|
|
11
|
+
private currentSceneId;
|
|
12
|
+
/**
|
|
13
|
+
* @param {Serenity} serenity
|
|
14
|
+
*/
|
|
15
|
+
constructor(serenity: Serenity);
|
|
16
|
+
jasmineStarted(info: JasmineStartedInfo): void;
|
|
17
|
+
suiteStarted(result: SuiteResult): void;
|
|
18
|
+
suiteDone(result: SuiteResult): void;
|
|
19
|
+
specStarted(result: SpecResult): void;
|
|
20
|
+
specDone(result: SpecResult): Promise<void>;
|
|
21
|
+
jasmineDone(suiteInfo: JasmineDoneInfo): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* @private
|
|
24
|
+
* @param {DomainEvent[]} events
|
|
25
|
+
*/
|
|
26
|
+
private emit;
|
|
27
|
+
/**
|
|
28
|
+
* @private
|
|
29
|
+
* @param {SpecResult} spec
|
|
30
|
+
* @returns {ScenarioDetails}
|
|
31
|
+
*/
|
|
32
|
+
private scenarioDetailsOf;
|
|
33
|
+
/**
|
|
34
|
+
* @private
|
|
35
|
+
* @param {SuiteResult} result
|
|
36
|
+
* @returns {TestSuiteDetails}
|
|
37
|
+
*/
|
|
38
|
+
private testSuiteDetailsOf;
|
|
39
|
+
/**
|
|
40
|
+
* @private
|
|
41
|
+
* @returns {string}
|
|
42
|
+
*/
|
|
43
|
+
private currentFeatureNameFor;
|
|
44
|
+
/**
|
|
45
|
+
* @private
|
|
46
|
+
* @param {string} itBlockDescription
|
|
47
|
+
* @returns {string}
|
|
48
|
+
*/
|
|
49
|
+
private currentScenarioNameFor;
|
|
50
|
+
/**
|
|
51
|
+
* @private
|
|
52
|
+
* @param {SpecResult | SuiteResult} result
|
|
53
|
+
* @returns {Outcome}
|
|
54
|
+
*/
|
|
55
|
+
private outcomeFrom;
|
|
56
|
+
/**
|
|
57
|
+
* @private
|
|
58
|
+
* @param {Expectation} failure
|
|
59
|
+
* @returns {ProblemIndication}
|
|
60
|
+
*/
|
|
61
|
+
private failureOutcomeFrom;
|
|
62
|
+
private errorFrom;
|
|
63
|
+
private containsCorrectlySerialisedError;
|
|
64
|
+
private containsIncorrectlySerialisedErrorWithErrorPropertiesInStack;
|
|
65
|
+
private containsIncorrectlySerialisedError;
|
|
66
|
+
/**
|
|
67
|
+
* It seems like Jasmine mixes up serialisation and display logic,
|
|
68
|
+
* which means that its "failure.stack" is not really an Error stacktrace,
|
|
69
|
+
* but rather something along the lines of:
|
|
70
|
+
* "error properties: AssertionError: undefined"
|
|
71
|
+
* where the error message is lost, and there's an "error properties:" prefix present.
|
|
72
|
+
*
|
|
73
|
+
* Probably caused by this:
|
|
74
|
+
* https://github.com/jasmine/jasmine/blob/b4cbe9850fbe192eaffeae450669f96e79a574ed/src/core/ExceptionFormatter.js#L93
|
|
75
|
+
*
|
|
76
|
+
* @param {Expectation} failure
|
|
77
|
+
*/
|
|
78
|
+
private repairedStackTraceOf;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=SerenityReporterForJasmine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SerenityReporterForJasmine.d.ts","sourceRoot":"","sources":["../src/SerenityReporterForJasmine.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,QAAQ,EAAwB,MAAM,mBAAmB,CAAC;AAmCrI,OAAO,KAAK,EAER,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,WAAW,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,eAAe;IAUlD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IARrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAA8B;IACzE,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,cAAc,CAA4B;IAElD;;OAEG;gBAC0B,QAAQ,EAAE,QAAQ;IAG/C,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAI9C,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMvC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMpC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAYrC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD3C,WAAW,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD;;;OAGG;IACH,OAAO,CAAC,IAAI;IAIZ;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,4DAA4D;IAMpE,OAAO,CAAC,kCAAkC;IAI1C;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;CAS/B"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { AssertionError, ErrorSerialiser, ImplementationPendingError, TestCompromisedError } from '@serenity-js/core';
|
|
2
|
+
import { SceneFinished, SceneFinishes, SceneStarts, SceneTagged, TaskFinished, TaskStarts, TestRunFinished, TestRunFinishes, TestRunnerDetected, TestRunStarts, TestSuiteFinished, TestSuiteStarts, } from '@serenity-js/core/lib/events/index.js';
|
|
3
|
+
import { FileSystemLocation, Path } from '@serenity-js/core/lib/io/index.js';
|
|
4
|
+
import { ActivityDetails, Category, CorrelationId, ExecutionCompromised, ExecutionFailedWithAssertionError, ExecutionFailedWithError, ExecutionSkipped, ExecutionSuccessful, FeatureTag, ImplementationPending, Name, ScenarioDetails, TestSuiteDetails, } from '@serenity-js/core/lib/model/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* [Jasmine reporter](https://jasmine.github.io/tutorials/custom_reporter) that translates Jasmine-specific test events
|
|
7
|
+
* to Serenity/JS events.
|
|
8
|
+
*/
|
|
9
|
+
export class SerenityReporterForJasmine {
|
|
10
|
+
/**
|
|
11
|
+
* @param {Serenity} serenity
|
|
12
|
+
*/
|
|
13
|
+
constructor(serenity) {
|
|
14
|
+
this.serenity = serenity;
|
|
15
|
+
this.describes = [];
|
|
16
|
+
this.currentSceneId = undefined;
|
|
17
|
+
}
|
|
18
|
+
jasmineStarted(info) {
|
|
19
|
+
this.emit(new TestRunStarts(this.serenity.currentTime()));
|
|
20
|
+
}
|
|
21
|
+
suiteStarted(result) {
|
|
22
|
+
this.describes.push(result);
|
|
23
|
+
this.emit(new TestSuiteStarts(this.testSuiteDetailsOf(result), this.serenity.currentTime()));
|
|
24
|
+
}
|
|
25
|
+
suiteDone(result) {
|
|
26
|
+
this.describes = this.describes.filter(suite => suite.id !== result.id);
|
|
27
|
+
this.emit(new TestSuiteFinished(this.testSuiteDetailsOf(result), this.outcomeFrom(result), this.serenity.currentTime()));
|
|
28
|
+
}
|
|
29
|
+
specStarted(result) {
|
|
30
|
+
this.currentSceneId = this.serenity.assignNewSceneId();
|
|
31
|
+
const details = this.scenarioDetailsOf(result);
|
|
32
|
+
this.emit(new SceneStarts(this.currentSceneId, details, this.serenity.currentTime()), new SceneTagged(this.currentSceneId, new FeatureTag(this.currentFeatureNameFor(result)), this.serenity.currentTime()), new TestRunnerDetected(this.currentSceneId, new Name('Jasmine'), this.serenity.currentTime()));
|
|
33
|
+
}
|
|
34
|
+
specDone(result) {
|
|
35
|
+
/**
|
|
36
|
+
* Serenity doesn't allow for more than one failure per activity, but Jasmine does.
|
|
37
|
+
* If there are multiple failures we wrap them up in fake activities so that they're all reported correctly.
|
|
38
|
+
*/
|
|
39
|
+
if (result.failedExpectations.length > 1) {
|
|
40
|
+
result.failedExpectations.forEach(failedExpectation => {
|
|
41
|
+
const sceneId = this.serenity.currentSceneId();
|
|
42
|
+
const activityDetails = new ActivityDetails(new Name('Expectation'), new FileSystemLocation(Path.from(result.location.path), result.location.line, result.location.column));
|
|
43
|
+
const activityId = this.serenity.assignNewActivityId(activityDetails);
|
|
44
|
+
this.emit(new TaskStarts(sceneId, activityId, activityDetails, this.serenity.currentTime()), new TaskFinished(sceneId, activityId, activityDetails, this.failureOutcomeFrom(failedExpectation), this.serenity.currentTime()));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const scenarioDetails = this.scenarioDetailsOf(result), outcome = this.outcomeFrom(result);
|
|
48
|
+
this.emit(new SceneFinishes(this.currentSceneId, this.serenity.currentTime()));
|
|
49
|
+
return this.serenity.waitForNextCue()
|
|
50
|
+
.then(() => {
|
|
51
|
+
this.emit(new SceneFinished(this.currentSceneId, scenarioDetails, outcome, this.serenity.currentTime()));
|
|
52
|
+
}, error => {
|
|
53
|
+
this.emit(new SceneFinished(this.currentSceneId, scenarioDetails, new ExecutionFailedWithError(error), this.serenity.currentTime()));
|
|
54
|
+
throw error;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
jasmineDone(suiteInfo) {
|
|
58
|
+
this.emit(new TestRunFinishes(this.serenity.currentTime()));
|
|
59
|
+
return this.serenity.waitForNextCue()
|
|
60
|
+
.then(() => {
|
|
61
|
+
this.emit(new TestRunFinished(new ExecutionSuccessful(), this.serenity.currentTime()));
|
|
62
|
+
})
|
|
63
|
+
.catch(error => {
|
|
64
|
+
this.emit(new TestRunFinished(new ExecutionFailedWithError(error), this.serenity.currentTime()));
|
|
65
|
+
throw error;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @private
|
|
70
|
+
* @param {DomainEvent[]} events
|
|
71
|
+
*/
|
|
72
|
+
emit(...events) {
|
|
73
|
+
events.forEach(event => this.serenity.announce(event));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @private
|
|
77
|
+
* @param {SpecResult} spec
|
|
78
|
+
* @returns {ScenarioDetails}
|
|
79
|
+
*/
|
|
80
|
+
scenarioDetailsOf(spec) {
|
|
81
|
+
return new ScenarioDetails(new Name(this.currentScenarioNameFor(spec.description)), new Category(this.currentFeatureNameFor(spec)), FileSystemLocation.fromJSON(spec.location));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @private
|
|
85
|
+
* @param {SuiteResult} result
|
|
86
|
+
* @returns {TestSuiteDetails}
|
|
87
|
+
*/
|
|
88
|
+
testSuiteDetailsOf(result) {
|
|
89
|
+
return new TestSuiteDetails(new Name(result.description), FileSystemLocation.fromJSON(result.location), new CorrelationId(result.id));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @private
|
|
93
|
+
* @returns {string}
|
|
94
|
+
*/
|
|
95
|
+
currentFeatureNameFor(spec) {
|
|
96
|
+
const path = new Path(spec.location.path);
|
|
97
|
+
return this.describes[0]
|
|
98
|
+
? this.describes[0].description
|
|
99
|
+
: this.serenity.cwd().relative(path).value;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @private
|
|
103
|
+
* @param {string} itBlockDescription
|
|
104
|
+
* @returns {string}
|
|
105
|
+
*/
|
|
106
|
+
currentScenarioNameFor(itBlockDescription) {
|
|
107
|
+
const [topSuite_, ...rest] = this.describes;
|
|
108
|
+
return rest.reverse()
|
|
109
|
+
.reduce((name, current) => `${current.description} ${name}`, itBlockDescription);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @private
|
|
113
|
+
* @param {SpecResult | SuiteResult} result
|
|
114
|
+
* @returns {Outcome}
|
|
115
|
+
*/
|
|
116
|
+
outcomeFrom(result) {
|
|
117
|
+
switch (result.status) {
|
|
118
|
+
case 'failed':
|
|
119
|
+
return this.failureOutcomeFrom(result.failedExpectations[0]);
|
|
120
|
+
case 'pending':
|
|
121
|
+
return new ImplementationPending(new ImplementationPendingError(result.pendingReason || ''));
|
|
122
|
+
case 'excluded':
|
|
123
|
+
return new ExecutionSkipped();
|
|
124
|
+
case 'passed': // eslint-disable-line unicorn/no-useless-switch-case
|
|
125
|
+
default:
|
|
126
|
+
return new ExecutionSuccessful();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* @private
|
|
131
|
+
* @param {Expectation} failure
|
|
132
|
+
* @returns {ProblemIndication}
|
|
133
|
+
*/
|
|
134
|
+
failureOutcomeFrom(failure) {
|
|
135
|
+
const error = this.errorFrom(failure);
|
|
136
|
+
if (error instanceof AssertionError) {
|
|
137
|
+
// sadly, Jasmine error propagation mechanism is rather basic
|
|
138
|
+
// and unable to serialise the expected/actual properties of the AssertionError object
|
|
139
|
+
return new ExecutionFailedWithAssertionError(error);
|
|
140
|
+
}
|
|
141
|
+
if (error instanceof TestCompromisedError) {
|
|
142
|
+
return new ExecutionCompromised(error);
|
|
143
|
+
}
|
|
144
|
+
if (failure.matcherName) { // the presence of a non-empty matcherName property indicates a Jasmine-specific assertion error
|
|
145
|
+
return new ExecutionFailedWithAssertionError(this.serenity.createError(AssertionError, {
|
|
146
|
+
message: failure.message,
|
|
147
|
+
diff: {
|
|
148
|
+
expected: failure.expected,
|
|
149
|
+
actual: failure.actual,
|
|
150
|
+
},
|
|
151
|
+
cause: error,
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
return new ExecutionFailedWithError(error);
|
|
155
|
+
}
|
|
156
|
+
errorFrom(failure) {
|
|
157
|
+
if (this.containsCorrectlySerialisedError(failure)) {
|
|
158
|
+
return ErrorSerialiser.deserialiseFromStackTrace(failure.stack);
|
|
159
|
+
}
|
|
160
|
+
if (this.containsIncorrectlySerialisedErrorWithErrorPropertiesInStack(failure)) {
|
|
161
|
+
return ErrorSerialiser.deserialiseFromStackTrace(this.repairedStackTraceOf(failure));
|
|
162
|
+
}
|
|
163
|
+
if (this.containsIncorrectlySerialisedError(failure)) {
|
|
164
|
+
return ErrorSerialiser.deserialiseFromStackTrace(this.repairedStackTraceOf(failure));
|
|
165
|
+
}
|
|
166
|
+
return new Error(failure.message);
|
|
167
|
+
}
|
|
168
|
+
containsCorrectlySerialisedError(failure) {
|
|
169
|
+
return !!failure.stack && SerenityReporterForJasmine.errorMessagePattern.test(failure.stack.split('\n')[0]);
|
|
170
|
+
}
|
|
171
|
+
containsIncorrectlySerialisedErrorWithErrorPropertiesInStack(failure) {
|
|
172
|
+
return !!failure.stack
|
|
173
|
+
&& failure.stack.startsWith('error properties: ')
|
|
174
|
+
&& SerenityReporterForJasmine.errorMessagePattern.test(failure.message);
|
|
175
|
+
}
|
|
176
|
+
containsIncorrectlySerialisedError(failure) {
|
|
177
|
+
return !!failure.stack && SerenityReporterForJasmine.errorMessagePattern.test(failure.message);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* It seems like Jasmine mixes up serialisation and display logic,
|
|
181
|
+
* which means that its "failure.stack" is not really an Error stacktrace,
|
|
182
|
+
* but rather something along the lines of:
|
|
183
|
+
* "error properties: AssertionError: undefined"
|
|
184
|
+
* where the error message is lost, and there's an "error properties:" prefix present.
|
|
185
|
+
*
|
|
186
|
+
* Probably caused by this:
|
|
187
|
+
* https://github.com/jasmine/jasmine/blob/b4cbe9850fbe192eaffeae450669f96e79a574ed/src/core/ExceptionFormatter.js#L93
|
|
188
|
+
*
|
|
189
|
+
* @param {Expectation} failure
|
|
190
|
+
*/
|
|
191
|
+
repairedStackTraceOf(failure) {
|
|
192
|
+
const lastLine = failure.message.split('\n').pop();
|
|
193
|
+
const frames = failure.stack.split('\n').filter(line => !line.startsWith('error properties:'));
|
|
194
|
+
return [
|
|
195
|
+
failure.message,
|
|
196
|
+
...frames.slice(frames.indexOf(lastLine) + 1),
|
|
197
|
+
].join('\n');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
SerenityReporterForJasmine.errorMessagePattern = /^([^\s:]*Error):\s(.*)$/m;
|
|
201
|
+
//# sourceMappingURL=SerenityReporterForJasmine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SerenityReporterForJasmine.js","sourceRoot":"","sources":["../src/SerenityReporterForJasmine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { TestRunnerAdapter } from '@serenity-js/core/lib/adapter/index.js';
|
|
2
|
+
import type { ModuleLoader } from '@serenity-js/core/lib/io/index.js';
|
|
3
|
+
import type { Outcome } from '@serenity-js/core/lib/model/index.js';
|
|
4
|
+
import type { JasmineConfig } from './JasmineConfig.js';
|
|
5
|
+
/**
|
|
6
|
+
* Allows for programmatic execution of Jasmine test scenarios,
|
|
7
|
+
* using {@apilink SerenityReporterForJasmine} to report progress.
|
|
8
|
+
*
|
|
9
|
+
* ## Learn more
|
|
10
|
+
* - {@apilink TestRunnerAdapter}
|
|
11
|
+
*
|
|
12
|
+
* @group Integration
|
|
13
|
+
*/
|
|
14
|
+
export declare class JasmineAdapter implements TestRunnerAdapter {
|
|
15
|
+
private readonly config;
|
|
16
|
+
private readonly loader;
|
|
17
|
+
private runner;
|
|
18
|
+
private totalScenarios;
|
|
19
|
+
private static readonly defaultConfig;
|
|
20
|
+
constructor(config: JasmineConfig, loader: ModuleLoader);
|
|
21
|
+
/**
|
|
22
|
+
* Scenario success threshold for this test runner.
|
|
23
|
+
*/
|
|
24
|
+
successThreshold(): Outcome | {
|
|
25
|
+
Code: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Loads test scenarios.
|
|
29
|
+
*
|
|
30
|
+
* @param pathsToScenarios
|
|
31
|
+
*/
|
|
32
|
+
load(pathsToScenarios: string[]): Promise<void>;
|
|
33
|
+
private configureSpecFilter;
|
|
34
|
+
private loadSpecs;
|
|
35
|
+
private specFilter;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the number of loaded scenarios
|
|
38
|
+
*/
|
|
39
|
+
scenarioCount(): number;
|
|
40
|
+
private countScenarios;
|
|
41
|
+
/**
|
|
42
|
+
* Runs loaded test scenarios.
|
|
43
|
+
*/
|
|
44
|
+
run(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=JasmineAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JasmineAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/JasmineAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAMpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IAyBhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAxB3B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAiBnC;gBAGmB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,YAAY;IAIzC;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAI9C;;;;OAIG;IACG,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrD,OAAO,CAAC,mBAAmB;YASb,SAAS;IAQvB,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ExecutionIgnored } from '@serenity-js/core/lib/model/index.js';
|
|
2
|
+
import reporter from '../index.js';
|
|
3
|
+
import { AcceptingSpecFilter, CustomFunctionSpecFilter, GrepSpecFilter, InvertedGrepSpecFilter } from './filters/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Allows for programmatic execution of Jasmine test scenarios,
|
|
6
|
+
* using {@apilink SerenityReporterForJasmine} to report progress.
|
|
7
|
+
*
|
|
8
|
+
* ## Learn more
|
|
9
|
+
* - {@apilink TestRunnerAdapter}
|
|
10
|
+
*
|
|
11
|
+
* @group Integration
|
|
12
|
+
*/
|
|
13
|
+
export class JasmineAdapter {
|
|
14
|
+
constructor(config, loader) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.loader = loader;
|
|
17
|
+
this.totalScenarios = 0;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Scenario success threshold for this test runner.
|
|
21
|
+
*/
|
|
22
|
+
successThreshold() {
|
|
23
|
+
return ExecutionIgnored;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Loads test scenarios.
|
|
27
|
+
*
|
|
28
|
+
* @param pathsToScenarios
|
|
29
|
+
*/
|
|
30
|
+
async load(pathsToScenarios) {
|
|
31
|
+
const JasmineRunner = this.loader.require('jasmine');
|
|
32
|
+
this.runner = new JasmineRunner({ projectBaseDir: '' });
|
|
33
|
+
if (this.config.defaultTimeoutInterval) {
|
|
34
|
+
this.runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = this.config.defaultTimeoutInterval;
|
|
35
|
+
}
|
|
36
|
+
this.runner.clearReporters();
|
|
37
|
+
this.runner.loadConfig(Object.assign(JasmineAdapter.defaultConfig, this.config));
|
|
38
|
+
this.runner.addReporter(reporter(this.runner.jasmine));
|
|
39
|
+
if (this.config.reporters) {
|
|
40
|
+
this.config.reporters.forEach(reporter => {
|
|
41
|
+
this.runner.addReporter(reporter);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
this.runner.configureDefaultReporter(this.config);
|
|
45
|
+
this.runner.loadRequires();
|
|
46
|
+
this.runner.loadHelpers();
|
|
47
|
+
this.configureSpecFilter();
|
|
48
|
+
await this.loadSpecs(pathsToScenarios);
|
|
49
|
+
this.countScenarios(this.runner.env.topSuite());
|
|
50
|
+
}
|
|
51
|
+
configureSpecFilter() {
|
|
52
|
+
/*
|
|
53
|
+
* Configure spec filter
|
|
54
|
+
*/
|
|
55
|
+
this.runner.env.configure({
|
|
56
|
+
specFilter: spec => this.specFilter().matches(spec.getFullName()),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async loadSpecs(pathsToScenarios) {
|
|
60
|
+
this.runner.specDir = '';
|
|
61
|
+
this.runner.specFiles = [];
|
|
62
|
+
this.runner.addMatchingSpecFiles(pathsToScenarios);
|
|
63
|
+
await this.runner.loadSpecs();
|
|
64
|
+
}
|
|
65
|
+
specFilter() {
|
|
66
|
+
if (this.config.specFilter) {
|
|
67
|
+
return new CustomFunctionSpecFilter(this.config.specFilter);
|
|
68
|
+
}
|
|
69
|
+
if (this.config.grep) {
|
|
70
|
+
return this.config.invertGrep
|
|
71
|
+
? new InvertedGrepSpecFilter(this.config.grep)
|
|
72
|
+
: new GrepSpecFilter(this.config.grep);
|
|
73
|
+
}
|
|
74
|
+
return new AcceptingSpecFilter();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns the number of loaded scenarios
|
|
78
|
+
*/
|
|
79
|
+
scenarioCount() {
|
|
80
|
+
return this.totalScenarios;
|
|
81
|
+
}
|
|
82
|
+
countScenarios(suite) {
|
|
83
|
+
suite.children?.forEach((child) => {
|
|
84
|
+
if (Array.isArray(child.children)) {
|
|
85
|
+
return this.countScenarios(child);
|
|
86
|
+
}
|
|
87
|
+
if (this.specFilter().matches(child.getFullName())) {
|
|
88
|
+
this.totalScenarios++;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Runs loaded test scenarios.
|
|
94
|
+
*/
|
|
95
|
+
async run() {
|
|
96
|
+
this.runner.exitOnCompletion = false;
|
|
97
|
+
await this.runner.execute();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
JasmineAdapter.defaultConfig = {
|
|
101
|
+
/*
|
|
102
|
+
* Serenity/JS doesn't use Jasmine's assertions, so this mechanism can be disabled
|
|
103
|
+
*/
|
|
104
|
+
oneFailurePerSpec: true,
|
|
105
|
+
/*
|
|
106
|
+
* A spec should stop execution as soon as there's a hook or spec failure
|
|
107
|
+
* See https://github.com/angular/protractor/issues/3234
|
|
108
|
+
*/
|
|
109
|
+
stopSpecOnExpectationFailure: true,
|
|
110
|
+
/*
|
|
111
|
+
* Default to not executing tests at random.
|
|
112
|
+
* See https://github.com/angular/protractor/blob/4f74a4ec753c97adfe955fe468a39286a0a55837/lib/frameworks/jasmine.js#L76
|
|
113
|
+
*/
|
|
114
|
+
random: false,
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=JasmineAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JasmineAdapter.js","sourceRoot":"","sources":["../../src/adapter/JasmineAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG3H;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IAwBvB,YACqB,MAAqB,EACrB,MAAoB;QADpB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAc;QAvBjC,mBAAc,GAAG,CAAC,CAAC;IAyB3B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACZ,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,gBAA0B;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAW,IAAI,aAAa,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;SACrF;QAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAChC,cAAc,CAAC,aAAa,EAC5B,IAAI,CAAC,MAAM,CACd,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YACrC,CAAC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAE1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAEO,mBAAmB;QACvB;;WAEG;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpE,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,gBAA0B;QAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,GAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACxB,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC/D;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;gBACzB,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9C,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,mBAAmB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEO,cAAc,CAAC,KAAmB;QACtC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;aACpC;YACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;gBAChD,IAAI,CAAC,cAAc,EAAE,CAAA;aACxB;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG;QACL,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACrC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;;AA/HuB,4BAAa,GAAG;IACpC;;OAEG;IACH,iBAAiB,EAAE,IAAI;IAEvB;;;OAGG;IACH,4BAA4B,EAAE,IAAI;IAElC;;;OAGG;IACH,MAAM,EAAE,KAAK;CAChB,AAjBoC,CAiBnC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { JasmineReporter } from '../jasmine/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration object that will be passed to the JasmineRunner.
|
|
4
|
+
*
|
|
5
|
+
* ## Learn more
|
|
6
|
+
* - [Jasmine configuration](https://jasmine.github.io/setup/nodejs.html)
|
|
7
|
+
*
|
|
8
|
+
* @group Configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface JasmineConfig {
|
|
11
|
+
/**
|
|
12
|
+
* A list of paths to helper files that should be loaded and executed before the `requires` and the `specs`.
|
|
13
|
+
* Accepts relative and absolute paths as well as glob expressions.
|
|
14
|
+
*
|
|
15
|
+
* #### Learn more
|
|
16
|
+
* - [Jasmine tutorial](https://jasmine.github.io/tutorials/react_with_npm)
|
|
17
|
+
*/
|
|
18
|
+
helpers?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* A list of paths to files that should be required after the `helpers`, but before the `specs`.
|
|
21
|
+
* The paths need to be compatible with Node `require`.
|
|
22
|
+
*/
|
|
23
|
+
requires?: string[];
|
|
24
|
+
/**
|
|
25
|
+
* Whether or not the tests should be executed in a pseudo-random order.
|
|
26
|
+
*/
|
|
27
|
+
random?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Used to exclude any test scenarios which name doesn't match the pattern from the run.
|
|
30
|
+
*/
|
|
31
|
+
grep?: string | RegExp;
|
|
32
|
+
/**
|
|
33
|
+
* Inverts 'grep' matches, defaults to `false`
|
|
34
|
+
*/
|
|
35
|
+
invertGrep?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Receives the full name of a test scenario and returns `true`
|
|
38
|
+
* for those that should be executed.
|
|
39
|
+
*
|
|
40
|
+
* Takes precedence over `grep`.
|
|
41
|
+
*/
|
|
42
|
+
specFilter?: (specName: string) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* The randomisation seed that will be used to determine the pseudo-random order of execution,
|
|
45
|
+
* if `random` is set to `true`
|
|
46
|
+
*/
|
|
47
|
+
seed?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Sets the global `jasmine.DEFAULT_TIMEOUT_INTERVAL`,
|
|
50
|
+
* which defines the default number of milliseconds Jasmine will wait for an asynchronous spec to complete.
|
|
51
|
+
*
|
|
52
|
+
* #### Learn more
|
|
53
|
+
* - [Jasmine default timeout interval](https://jasmine.github.io/api/edge/jasmine#.DEFAULT_TIMEOUT_INTERVAL)
|
|
54
|
+
*/
|
|
55
|
+
defaultTimeoutInterval?: number;
|
|
56
|
+
/**
|
|
57
|
+
* A list of Jasmine reporters to be added to the test runner.
|
|
58
|
+
*
|
|
59
|
+
* Useful for situations like configuring ReportPortal, because you cannot use `jasmine.addReporter()` in the Protractor config.
|
|
60
|
+
*
|
|
61
|
+
* **Note:** reporters must be instantiated before adding them to the configuration.
|
|
62
|
+
*
|
|
63
|
+
* #### Using ReportPortal with Protractor and Jasmine
|
|
64
|
+
*
|
|
65
|
+
* ```js
|
|
66
|
+
* // protractor.conf.js
|
|
67
|
+
* const AgentJasmine = require('@reportportal/agent-js-jasmine')
|
|
68
|
+
* const agent = new AgentJasmine(require('./reportportalConf'))
|
|
69
|
+
* // ...
|
|
70
|
+
* jasmineNodeOpts: {
|
|
71
|
+
* // ...
|
|
72
|
+
* reporters: [ agent.getJasmineReporter() ],
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* afterLaunch:() => {
|
|
76
|
+
* return agent.getExitPromise();
|
|
77
|
+
* },
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
reporters?: JasmineReporter[];
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=JasmineConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JasmineConfig.d.ts","sourceRoot":"","sources":["../../src/adapter/JasmineConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAE1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JasmineConfig.js","sourceRoot":"","sources":["../../src/adapter/JasmineConfig.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcceptingSpecFilter.d.ts","sourceRoot":"","sources":["../../../src/adapter/filters/AcceptingSpecFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,UAAU;IAClD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcceptingSpecFilter.js","sourceRoot":"","sources":["../../../src/adapter/filters/AcceptingSpecFilter.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC5B,OAAO,CAAC,QAAgB;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SpecFilter } from './SpecFilter.js';
|
|
2
|
+
/**
|
|
3
|
+
* @package
|
|
4
|
+
*/
|
|
5
|
+
export declare class CustomFunctionSpecFilter implements SpecFilter {
|
|
6
|
+
private readonly fn;
|
|
7
|
+
constructor(fn: (specName: string) => boolean);
|
|
8
|
+
matches(specName: string): boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=CustomFunctionSpecFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomFunctionSpecFilter.d.ts","sourceRoot":"","sources":["../../../src/adapter/filters/CustomFunctionSpecFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,qBAAa,wBAAyB,YAAW,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO;IAG9D,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomFunctionSpecFilter.js","sourceRoot":"","sources":["../../../src/adapter/filters/CustomFunctionSpecFilter.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,wBAAwB;IACjC,YAA6B,EAAiC;QAAjC,OAAE,GAAF,EAAE,CAA+B;IAC9D,CAAC;IAED,OAAO,CAAC,QAAgB;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;CACJ"}
|