@cucumber/html-formatter 11.0.2 → 13.0.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.
Files changed (41) hide show
  1. package/.mocharc.json +2 -2
  2. package/Makefile +16 -2
  3. package/check.js +22 -0
  4. package/default.mk +19 -47
  5. package/dist/cucumber-react.css +291 -0
  6. package/dist/main.js +1 -1
  7. package/dist/main.js.LICENSE.txt +4 -19
  8. package/dist/package.json +22 -35
  9. package/dist/src/CucumberHtmlStream.d.ts +3 -2
  10. package/dist/src/CucumberHtmlStream.d.ts.map +1 -0
  11. package/dist/src/CucumberHtmlStream.js +46 -68
  12. package/dist/src/CucumberHtmlStream.js.map +1 -1
  13. package/dist/src/cli-main.d.ts +1 -0
  14. package/dist/src/cli-main.d.ts.map +1 -0
  15. package/dist/src/cli-main.js +10 -11
  16. package/dist/src/cli-main.js.map +1 -1
  17. package/dist/src/index.mustache.html +1 -0
  18. package/dist/src/main.d.ts +1 -0
  19. package/dist/src/main.d.ts.map +1 -0
  20. package/dist/src/main.js +15 -37
  21. package/dist/src/main.js.map +1 -1
  22. package/dist/test/CucumberHtmlStreamTest.d.ts +1 -0
  23. package/dist/test/CucumberHtmlStreamTest.d.ts.map +1 -0
  24. package/dist/test/CucumberHtmlStreamTest.js +41 -122
  25. package/dist/test/CucumberHtmlStreamTest.js.map +1 -1
  26. package/dist/tsconfig.build.tsbuildinfo +4208 -0
  27. package/logo.svg +7 -0
  28. package/package.json +22 -35
  29. package/src/CucumberHtmlStream.ts +8 -21
  30. package/src/cli-main.ts +7 -20
  31. package/src/index.mustache.html +1 -0
  32. package/src/main.tsx +1 -5
  33. package/test/CucumberHtmlStreamTest.ts +9 -21
  34. package/test/dummy.css +0 -0
  35. package/test/dummy.js +0 -0
  36. package/tsconfig.build.json +13 -0
  37. package/tsconfig.json +1 -24
  38. package/webpack.config.js +1 -17
  39. package/.eslintrc.json +0 -41
  40. package/.nycrc.json +0 -16
  41. package/.prettierrc +0 -5
package/.mocharc.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "require": ["ts-node/register", "source-map-support/register"],
2
+ "require": ["tsconfig-paths/register", "ts-node/register", "source-map-support/register"],
3
3
  "extension": ["ts", "tsx"],
4
4
  "recursive": true,
5
- "timeout": 10000
5
+ "timeout": 10000
6
6
  }
package/Makefile CHANGED
@@ -2,11 +2,25 @@ include default.mk
2
2
 
3
3
  CCK_NDJSONS = $(shell find ../../compatibility-kit/javascript/features -name "*.ndjson")
4
4
  HTML_REPORTS = $(patsubst ../../compatibility-kit/javascript/features/%.ndjson,acceptance/%.html,$(CCK_NDJSONS))
5
+ HTML_REPORT_CHECKS = $(patsubst acceptance/%.html,acceptance/%.html.checked,$(HTML_REPORTS))
5
6
 
6
- .built: webpack.config.js
7
+ .built: webpack.config.js dist/main.js dist/src/index.mustache.html dist/cucumber-react.css
7
8
 
8
- .tested: $(HTML_REPORTS)
9
+ dist/main.js: dist/src/main.js
10
+ ../../node_modules/.bin/webpack-cli
9
11
 
12
+ dist/src/index.mustache.html: src/index.mustache.html
13
+ cp $< $@
14
+
15
+ dist/cucumber-react.css: ../../node_modules/@cucumber/react/dist/src/styles/cucumber-react.css
16
+ cp $< $@
17
+
18
+ .tested: $(HTML_REPORT_CHECKS)
19
+
20
+ .PRECIOUS: acceptance/%.html
10
21
  acceptance/%.html: ../../compatibility-kit/javascript/features/%.ndjson .built
