3
3
*/
4
4
5
5
6
- module . exports = ( function ( ) {
7
-
8
- var grunt = require ( 'grunt' ) ,
9
- path = require ( 'path' ) ,
10
- fs = require ( 'fs' ) ,
11
- currentDir = path . dirname ( fs . realpathSync ( __filename ) ) ,
12
- statuses = {
13
- FAILED : 'failed' ,
14
- PASSED : 'passed' ,
15
- UNDEFINED : 'undefined' ,
16
- PENDING : 'pending' ,
17
- SKIPPED : 'skipped'
18
- } ,
19
- html = '' ,
20
- templates ;
6
+ module . exports = ( function ( ) {
7
+
8
+ var lodashTemplate = require ( 'lodash.template' ) ,
9
+ path = require ( 'path' ) ,
10
+ fs = require ( 'fs' ) ,
11
+ statuses = {
12
+ FAILED : 'failed' ,
13
+ PASSED : 'passed' ,
14
+ UNDEFINED : 'undefined' ,
15
+ PENDING : 'pending' ,
16
+ SKIPPED : 'skipped'
17
+ } ,
18
+ html = '' ,
19
+ templates ;
21
20
22
21
/**
23
22
* Convert html tags to html entites
24
23
* @param str
25
24
* @returns {XML|string|*|void }
26
25
*/
27
- function toHtmlEntities ( str ) {
26
+ function toHtmlEntities ( str ) {
28
27
str = str || '' ;
29
- return str . replace ( / ./ gm, function ( s ) {
28
+ return str . replace ( / ./ gm, function ( s ) {
30
29
return "&#" + s . charCodeAt ( 0 ) + ";" ;
31
30
} ) ;
32
31
}
@@ -38,17 +37,14 @@ module.exports = (function() {
38
37
* @returns string
39
38
*/
40
39
function getStep ( step ) {
41
- var template = grunt . file . read ( templates . stepTemplate ) ,
42
- stepTemplate ;
43
-
44
- stepTemplate = grunt . template . process ( template , {
45
- data :{
46
- status : step . result ? step . result . status : '' ,
47
- errorDetails : step . result ? toHtmlEntities ( step . result . error_message ) : '' ,
48
- name : step . keyword + step . name
49
- }
40
+ var template = fs . readFileSync ( templates . stepTemplate ) ,
41
+ compiled = lodashTemplate ( template . toString ( ) ) ;
42
+
43
+ return compiled ( {
44
+ status : step . result ? step . result . status : '' ,
45
+ errorDetails : step . result ? toHtmlEntities ( step . result . error_message ) : '' ,
46
+ name : step . keyword + step . name
50
47
} ) ;
51
- return stepTemplate ;
52
48
}
53
49
54
50
/**
@@ -58,16 +54,13 @@ module.exports = (function() {
58
54
* @returns string
59
55
*/
60
56
function getScenario ( scenario , isPassed ) {
61
- var template = grunt . file . read ( templates . scenarioTemplate ) ,
62
- scenarioTemplate ;
57
+ var template = fs . readFileSync ( templates . scenarioTemplate ) ,
58
+ compiled = lodashTemplate ( template . toString ( ) ) ;
63
59
64
- scenarioTemplate = grunt . template . process ( template , {
65
- data :{
66
- status : isPassed ? statuses . PASSED : statuses . FAILED ,
67
- name : scenario . keyword + ':' + scenario . name
68
- }
60
+ return compiled ( {
61
+ status : isPassed ? statuses . PASSED : statuses . FAILED ,
62
+ name : scenario . keyword + ':' + scenario . name
69
63
} ) ;
70
- return scenarioTemplate ;
71
64
}
72
65
73
66
/**
@@ -77,19 +70,16 @@ module.exports = (function() {
77
70
*/
78
71
function getFeature ( feature , scenariosNumberInFeature , passedScenariosNumberInFeature , stepsNumberInFeature , passedStepsInFeature ) {
79
72
80
- var template = grunt . file . read ( templates . featureTemplate ) ,
81
- featureTemplate ;
73
+ var template = fs . readFileSync ( templates . featureTemplate ) ,
74
+ compiled = lodashTemplate ( template . toString ( ) ) ;
82
75
83
- featureTemplate = grunt . template . process ( template , {
84
- data :{
85
- name : feature . name ,
86
- scenariosNumberInFeature : scenariosNumberInFeature ,
87
- passedScenariosNumberInFeature : passedScenariosNumberInFeature ,
88
- stepsNumberInFeature : stepsNumberInFeature ,
89
- passedStepsInFeature : passedStepsInFeature
90
- }
76
+ return compiled ( {
77
+ name : feature . name ,
78
+ scenariosNumberInFeature : scenariosNumberInFeature ,
79
+ passedScenariosNumberInFeature : passedScenariosNumberInFeature ,
80
+ stepsNumberInFeature : stepsNumberInFeature ,
81
+ passedStepsInFeature : passedStepsInFeature
91
82
} ) ;
92
- return featureTemplate ;
93
83
}
94
84
95
85
/**
@@ -111,15 +101,14 @@ module.exports = (function() {
111
101
* @returns {* }
112
102
*/
113
103
function getHeader ( scenariosNumber , passedScenarios , stepsNumber , passedSteps ) {
114
- var template = grunt . file . read ( templates . headerTemplate ) ,
115
- header = grunt . template . process ( template , {
116
- data :{
117
- status : areTestsPassed ( scenariosNumber , passedScenarios ) ? 'passed' : 'failed' ,
118
- scenariosSummary : scenariosNumber + ' scenarios ' + '( ' + passedScenarios + ' passed)' ,
119
- stepsSummary : stepsNumber + ' steps ' + '( ' + passedSteps + ' passed)'
120
- }
121
- } ) ;
122
- return header ;
104
+ var template = fs . readFileSync ( templates . headerTemplate ) ,
105
+ compiled = lodashTemplate ( template . toString ( ) ) ;
106
+
107
+ return compiled ( {
108
+ status : areTestsPassed ( scenariosNumber , passedScenarios ) ? 'passed' : 'failed' ,
109
+ scenariosSummary : scenariosNumber + ' scenarios ' + '( ' + passedScenarios + ' passed)' ,
110
+ stepsSummary : stepsNumber + ' steps ' + '( ' + passedSteps + ' passed)'
111
+ } ) ;
123
112
}
124
113
125
114
/**
@@ -129,19 +118,19 @@ module.exports = (function() {
129
118
*/
130
119
function generateHTML ( testResults ) {
131
120
var stepsHtml = '' ,
132
- header = '' ,
133
- isPassed = false ,
134
- passedScenarios = 0 ,
135
- passedSteps = 0 ,
136
- stepsNumber = 0 ,
137
- scenariosNumber = 0 ,
138
- scenariosNumberInFeature = 0 ,
139
- passedScenariosNumberInFeature = 0 ,
140
- stepsNumberInFeature = 0 ,
141
- passedStepsInFeature = 0 ,
142
- scenariosHtml = '' ,
143
- element ,
144
- step ;
121
+ header = '' ,
122
+ isPassed = false ,
123
+ passedScenarios = 0 ,
124
+ passedSteps = 0 ,
125
+ stepsNumber = 0 ,
126
+ scenariosNumber = 0 ,
127
+ scenariosNumberInFeature = 0 ,
128
+ passedScenariosNumberInFeature = 0 ,
129
+ stepsNumberInFeature = 0 ,
130
+ passedStepsInFeature = 0 ,
131
+ scenariosHtml = '' ,
132
+ element ,
133
+ step ;
145
134
146
135
for ( var i = 0 ; i < testResults . length ; i ++ ) {
147
136
@@ -181,7 +170,7 @@ module.exports = (function() {
181
170
}
182
171
}
183
172
}
184
- html += getFeature ( testResults [ i ] , scenariosNumberInFeature , passedScenariosNumberInFeature , stepsNumberInFeature , passedStepsInFeature ) ;
173
+ html += getFeature ( testResults [ i ] , scenariosNumberInFeature , passedScenariosNumberInFeature , stepsNumberInFeature , passedStepsInFeature ) ;
185
174
html += scenariosHtml ;
186
175
}
187
176
header = getHeader ( scenariosNumber , passedScenarios , stepsNumber , passedSteps ) ;
@@ -194,11 +183,11 @@ module.exports = (function() {
194
183
* @returns string which contains html code of report
195
184
*/
196
185
function generateReport ( html ) {
197
- var template = grunt . file . read ( templates . reportTemplate ) ;
198
- return grunt . template . process ( template , {
199
- data : {
200
- scenarios : html
201
- }
186
+ var template = fs . readFileSync ( templates . reportTemplate ) ,
187
+ compiled = lodashTemplate ( template . toString ( ) ) ;
188
+
189
+ return compiled ( {
190
+ scenarios : html
202
191
} ) ;
203
192
}
204
193
0 commit comments