-
-
Notifications
You must be signed in to change notification settings - Fork 160
/
failing_scenario.spec.ts
51 lines (45 loc) · 2.18 KB
/
failing_scenario.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { expect, ifExitCodeIsOtherThan, logOutput, PickEvent } from '@integration/testing-tools';
import {
ActivityFinished,
ActivityStarts,
SceneFinished,
SceneStarts,
SceneTagged,
TestRunnerDetected,
} from '@serenity-js/core/lib/events';
import { ExecutionFailedWithError, FeatureTag, Name } from '@serenity-js/core/lib/model';
import 'mocha';
import { given } from 'mocha-testdata';
import { CucumberRunner, cucumberVersions } from '../src';
describe('@serenity-js/cucumber', function() {
this.timeout(5000);
given([
...cucumberVersions(1, 2)
.thatRequires(
'node_modules/@serenity-js/cucumber/register.js',
'lib/support/configure_serenity.js',
)
.withStepDefsIn('promise', 'callback', 'synchronous')
.toRun('features/failing_scenario.feature'),
...cucumberVersions(3, 4, 5)
.thatRequires('lib/support/configure_serenity.js')
.withStepDefsIn('synchronous', 'promise', 'callback')
.withArgs(
'--format', 'node_modules/@serenity-js/cucumber/register.js',
)
.toRun('features/failing_scenario.feature'),
]).
it('recognises a failing scenario', (runner: CucumberRunner) => runner.run().
then(ifExitCodeIsOtherThan(1, logOutput)).
then(res => {
expect(res.exitCode).to.equal(1);
PickEvent.from(res.events)
.next(SceneStarts, event => expect(event.value.name).to.equal(new Name('A failing scenario')))
.next(TestRunnerDetected, event => expect(event.value).to.equal(new Name('Cucumber')))
.next(SceneTagged, event => expect(event.tag).to.equal(new FeatureTag('Serenity/JS recognises a failing scenario')))
.next(ActivityStarts, event => expect(event.value.name).to.equal(new Name('Given a step that fails with generic error')))
.next(ActivityFinished, event => expect(event.outcome).to.be.instanceOf(ExecutionFailedWithError))
.next(SceneFinished, event => expect(event.outcome).to.be.instanceOf(ExecutionFailedWithError))
;
}));
});