11
22
  mkdir -p $(@D)
12
23
  cat $< | ./bin/cucumber-html-formatter.js --format ndjson > $@
24
+
25
+ acceptance/%.html.checked: acceptance/%.html
26
+ node check.js $< > $@
package/check.js ADDED
@@ -0,0 +1,22 @@
1
+ const fs = require('fs')
2
+ const path = process.argv[2]
3
+ const html = fs.readFileSync(path, 'utf-8')
4
+ const puppeteer = require('puppeteer')
5
+
6
+ async function check() {
7
+ const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox'] })
8
+ const page = await browser.newPage()
9
+ await page.setContent(html)
10
+ const dynamicHTML = await page.evaluate(() => {
11
+ const content = document.querySelector('.cucumber-react')
12
+ return content && content.innerHTML
13
+ })
14
+ await browser.close()
15
+
16
+ if(!dynamicHTML) throw new Error(`The file ${path} did not render a .cucumber-react element. Inspect manually.`)
17
+ }
18
+
19
+ check().then(() => console.log(`${path} rendered OK!`)).catch((err) => {
20
+ console.error(err.stack)
21
+ process.exit(1)
22
+ })
package/default.mk CHANGED
@@ -3,64 +3,42 @@ SHELL := /usr/bin/env bash
3
3
  rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
4
4
  TYPESCRIPT_SOURCE_FILES = $(sort $(call rwildcard,src test,*.ts *.tsx))
5
5
  PRIVATE = $(shell node -e "console.log(require('./package.json').private)")
6
- NPM ?= npm
7
6
  IS_TESTDATA = $(findstring -testdata,${CURDIR})
7
+ NPM_MODULE = $(shell cat package.json | jq .name --raw-output)
8
8
 
9
- ifeq (yarn,$(NPM))
10
- LOCKFILE = yarn.lock
11
- else
12
- LOCKFILE = package-lock.json
13
- endif
14
-
15
- default: .tested .built .linted
9
+ default: .tested
16
10
  .PHONY: default
17
11
 
18
- .deps: $(LOCKFILE)
19
- touch $@
20
-
21
- .codegen: .deps
22
- touch $@
23
-
24
- .built: .codegen $(TYPESCRIPT_SOURCE_FILES)
25
- $(NPM) run build
12
+ .codegen:
26
13
  touch $@
27
14
 
28
15
  .tested: .tested-npm
29
16
 
30
- .tested-npm: .built $(TYPESCRIPT_SOURCE_FILES)
31
- TS_NODE_TRANSPILE_ONLY=1 $(NPM) run test
32
- touch $@
33
-
34
- .linted: $(TYPESCRIPT_SOURCE_FILES) .built
35
- $(NPM) run lint-fix
17
+ .tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
18
+ npm run test
36
19
  touch $@
37
20
 
38
- $(LOCKFILE): package.json
39
- $(NPM) install
40
- touch $@
21
+ pre-release: clean update-version update-dependencies default
22
+ .PHONY: pre-release
41
23
 
42
24
  update-dependencies:
43
- npx npm-check-updates --upgrade
25
+ ../../node_modules/.bin/npm-check-updates --upgrade && \
26
+ pushd ../.. && \
27
+ npm install && \
28
+ npm run build && \
29
+ popd
44
30
  .PHONY: update-dependencies
45
31
 
46
- remove-local-dependencies:
47
- ifeq ($(IS_TESTDATA),-testdata)
48
- # no-op
49
- else
50
- cat package.json | sed 's/"@cucumber\/\(.*\)": "file:..\/..\/.*"/"@cucumber\/\1": "^0.0.0"/' > package.json.tmp
51
- mv package.json.tmp package.json
52
- endif
53
- .PHONY: remove-local-dependencies
54
-
55
- pre-release: remove-local-dependencies update-version update-dependencies clean default
56
- .PHONY: pre-release
57
-
58
32
  update-version:
