-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathskipped_steps.feature
139 lines (115 loc) · 4.1 KB
/
skipped_steps.feature
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
Feature: Skipped steps
Using this feature, a scenario can be imperatively 'skipped'.
For example, skipping in a `Given` step will mark the following steps of the same scenario as skipped.
There are three methods of skipping. One for synchronous steps, one for an asynchronous callback, and one for an asynchronous promise.
Background:
Given a file named "features/skipped.feature" with:
"""
Feature: a feature
Scenario: a scenario
Given a skipped step
"""
Scenario: Synchronous skipped step
Given a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function() {
return 'skipped'
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" step "Given a skipped step" has status "skipped"
And scenario "a scenario" has status "skipped"
Scenario: Callback skipped step
Given a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function(callback) {
callback(null, 'skipped')
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" step "Given a skipped step" has status "skipped"
And scenario "a scenario" has status "skipped"
Scenario: Promise skipped step
Given a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function(){
return {
then: function(onResolve, onReject) {
setTimeout(function() {
onResolve('skipped')
})
}
}
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" step "Given a skipped step" has status "skipped"
And scenario "a scenario" has status "skipped"
Scenario: Hook skipped scenario steps
Given a file named "features/support/hooks.js" with:
"""
const {After, Before} = require('@cucumber/cucumber')
Before(function() {return 'skipped'})
"""
And a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function() {
var a = 1;
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" step "Given a skipped step" has status "skipped"
And scenario "a scenario" has status "skipped"
Scenario: Skipped before hook should skip all before hooks
Given a file named "features/step_definitions/world.js" with:
"""
const {setWorldConstructor} = require('@cucumber/cucumber')
setWorldConstructor(function() {
this.ran = false
})
"""
And a file named "features/support/hooks.js" with:
"""
const assert = require('assert')
const {After, Before} = require('@cucumber/cucumber')
Before(function() {return 'skipped'})
Before(function() { this.ran = true })
After(function() { assert.equal(this.ran, false) })
"""
And a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function() {
var a = 1;
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" has status "skipped"
Scenario: Skipped before hook should run after hook
Given a file named "features/support/hooks.js" with:
"""
const {After, Before} = require('@cucumber/cucumber')
Before(function() {return 'skipped'})
Before(function() {})
After(function() {})
"""
And a file named "features/step_definitions/skipped_steps.js" with:
"""
const {Given} = require('@cucumber/cucumber')
Given(/^a skipped step$/, function() {
var a = 1;
})
"""
When I run cucumber-js
Then it passes
And scenario "a scenario" "After" hook has status "passed"
And scenario "a scenario" has status "skipped"