@@ -2,22 +2,18 @@ var ProgressFormatter = function(options) {
2
2
var Cucumber = require ( '../../cucumber' ) ;
3
3
4
4
var logs = "" ;
5
- var failedScenarioLogBuffer = "" ;
6
- var undefinedStepLogBuffer = "" ;
7
- var failedStepResults = Cucumber . Type . Collection ( ) ;
8
- var statsJournal = Cucumber . Listener . StatsJournal ( ) ;
9
5
10
6
if ( ! options )
11
7
options = { } ;
12
8
if ( options [ 'logToConsole' ] == undefined )
13
9
options [ 'logToConsole' ] = true ;
14
10
15
- var self = Cucumber . Listener ( ) ;
11
+ var self = Cucumber . Listener ( ) ;
12
+ var summaryLogger = Cucumber . Listener . SummaryLogger ( ) ;
16
13
17
14
var parentHear = self . hear ;
18
-
19
15
self . hear = function hear ( event , callback ) {
20
- statsJournal . hear ( event , function ( ) {
16
+ summaryLogger . hear ( event , function ( ) {
21
17
parentHear ( event , callback ) ;
22
18
} ) ;
23
19
} ;
@@ -43,9 +39,9 @@ var ProgressFormatter = function(options) {
43
39
else if ( stepResult . isSkipped ( ) )
44
40
self . handleSkippedStepResult ( ) ;
45
41
else if ( stepResult . isUndefined ( ) )
46
- self . handleUndefinedStepResult ( stepResult ) ;
42
+ self . handleUndefinedStepResult ( ) ;
47
43
else
48
- self . handleFailedStepResult ( stepResult ) ;
44
+ self . handleFailedStepResult ( ) ;
49
45
callback ( ) ;
50
46
} ;
51
47
@@ -61,145 +57,20 @@ var ProgressFormatter = function(options) {
61
57
self . log ( ProgressFormatter . SKIPPED_STEP_CHARACTER ) ;
62
58
} ;
63
59
64
- self . handleUndefinedStepResult = function handleUndefinedStepResult ( stepResult ) {
65
- var step = stepResult . getStep ( ) ;
66
- self . storeUndefinedStep ( step ) ;
60
+ self . handleUndefinedStepResult = function handleUndefinedStepResult ( ) {
67
61
self . log ( ProgressFormatter . UNDEFINED_STEP_CHARACTER ) ;
68
62
} ;
69
63
70
- self . handleFailedStepResult = function handleFailedStepResult ( stepResult ) {
71
- self . storeFailedStepResult ( stepResult ) ;
64
+ self . handleFailedStepResult = function handleFailedStepResult ( ) {
72
65
self . log ( ProgressFormatter . FAILED_STEP_CHARACTER ) ;
73
66
} ;
74
67
75
68
self . handleAfterFeaturesEvent = function handleAfterFeaturesEvent ( event , callback ) {
76
- self . logSummary ( ) ;
69
+ var summaryLogs = summaryLogger . getLogs ( ) ;
70
+ self . log ( summaryLogs ) ;
77
71
callback ( ) ;
78
72
} ;
79
73
80
- self . handleAfterScenarioEvent = function handleAfterScenarioEvent ( event , callback ) {
81
- if ( statsJournal . isCurrentScenarioFailing ( ) ) {
82
- var scenario = event . getPayloadItem ( 'scenario' ) ;
83
- self . storeFailedScenario ( scenario ) ;
84
- }
85
- callback ( ) ;
86
- } ;
87
-
88
- self . storeFailedStepResult = function storeFailedStepResult ( failedStepResult ) {
89
- failedStepResults . add ( failedStepResult ) ;
90
- } ;
91
-
92
- self . storeFailedScenario = function storeFailedScenario ( failedScenario ) {
93
- var name = failedScenario . getName ( ) ;
94
- var line = failedScenario . getLine ( ) ;
95
- self . appendStringToFailedScenarioLogBuffer ( ":" + line + " # Scenario: " + name ) ;
96
- } ;
97
-
98
- self . storeUndefinedStep = function storeUndefinedStep ( step ) {
99
- var snippetBuilder = Cucumber . SupportCode . StepDefinitionSnippetBuilder ( step ) ;
100
- var snippet = snippetBuilder . buildSnippet ( ) ;
101
- self . appendStringToUndefinedStepLogBuffer ( snippet ) ;
102
- } ;
103
-
104
- self . appendStringToFailedScenarioLogBuffer = function appendStringToFailedScenarioLogBuffer ( string ) {
105
- failedScenarioLogBuffer += string + "\n" ;
106
- } ;
107
-
108
- self . appendStringToUndefinedStepLogBuffer = function appendStringToUndefinedStepLogBuffer ( string ) {
109
- if ( undefinedStepLogBuffer . indexOf ( string ) == - 1 )
110
- undefinedStepLogBuffer += string + "\n" ;
111
- } ;
112
-
113
- self . getFailedScenarioLogBuffer = function getFailedScenarioLogBuffer ( ) {
114
- return failedScenarioLogBuffer ;
115
- } ;
116
-
117
- self . getUndefinedStepLogBuffer = function getUndefinedStepLogBuffer ( ) {
118
- return undefinedStepLogBuffer ;
119
- } ;
120
-
121
- self . logSummary = function logSummary ( ) {
122
- self . log ( "\n\n" ) ;
123
- if ( statsJournal . witnessedAnyFailedStep ( ) )
124
- self . logFailedStepResults ( ) ;
125
- self . logScenariosSummary ( ) ;
126
- self . logStepsSummary ( ) ;
127
- if ( statsJournal . witnessedAnyUndefinedStep ( ) )
128
- self . logUndefinedStepSnippets ( ) ;
129
- } ;
130
-
131
- self . logFailedStepResults = function logFailedStepResults ( ) {
132
- self . log ( "(::) failed steps (::)\n\n" ) ;
133
- failedStepResults . syncForEach ( function ( stepResult ) {
134
- self . logFailedStepResult ( stepResult ) ;
135
- } ) ;
136
- self . log ( "Failing scenarios:\n" ) ;
137
- var failedScenarios = self . getFailedScenarioLogBuffer ( ) ;
138
- self . log ( failedScenarios ) ;
139
- self . log ( "\n" ) ;
140
- } ;
141
-
142
- self . logFailedStepResult = function logFailedStepResult ( stepResult ) {
143
- var failureMessage = stepResult . getFailureException ( ) ;
144
- self . log ( failureMessage . stack || failureMessage ) ;
145
- self . log ( "\n\n" ) ;
146
- } ;
147
-
148
- self . logScenariosSummary = function logScenariosSummary ( ) {
149
- var scenarioCount = statsJournal . getScenarioCount ( ) ;
150
- var passedScenarioCount = statsJournal . getPassedScenarioCount ( ) ;
151
- var undefinedScenarioCount = statsJournal . getUndefinedScenarioCount ( ) ;
152
- var pendingScenarioCount = statsJournal . getPendingScenarioCount ( ) ;
153
- var failedScenarioCount = statsJournal . getFailedScenarioCount ( ) ;
154
- var details = [ ] ;
155
-
156
- self . log ( scenarioCount + " scenario" + ( scenarioCount != 1 ? "s" : "" ) ) ;
157
- if ( scenarioCount > 0 ) {
158
- if ( failedScenarioCount > 0 )
159
- details . push ( failedScenarioCount + " failed" ) ;
160
- if ( undefinedScenarioCount > 0 )
161
- details . push ( undefinedScenarioCount + " undefined" ) ;
162
- if ( pendingScenarioCount > 0 )
163
- details . push ( pendingScenarioCount + " pending" ) ;
164
- if ( passedScenarioCount > 0 )
165
- details . push ( passedScenarioCount + " passed" ) ;
166
- self . log ( " (" + details . join ( ', ' ) + ")" ) ;
167
- }
168
- self . log ( "\n" ) ;
169
- } ;
170
-
171
- self . logStepsSummary = function logStepsSummary ( ) {
172
- var stepCount = statsJournal . getStepCount ( ) ;
173
- var passedStepCount = statsJournal . getPassedStepCount ( ) ;
174
- var undefinedStepCount = statsJournal . getUndefinedStepCount ( ) ;
175
- var skippedStepCount = statsJournal . getSkippedStepCount ( ) ;
176
- var pendingStepCount = statsJournal . getPendingStepCount ( ) ;
177
- var failedStepCount = statsJournal . getFailedStepCount ( ) ;
178
- var details = [ ] ;
179
-
180
- self . log ( stepCount + " step" + ( stepCount != 1 ? "s" : "" ) ) ;
181
- if ( stepCount > 0 ) {
182
- if ( failedStepCount > 0 )
183
- details . push ( failedStepCount + " failed" ) ;
184
- if ( undefinedStepCount > 0 )
185
- details . push ( undefinedStepCount + " undefined" ) ;
186
- if ( pendingStepCount > 0 )
187
- details . push ( pendingStepCount + " pending" ) ;
188
- if ( skippedStepCount > 0 )
189
- details . push ( skippedStepCount + " skipped" ) ;
190
- if ( passedStepCount > 0 )
191
- details . push ( passedStepCount + " passed" ) ;
192
- self . log ( " (" + details . join ( ', ' ) + ")" ) ;
193
- }
194
- self . log ( "\n" ) ;
195
- } ;
196
-
197
- self . logUndefinedStepSnippets = function logUndefinedStepSnippets ( ) {
198
- var undefinedStepLogBuffer = self . getUndefinedStepLogBuffer ( ) ;
199
- self . log ( "\nYou can implement step definitions for undefined steps with these snippets:\n\n" ) ;
200
- self . log ( undefinedStepLogBuffer ) ;
201
- } ;
202
-
203
74
return self ;
204
75
} ;
205
76
ProgressFormatter . PASSED_STEP_CHARACTER = '.' ;
0 commit comments