59
33
  ifeq ($(IS_TESTDATA),-testdata)
60
34
  # no-op
61
35
  else
62
36
  ifdef NEW_VERSION
63
- $(NPM) --no-git-tag-version --allow-same-version version "$(NEW_VERSION)"
37
+ npm --no-git-tag-version --allow-same-version version "$(NEW_VERSION)"
38
+ # Update all npm packages that depend on us
39
+ pushd ../.. && \
40
+ ./scripts/npm-each update_npm_dependency_if_exists package.json "$(NPM_MODULE)" "^$(NEW_VERSION)"
41
+ # npm install
64
42
  else
65
43
  @echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
66
44
  exit 1
@@ -73,7 +51,7 @@ ifeq ($(IS_TESTDATA),-testdata)
73
51
  # no-op
74
52
  else
75
53
  ifneq (true,$(PRIVATE))
76
- $(NPM) publish --access public
54
+ npm publish --access public
77
55
  else
78
56
  @echo "Not publishing private npm module"
79
57
  endif
@@ -81,17 +59,11 @@ endif
81
59
  .PHONY: publish
82
60
 
83
61
  post-release:
84
- ifeq ($(IS_TESTDATA),-testdata)
85
- # no-op
86
- else
87
- cat package.json | sed 's/"@cucumber\/\(.*\)": .*"/"@cucumber\/\1": "file:..\/..\/\1\/javascript"/' > package.json.tmp
88
- mv package.json.tmp package.json
89
- endif
90
62
  .PHONY: post-release
91
63
 
92
64
  clean: clean-javascript
93
65
  .PHONY: clean
94
66
 
95
67
  clean-javascript:
96
- rm -rf .deps .codegen .built* .tested* .linted package-lock.json yarn.lock node_modules coverage dist acceptance
68
+ rm -rf .deps .codegen .tested* node_modules coverage dist acceptance
97
69
  .PHONY: clean-javascript
@@ -0,0 +1,291 @@
1
+ .cucumber-react .cucumber-status--passed {
2
+ color: #2CB14A;
3
+ }
4
+ .cucumber-react .cucumber-status--skipped {
5
+ color: #00A0CC;
6
+ }
7
+ .cucumber-react .cucumber-status--pending {
8
+ color: #FFAD33;
9
+ }
10
+ .cucumber-react .cucumber-status--undefined {
11
+ color: #FFAD33;
12
+ }
13
+ .cucumber-react .cucumber-status--ambiguous {
14
+ color: #F4EBFD;
15
+ }
16
+ .cucumber-react .cucumber-status--failed {
17
+ color: #BB0000;
18
+ }
19
+ .cucumber-react .cucumber-status--unknown {
20
+ color: #B6BECB;
21
+ }
22
+ .cucumber-react h1, .cucumber-react h2, .cucumber-react h3 {
23
+ padding: 0;
24
+ margin: 0;
25
+ }
26
+ .cucumber-react a {
27
+ color: inherit;
28
+ }
29
+ .cucumber-react .gherkin-document-list {
30
+ font: 14px "Open Sans", sans-serif;
31
+ color: #161C24;
32
+ background: #fff;
33
+ overflow-x: hidden;
34
+ }
35
+ .cucumber-react .cucumber-title {
36
+ margin-top: 0.3em;
37
+ margin-bottom: 0;
38
+ display: inline-block;
39
+ }
40
+ .cucumber-react .cucumber-title__keyword {
41
+ font-weight: bold;
42
+ }
43
+ .cucumber-react .cucumber-title__text {
44
+ font-weight: normal;
45
+ }
46
+ .cucumber-react .cucumber-tags {
47
+ padding: 0;
48
+ margin-bottom: 0;
49
+ }
50
+ .cucumber-react .cucumber-tags .cucumber-tag {
51
+ display: inline;
52
+ list-style-type: none;
53
+ padding: 4px 8px 4px 8px;
54
+ margin-right: 6px;
55
+ background-color: #FFFFFF;
56
+ border-radius: 6px;
57
+ }
58
+ .cucumber-react .cucumber-feature__icon {
59
+ padding-top: 0.35em;
60
+ padding-right: 0.5em;
61
+ }
62
+ .cucumber-react .cucumber-description,
63
+ .cucumber-react .cucumber-children {
64
+ margin-left: 1em;
65
+ }
66
+ .cucumber-react .cucumber-feature,
67
+ .cucumber-react .cucumber-rule,
68
+ .cucumber-react .cucumber-scenario,
69
+ .cucumber-react .cucumber-background {
70
+ margin-bottom: 1em;
71
+ }
72
+ .cucumber-react .cucumber-steps {
73
+ list-style-type: none;
74
+ padding-left: 10px;
75
+ }
76
+ .cucumber-react .cucumber-steps .cucumber-step {
77
+ display: flex;
78
+ }
79
+ .cucumber-react .cucumber-steps .cucumber-step__status {
80
+ padding-top: 0.2em;
81
+ padding-right: 0.5em;
82
+ }
83
+ .cucumber-react .cucumber-steps .cucumber-step__content {
84
+ flex-grow: 1;
85
+ max-width: calc(100% - 1.5em);
86
+ }
87
+ .cucumber-react .cucumber-steps .cucumber-step__keyword {
88
+ font-weight: bold;
89
+ }
90
+ .cucumber-react .cucumber-steps .cucumber-step__text {
91
+ font-weight: normal;
92
+ }
93
+ .cucumber-react .cucumber-steps .cucumber-step__param {
94
+ font-weight: normal;
95
+ font-style: italic;
96
+ }
97
+ .cucumber-react .cucumber-table {
98
+ border-collapse: collapse;
99
+ margin-top: 0.5em;
100
+ margin-bottom: 0.5em;
101
+ }
102
+ .cucumber-react .cucumber-table__header-cell {
103
+ border: 1px solid #4B5662;
104
+ padding: 0.3em;
105
+ }
106
+ .cucumber-react .cucumber-table__cell {
107
+ border: 1px solid #4B5662;
108
+ padding: 0.3em;
109
+ }
110
+ .cucumber-react .cucumber-table__cell__status {
111
+ padding: 0.5em 3px 3px 3px;
112
+ }
113
+ .cucumber-react .cucumber-table__cell__step {
114
+ flex-grow: 1;
115
+ }
116
+ .cucumber-react .cucumber-code {
117
+ padding: 0.25em;
118
+ background-color: #ebebeb;
119
+ }
120
+ .cucumber-react .cucumber-error {
121
+ padding: 0.5em;
122
+ margin: 0;
123
+ overflow-x: auto;
124
+ }
125
+ .cucumber-react .cucumber-no-documents {
126
+ font: 14px "Open Sans", sans-serif;
127
+ }
128
+ .cucumber-react .cucumber-attachment__icon {
129
+ margin-right: 0.5em;
130
+ }
131
+ .cucumber-react .cucumber-attachment__image {
132
+ max-width: 100%;
133
+ margin-top: 1em;
134
+ }
135
+ .cucumber-react .cucumber-attachment__text {
136
+ background-color: #ebebeb;
137
+ padding: 0.5em;
138
+ overflow-x: auto;
139
+ }
140
+ .cucumber-react .cucumber-anchor {
141
+ position: relative;
142
+ display: flex;
143
+ align-items: center;
144
+ margin-top: 0.3em;
145
+ }
146
+ .cucumber-react .cucumber-anchor__link {
147
+ opacity: 0;
148
+ transition: all 0.35s ease-in-out;
149
+ position: absolute;
150
+ left: -20px;
151
+ display: flex;
152
+ align-items: center;
153
+ }
154
+ .cucumber-react .cucumber-anchor__icon {
155
+ margin-right: 0.5em;
156
+ }
157
+ .cucumber-react .cucumber-anchor:hover a {
158
+ opacity: 1;
159
+ width: max-content;
160
+ transition: all 0.35s ease-in-out;
161
+ }
162
+ .cucumber-react .cucumber-anchor > * {
163
+ height: 100%;
164
+ margin-top: 0px;
165
+ }
166
+
167
+ .cucumber-report-header {
168
+ width: 100%;
169
+ display: grid;
170
+ grid-template-columns: 1fr;
171
+ border: 1px solid rgba(0, 0, 0, 0.1);
172
+ font: 11px "Open Sans", sans-serif;
173
+ margin-bottom: 1em;
174
+ }
175
+ .cucumber-report-header > * {
176
+ padding: 1em;
177
+ }
178
+ .cucumber-report-header .cucumber-status-filter {
179
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
180
+ }
181
+ .cucumber-report-header .cucumber-status-filter table {
182
+ width: 100%;
183
+ }
184
+ .cucumber-report-header .cucumber-execution-data {
185
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
186
+ }
187
+ .cucumber-report-header .cucumber-search-bar {
188
+ border-right: 0;
189
+ }
190
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-search {
191
+ width: 100%;
192
+ display: grid;
193
+ grid-template-columns: 9fr 1fr;
194
+ }
195
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-search input {
196
+ padding: 0.4em;
197
+ border-radius: 0;
198
+ }
199
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-search button {
200
+ height: 2.2em;
201
+ padding-left: 0.6em;
202
+ padding-right: 0.6em;
203
+ }
204
+ .cucumber-report-header .cucumber-search-bar p.help {
205
+ font-size: 80%;
206
+ }
207
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-filter ul {
208
+ display: inline;
209
+ }
210
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-filter ul li {
211
+ list-style-type: none;
212
+ display: inline-block;
213
+ }
214
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-filter ul li input {
215
+ display: inline-block;
216
+ width: auto;
217
+ height: 0.6em;
218
+ }
219
+ .cucumber-report-header .cucumber-search-bar form.cucumber-search-bar-filter ul li label {
220
+ padding-right: 1em;
221
+ }
222
+
223
+ @media only screen and (min-width: 600px) {
224
+ .cucumber-report-header {
225
+ grid-template-columns: 1fr 1fr;
226
+ }
227
+ .cucumber-report-header .cucumber-status-filter {
228
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
229
+ }
230
+ .cucumber-report-header .cucumber-search-bar {
231
+ grid-column: 1/-1;
232
+ }
233
+ }
234
+ @media only screen and (min-width: 992px) {
235
+ .cucumber-report-header {
236
+ grid-template-columns: 1fr 1fr 2fr;
237
+ }
238
+ .cucumber-report-header .cucumber-status-filter {
239
+ border-bottom: 0;
240
+ }
241
+ .cucumber-report-header .cucumber-execution-data {
242
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
243
+ border-bottom: 0;
244
+ }
245
+ .cucumber-report-header .cucumber-search-bar {
246
+ grid-column: auto;
247
+ }
248
+ }
249
+ .accordion {
250
+ border: 1px solid rgba(0, 0, 0, 0.1);
251
+ border-radius: 2px;
252
+ }
253
+
254
+ .accordion__item + .accordion__item {
255
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
256
+ }
257
+
258
+ .accordion__button {
259
+ background-color: #f4f4f4;
260
+ color: #444;
261
+ cursor: pointer;
262
+ padding: 10px;
263
+ width: 100%;
264
+ text-align: left;
265
+ border: none;
266
+ }
267
+
268
+ .accordion__button:hover {
269
+ background-color: #ddd;
270
+ }
271
+
272
+ .accordion__button:before {
273
+ display: inline-block;
274
+ content: '';
275
+ height: 10px;
276
+ width: 10px;
277
+ margin-right: 12px;
278
+ border-bottom: 2px solid currentColor;
279
+ border-right: 2px solid currentColor;
280
+ transform: rotate(-45deg);
281
+ }
282
+
283
+ .accordion__button[aria-expanded='true']::before,
284
+ .accordion__button[aria-selected='true']::before {
285
+ transform: rotate(45deg);
286
+ }
287
+
288
+ .accordion__panel {
289
+ padding: 20px;
290
+ animation: fadein 0.35s ease-in;
291
+ }