@testomatio/reporter 2.1.0-beta-nightwatch → 2.1.0-beta.1-codeceptjs
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.
- package/README.md +1 -0
- package/lib/adapter/codecept.js +288 -202
- package/lib/adapter/cypress-plugin/index.js +0 -2
- package/lib/adapter/mocha.js +0 -1
- package/lib/adapter/nightwatch.js +5 -5
- package/lib/adapter/playwright.js +11 -3
- package/lib/adapter/webdriver.d.ts +1 -1
- package/lib/adapter/webdriver.js +18 -8
- package/lib/bin/cli.js +73 -8
- package/lib/bin/reportXml.js +4 -2
- package/lib/bin/startTest.js +3 -2
- package/lib/bin/uploadArtifacts.js +5 -4
- package/lib/client.js +30 -10
- package/lib/data-storage.d.ts +5 -5
- package/lib/data-storage.js +23 -13
- package/lib/junit-adapter/csharp.d.ts +1 -0
- package/lib/junit-adapter/csharp.js +11 -1
- package/lib/pipe/bitbucket.d.ts +2 -0
- package/lib/pipe/bitbucket.js +38 -26
- package/lib/pipe/debug.js +27 -6
- package/lib/pipe/github.d.ts +2 -2
- package/lib/pipe/github.js +35 -3
- package/lib/pipe/gitlab.d.ts +2 -0
- package/lib/pipe/gitlab.js +27 -9
- package/lib/pipe/html.js +0 -3
- package/lib/pipe/index.js +17 -7
- package/lib/pipe/testomatio.d.ts +3 -2
- package/lib/pipe/testomatio.js +85 -75
- package/lib/replay.d.ts +31 -0
- package/lib/replay.js +255 -0
- package/lib/reporter-functions.d.ts +7 -0
- package/lib/reporter-functions.js +36 -0
- package/lib/reporter.d.ts +15 -12
- package/lib/reporter.js +4 -1
- package/lib/services/artifacts.d.ts +1 -1
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.js +2 -0
- package/lib/services/key-values.d.ts +1 -1
- package/lib/services/labels.d.ts +22 -0
- package/lib/services/labels.js +62 -0
- package/lib/services/logger.d.ts +1 -1
- package/lib/services/logger.js +1 -2
- package/lib/template/testomatio.hbs +443 -68
- package/lib/uploader.js +10 -6
- package/lib/utils/constants.d.ts +12 -0
- package/lib/utils/constants.js +15 -0
- package/lib/utils/utils.d.ts +10 -1
- package/lib/utils/utils.js +70 -22
- package/lib/xmlReader.js +54 -19
- package/package.json +16 -11
- package/src/adapter/codecept.js +320 -214
- package/src/adapter/cypress-plugin/index.js +0 -2
- package/src/adapter/mocha.js +0 -1
- package/src/adapter/nightwatch.js +1 -1
- package/src/adapter/playwright.js +10 -7
- package/src/adapter/webdriver.js +2 -2
- package/src/bin/cli.js +70 -2
- package/src/bin/reportXml.js +4 -1
- package/src/bin/startTest.js +2 -1
- package/src/bin/uploadArtifacts.js +2 -1
- package/src/client.js +18 -3
- package/src/data-storage.js +6 -6
- package/src/junit-adapter/csharp.js +13 -1
- package/src/pipe/bitbucket.js +22 -24
- package/src/pipe/debug.js +26 -5
- package/src/pipe/github.js +1 -2
- package/src/pipe/gitlab.js +27 -9
- package/src/pipe/html.js +1 -4
- package/src/pipe/testomatio.js +106 -105
- package/src/replay.js +262 -0
- package/src/reporter-functions.js +41 -0
- package/src/reporter.js +3 -0
- package/src/services/index.js +2 -0
- package/src/services/labels.js +59 -0
- package/src/services/logger.js +1 -2
- package/src/template/testomatio.hbs +443 -68
- package/src/uploader.js +11 -6
- package/src/utils/constants.js +12 -0
- package/src/utils/utils.js +46 -13
- package/src/xmlReader.js +70 -18
|
@@ -28,74 +28,449 @@
|
|
|
28
28
|
<title>Report Testomat.io</title>
|
|
29
29
|
{{/if}}
|
|
30
30
|
<style>
|
|
31
|
-
body {
|
|
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
|
-
|
|
31
|
+
body {
|
|
32
|
+
padding: 0;
|
|
33
|
+
margin: 0;
|
|
34
|
+
font-family: 'Inter', sans-serif;
|
|
35
|
+
}
|
|
36
|
+
header,
|
|
37
|
+
div,
|
|
38
|
+
p,
|
|
39
|
+
form,
|
|
40
|
+
input,
|
|
41
|
+
a,
|
|
42
|
+
span,
|
|
43
|
+
button {
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
}
|
|
46
|
+
img {
|
|
47
|
+
width: 100%;
|
|
48
|
+
display: block;
|
|
49
|
+
max-width: 100%;
|
|
50
|
+
height: auto;
|
|
51
|
+
}
|
|
52
|
+
p,
|
|
53
|
+
span {
|
|
54
|
+
font-weight: 400;
|
|
55
|
+
font-size: 14px;
|
|
56
|
+
color: grey;
|
|
57
|
+
margin: 0;
|
|
58
|
+
}
|
|
59
|
+
.report {
|
|
60
|
+
padding-top: 15px;
|
|
61
|
+
}
|
|
62
|
+
.level_1 {
|
|
63
|
+
margin-bottom: 20px;
|
|
64
|
+
border-bottom: 2px solid #ababab;
|
|
65
|
+
padding-bottom: 20px;
|
|
66
|
+
}
|
|
67
|
+
.header {
|
|
68
|
+
display: flex;
|
|
69
|
+
justify-content: space-between;
|
|
70
|
+
align-items: center;
|
|
71
|
+
}
|
|
72
|
+
.header__point {
|
|
73
|
+
width: 8px;
|
|
74
|
+
height: 8px;
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
margin-right: 15px;
|
|
77
|
+
}
|
|
78
|
+
.header__point_red {
|
|
79
|
+
background: red;
|
|
80
|
+
}
|
|
81
|
+
.header__block {
|
|
82
|
+
display: flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
}
|
|
85
|
+
.header__case {
|
|
86
|
+
display: flex;
|
|
87
|
+
align-items: center;
|
|
88
|
+
margin-right: 15px;
|
|
89
|
+
}
|
|
90
|
+
.header__case p {
|
|
91
|
+
margin-right: 7px;
|
|
92
|
+
}
|
|
93
|
+
.header__case span {
|
|
94
|
+
color: black;
|
|
95
|
+
}
|
|
96
|
+
.header__block button {
|
|
97
|
+
margin-left: 15px;
|
|
98
|
+
}
|
|
99
|
+
.header__type {
|
|
100
|
+
font-size: 15px;
|
|
101
|
+
font-weight: 600;
|
|
102
|
+
background: #ca95ff;
|
|
103
|
+
color: #fff;
|
|
104
|
+
border-radius: 5px;
|
|
105
|
+
padding: 5px 35px;
|
|
106
|
+
margin-right: 15px;
|
|
107
|
+
}
|
|
108
|
+
.btn {
|
|
109
|
+
box-shadow: none !important;
|
|
110
|
+
}
|
|
111
|
+
.btn-report {
|
|
112
|
+
text-decoration: none;
|
|
113
|
+
font-weight: 600;
|
|
114
|
+
background: #ca95ff;
|
|
115
|
+
color: #fff !important;
|
|
116
|
+
border-radius: 5px;
|
|
117
|
+
padding: 9px 37px;
|
|
118
|
+
font-size: 15px;
|
|
119
|
+
}
|
|
120
|
+
.run-style {
|
|
121
|
+
color: #5d5c5d;
|
|
122
|
+
}
|
|
123
|
+
.run-span {
|
|
124
|
+
font-weight: 800 !important;
|
|
125
|
+
color: #5d5c5d !important;
|
|
126
|
+
}
|
|
127
|
+
.btn-report:hover {
|
|
128
|
+
background: #b468ff;
|
|
129
|
+
}
|
|
130
|
+
.border-none {
|
|
131
|
+
border: none;
|
|
132
|
+
}
|
|
133
|
+
.level_4 {
|
|
134
|
+
height: 53px !important;
|
|
135
|
+
}
|
|
136
|
+
.inputSearch:focus {
|
|
137
|
+
box-shadow: none;
|
|
138
|
+
border: 1px solid black !important;
|
|
139
|
+
background: #fff !important;
|
|
140
|
+
border-radius: 3px;
|
|
141
|
+
}
|
|
142
|
+
.btn-all {
|
|
143
|
+
border: 1px solid #a0caff !important;
|
|
144
|
+
}
|
|
145
|
+
.btn-passed {
|
|
146
|
+
border: 1px solid #75b583 !important;
|
|
147
|
+
}
|
|
148
|
+
.btn-failed {
|
|
149
|
+
border: 1px solid #ff6363 !important;
|
|
150
|
+
}
|
|
151
|
+
.btn-skipped {
|
|
152
|
+
border: 1px solid #ffc350 !important;
|
|
153
|
+
}
|
|
154
|
+
.btn-all:hover,
|
|
155
|
+
.btn-all:focus {
|
|
156
|
+
color: #a0caff !important;
|
|
157
|
+
background: #fff !important;
|
|
158
|
+
border: 1px solid #a0caff !important;
|
|
159
|
+
font-weight: 700 !important;
|
|
160
|
+
}
|
|
161
|
+
.btn-all:hover span,
|
|
162
|
+
.btn-all:focus span {
|
|
163
|
+
color: #a0caff !important;
|
|
164
|
+
font-weight: 700 !important;
|
|
165
|
+
}
|
|
166
|
+
.allTest:checked + .btn-all span {
|
|
167
|
+
color: #a0caff !important;
|
|
168
|
+
}
|
|
169
|
+
.allTest:checked + .btn-all {
|
|
170
|
+
color: #a0caff !important;
|
|
171
|
+
background: #fff !important;
|
|
172
|
+
border: 1px solid #a0caff !important;
|
|
173
|
+
font-weight: 700 !important;
|
|
174
|
+
}
|
|
175
|
+
.btn-passed:hover,
|
|
176
|
+
.btn-passed:focus {
|
|
177
|
+
color: #75b583 !important;
|
|
178
|
+
border: 1px solid #75b583 !important;
|
|
179
|
+
background: #fff !important;
|
|
180
|
+
font-weight: 700 !important;
|
|
181
|
+
}
|
|
182
|
+
.btn-passed:hover span,
|
|
183
|
+
.btn-passed:focus span {
|
|
184
|
+
color: #75b583 !important;
|
|
185
|
+
font-weight: 700 !important;
|
|
186
|
+
}
|
|
187
|
+
.passedTest:checked + .btn-passed span {
|
|
188
|
+
color: #75b583 !important;
|
|
189
|
+
font-weight: 700 !important;
|
|
190
|
+
}
|
|
191
|
+
.passedTest:checked + .btn-passed {
|
|
192
|
+
color: #75b583 !important;
|
|
193
|
+
border: 1px solid #75b583 !important;
|
|
194
|
+
background: #fff !important;
|
|
195
|
+
font-weight: 700 !important;
|
|
196
|
+
}
|
|
197
|
+
.btn-failed:hover,
|
|
198
|
+
.btn-failed:focus {
|
|
199
|
+
color: #ff6363 !important;
|
|
200
|
+
border: 1px solid #ff6363 !important;
|
|
201
|
+
background: #fff !important;
|
|
202
|
+
font-weight: 700 !important;
|
|
203
|
+
}
|
|
204
|
+
.btn-failed:hover span,
|
|
205
|
+
.btn-failed:focus span {
|
|
206
|
+
color: #ff6363 !important;
|
|
207
|
+
font-weight: 700 !important;
|
|
208
|
+
}
|
|
209
|
+
.failedTest:checked + .btn-failed span {
|
|
210
|
+
color: #ff6363 !important;
|
|
211
|
+
font-weight: 700 !important;
|
|
212
|
+
}
|
|
213
|
+
.failedTest:checked + .btn-failed {
|
|
214
|
+
color: #ff6363 !important;
|
|
215
|
+
border: 1px solid #ff6363 !important;
|
|
216
|
+
background: #fff !important;
|
|
217
|
+
font-weight: 700 !important;
|
|
218
|
+
}
|
|
219
|
+
.btn-skipped:hover,
|
|
220
|
+
.btn-skipped:focus {
|
|
221
|
+
color: #ffc350 !important;
|
|
222
|
+
border: 1px solid #ffc350 !important;
|
|
223
|
+
background: #fff !important;
|
|
224
|
+
font-weight: 700 !important;
|
|
225
|
+
}
|
|
226
|
+
.btn-skipped:hover span,
|
|
227
|
+
.btn-skipped:focus span {
|
|
228
|
+
color: #ffc350 !important;
|
|
229
|
+
font-weight: 700 !important;
|
|
230
|
+
}
|
|
231
|
+
.skippedTest:checked + .btn-skipped span {
|
|
232
|
+
color: #ffc350 !important;
|
|
233
|
+
font-weight: 700 !important;
|
|
234
|
+
}
|
|
235
|
+
.skippedTest:checked + .btn-skipped {
|
|
236
|
+
color: #ffc350 !important;
|
|
237
|
+
border: 1px solid #ffc350 !important;
|
|
238
|
+
background: #fff !important;
|
|
239
|
+
font-weight: 700 !important;
|
|
240
|
+
}
|
|
241
|
+
.passed {
|
|
242
|
+
color: #75b583;
|
|
243
|
+
}
|
|
244
|
+
.failed {
|
|
245
|
+
color: #ff6363;
|
|
246
|
+
}
|
|
247
|
+
.skipped {
|
|
248
|
+
color: #ffc350;
|
|
249
|
+
}
|
|
250
|
+
.testWrapp {
|
|
251
|
+
margin-top: 45px;
|
|
252
|
+
}
|
|
253
|
+
.fa-arrow-right {
|
|
254
|
+
display: none !important;
|
|
255
|
+
}
|
|
256
|
+
.header__type:hover {
|
|
257
|
+
background: #b468ff;
|
|
258
|
+
}
|
|
259
|
+
.header__case i {
|
|
260
|
+
color: grey;
|
|
261
|
+
margin-right: 5px;
|
|
262
|
+
}
|
|
263
|
+
.title {
|
|
264
|
+
display: flex;
|
|
265
|
+
margin-bottom: 20px;
|
|
266
|
+
}
|
|
267
|
+
.title p {
|
|
268
|
+
color: #262523;
|
|
269
|
+
font-size: 15px;
|
|
270
|
+
font-weight: 500;
|
|
271
|
+
margin-right: 5px;
|
|
272
|
+
}
|
|
273
|
+
.statright {
|
|
274
|
+
display: flex;
|
|
275
|
+
}
|
|
276
|
+
.statdesc {
|
|
277
|
+
display: flex;
|
|
278
|
+
flex-direction: column;
|
|
279
|
+
}
|
|
280
|
+
.statdesc__row {
|
|
281
|
+
padding: 15px 25px;
|
|
282
|
+
display: flex;
|
|
283
|
+
border-radius: 5px;
|
|
284
|
+
}
|
|
285
|
+
.statdesc__row_first {
|
|
286
|
+
width: 150px;
|
|
287
|
+
}
|
|
288
|
+
.statdesc__row:nth-child(odd) {
|
|
289
|
+
background: #f6faff;
|
|
290
|
+
}
|
|
291
|
+
.statdesc__row p,
|
|
292
|
+
.statdesc__row span {
|
|
293
|
+
font-weight: semi-bold;
|
|
294
|
+
font-size: 11px;
|
|
295
|
+
}
|
|
296
|
+
.statdesc {
|
|
297
|
+
width: 100%;
|
|
298
|
+
}
|
|
299
|
+
.statstatus {
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
}
|
|
303
|
+
.statstatus p {
|
|
304
|
+
font-weight: bold;
|
|
305
|
+
}
|
|
306
|
+
.statstatus div {
|
|
307
|
+
font-weight: bold;
|
|
308
|
+
}
|
|
309
|
+
.statstatus_failed div {
|
|
310
|
+
width: 10px;
|
|
311
|
+
height: 10px;
|
|
312
|
+
border-radius: 50%;
|
|
313
|
+
margin-right: 5px;
|
|
314
|
+
}
|
|
315
|
+
.statstatus_failed p {
|
|
316
|
+
color: red;
|
|
317
|
+
text-transform: uppercase;
|
|
318
|
+
}
|
|
319
|
+
.statstatus_failed div {
|
|
320
|
+
background: red;
|
|
321
|
+
}
|
|
322
|
+
.statstatus_passed div {
|
|
323
|
+
width: 10px;
|
|
324
|
+
height: 10px;
|
|
325
|
+
border-radius: 50%;
|
|
326
|
+
margin-right: 5px;
|
|
327
|
+
text-transform: uppercase;
|
|
328
|
+
}
|
|
329
|
+
.statstatus_passed div {
|
|
330
|
+
background: green;
|
|
331
|
+
}
|
|
332
|
+
.statstatus_passed p {
|
|
333
|
+
color: green;
|
|
334
|
+
text-transform: uppercase;
|
|
335
|
+
}
|
|
336
|
+
.statstatus_skipped div {
|
|
337
|
+
width: 10px;
|
|
338
|
+
height: 10px;
|
|
339
|
+
border-radius: 50%;
|
|
340
|
+
margin-right: 5px;
|
|
341
|
+
text-transform: uppercase;
|
|
342
|
+
}
|
|
343
|
+
.statstatus_skipped div {
|
|
344
|
+
background: yellow;
|
|
345
|
+
}
|
|
346
|
+
.statstatus_skipped p {
|
|
347
|
+
color: yellow;
|
|
348
|
+
text-transform: uppercase;
|
|
349
|
+
}
|
|
350
|
+
.fa-magnifying-glass {
|
|
351
|
+
font-size: 24px;
|
|
352
|
+
color: gray;
|
|
353
|
+
}
|
|
354
|
+
.numTest {
|
|
355
|
+
font-weight: 500;
|
|
356
|
+
font-size: 16px;
|
|
357
|
+
color: #0d6efd;
|
|
358
|
+
}
|
|
359
|
+
.testitem {
|
|
360
|
+
border: 1px solid grey;
|
|
361
|
+
border-radius: 3px;
|
|
362
|
+
margin-bottom: 15px;
|
|
363
|
+
}
|
|
364
|
+
.testitem__top {
|
|
365
|
+
width: 100%;
|
|
366
|
+
display: flex;
|
|
367
|
+
background: #f6faff;
|
|
368
|
+
padding: 15px 13px 15px 30px;
|
|
369
|
+
border-radius: 10px;
|
|
370
|
+
cursor: pointer;
|
|
371
|
+
justify-content: space-between;
|
|
372
|
+
}
|
|
373
|
+
.testitem__icon {
|
|
374
|
+
display: flex;
|
|
375
|
+
align-items: center;
|
|
376
|
+
justify-content: center;
|
|
377
|
+
width: 30px;
|
|
378
|
+
margin-right: 5px;
|
|
379
|
+
}
|
|
380
|
+
.testitem__ico {
|
|
381
|
+
font-size: 18px;
|
|
382
|
+
}
|
|
383
|
+
.testitem__name {
|
|
384
|
+
font-weight: 700;
|
|
385
|
+
color: black;
|
|
386
|
+
font-size: 16px;
|
|
387
|
+
}
|
|
388
|
+
.testitem__body {
|
|
389
|
+
display: flex;
|
|
390
|
+
background-color: #fff;
|
|
391
|
+
margin-top: 10px;
|
|
392
|
+
}
|
|
393
|
+
.testitem__menu {
|
|
394
|
+
display: flex;
|
|
395
|
+
flex-direction: column;
|
|
396
|
+
padding: 21px 51px 21px 51px;
|
|
397
|
+
}
|
|
398
|
+
.testitem__mitem {
|
|
399
|
+
font-size: 15px;
|
|
400
|
+
font-weight: 600;
|
|
401
|
+
cursor: pointer;
|
|
402
|
+
color: #808080;
|
|
403
|
+
width: 170px;
|
|
404
|
+
height: 65px;
|
|
405
|
+
text-align: center;
|
|
406
|
+
padding-top: 20px;
|
|
407
|
+
padding-bottom: 20px;
|
|
408
|
+
}
|
|
409
|
+
.testitem__mitem_active {
|
|
410
|
+
background: #f6faff;
|
|
411
|
+
color: #4d4c4c;
|
|
412
|
+
font-weight: 700;
|
|
413
|
+
}
|
|
414
|
+
.testitem__case {
|
|
415
|
+
display: flex;
|
|
416
|
+
flex-direction: column;
|
|
417
|
+
padding: 10px;
|
|
418
|
+
}
|
|
419
|
+
.testitem__title {
|
|
420
|
+
font-size: 18px;
|
|
421
|
+
color: black;
|
|
422
|
+
font-weight: 700;
|
|
423
|
+
margin-bottom: 15px;
|
|
424
|
+
text-decoration: underline;
|
|
425
|
+
}
|
|
426
|
+
.testitem__block p {
|
|
427
|
+
font-size: 14px;
|
|
428
|
+
white-space: pre-line;
|
|
429
|
+
}
|
|
430
|
+
.test__empty__list {
|
|
431
|
+
margin-bottom: 10px;
|
|
432
|
+
color: grey;
|
|
433
|
+
}
|
|
434
|
+
.testitem__content {
|
|
435
|
+
width: 92%;
|
|
436
|
+
} /* Pagination component styles*/
|
|
437
|
+
.page-link {
|
|
438
|
+
color: black;
|
|
439
|
+
background-color: #f6faff;
|
|
440
|
+
padding: 7px 19px;
|
|
441
|
+
font-weight: 600;
|
|
442
|
+
border-radius: 3px;
|
|
443
|
+
}
|
|
444
|
+
.page-link:hover {
|
|
445
|
+
color: black;
|
|
446
|
+
}
|
|
447
|
+
.form-select {
|
|
448
|
+
background-color: #f6faff;
|
|
449
|
+
}
|
|
450
|
+
.form-select:focus {
|
|
451
|
+
border-color: #adadad;
|
|
452
|
+
box-shadow: 0 0 0 0.25rem rgb(67 71 78 / 25%);
|
|
453
|
+
}
|
|
454
|
+
.page-item:not(:first-child) {
|
|
455
|
+
margin-left: 15px;
|
|
456
|
+
}
|
|
457
|
+
.page-item.active .page-link {
|
|
458
|
+
background: #f6faff;
|
|
459
|
+
border: 2px solid #4384fe;
|
|
460
|
+
color: black;
|
|
461
|
+
}
|
|
462
|
+
.noData {
|
|
463
|
+
display: flex;
|
|
464
|
+
align-items: center;
|
|
465
|
+
flex-direction: column;
|
|
466
|
+
justify-content: center;
|
|
467
|
+
margin-bottom: 150px;
|
|
468
|
+
}
|
|
469
|
+
.noDataText {
|
|
470
|
+
font-weight: 600;
|
|
471
|
+
font-size: 20px;
|
|
472
|
+
color: #a1a1a1;
|
|
473
|
+
}
|
|
99
474
|
</style>
|
|
100
475
|
</head>
|
|
101
476
|
|
package/lib/uploader.js
CHANGED
|
@@ -113,7 +113,7 @@ class S3Uploader {
|
|
|
113
113
|
const upload = new lib_storage_1.Upload({ client: s3, params });
|
|
114
114
|
const link = await this.getS3LocationLink(upload);
|
|
115
115
|
this.successfulUploads.push({ path: file.path, size: file.size, link });
|
|
116
|
-
debug(`📤 Uploaded artifact. File: ${file.path}, size: ${(0, filesize_1.filesize)(file.size)}, link: ${link}`);
|
|
116
|
+
debug(`📤 Uploaded artifact. File: ${file.path}, size: ${(0, filesize_1.filesize)(file.size || 0)}, link: ${link}`);
|
|
117
117
|
return link;
|
|
118
118
|
}
|
|
119
119
|
catch (e) {
|
|
@@ -180,7 +180,8 @@ class S3Uploader {
|
|
|
180
180
|
* @returns
|
|
181
181
|
*/
|
|
182
182
|
async uploadFileByPath(filePath, pathInS3) {
|
|
183
|
-
|
|
183
|
+
/* WDIO: some artifacts uploading started before createRun function completion
|
|
184
|
+
probably, the reason is that run is NOT created in adapter (but via cli) */
|
|
184
185
|
this.isEnabled = this.isEnabled ?? this.checkEnabled();
|
|
185
186
|
const [runId, rid] = pathInS3;
|
|
186
187
|
if (!filePath)
|
|
@@ -189,7 +190,7 @@ class S3Uploader {
|
|
|
189
190
|
let fileSizeInMb = null;
|
|
190
191
|
try {
|
|
191
192
|
// file may not exist
|
|
192
|
-
fileSize = fs_1.default.statSync(filePath).size;
|
|
193
|
+
fileSize = fs_1.default.statSync(filePath).size || 0;
|
|
193
194
|
fileSizeInMb = Number((fileSize / (1024 * 1024)).toFixed(2));
|
|
194
195
|
}
|
|
195
196
|
catch (e) {
|
|
@@ -219,7 +220,7 @@ class S3Uploader {
|
|
|
219
220
|
}
|
|
220
221
|
debug('File:', filePath, 'exists, size:', (0, filesize_1.filesize)(fileSize));
|
|
221
222
|
const fileStream = fs_1.default.createReadStream(filePath);
|
|
222
|
-
const Key = pathInS3.join('/');
|
|
223
|
+
const Key = pathInS3.filter(p => !!p).join('/');
|
|
223
224
|
const link = await this.#uploadToS3(fileStream, Key, { path: filePath, size: fileSize });
|
|
224
225
|
this.storeUploadedFile(filePath, runId, rid, !!link);
|
|
225
226
|
return link;
|
|
@@ -230,10 +231,13 @@ class S3Uploader {
|
|
|
230
231
|
* @returns
|
|
231
232
|
*/
|
|
232
233
|
async uploadFileAsBuffer(buffer, pathInS3) {
|
|
234
|
+
/* WDIO: some artifacts uploading started before createRun function completion
|
|
235
|
+
probably, the reason is that run is NOT created in adapter (but via cli) */
|
|
236
|
+
this.isEnabled = this.isEnabled ?? this.checkEnabled();
|
|
233
237
|
if (!this.isEnabled)
|
|
234
238
|
return;
|
|
235
|
-
let Key = pathInS3.join('/');
|
|
236
|
-
const ext = this.#getFileExtBase64(buffer);
|
|
239
|
+
let Key = pathInS3.filter(p => !!p).join('/');
|
|
240
|
+
const ext = this.#getFileExtBase64(buffer.toString('base64'));
|
|
237
241
|
if (ext) {
|
|
238
242
|
Key = `${Key}.${ext}`;
|
|
239
243
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const extensionMap: {
|
|
2
|
+
'application/json': string;
|
|
3
|
+
'text/plain': string;
|
|
4
|
+
'image/jpeg': string;
|
|
5
|
+
'image/png': string;
|
|
6
|
+
'text/html': string;
|
|
7
|
+
'text/css': string;
|
|
8
|
+
'text/javascript': string;
|
|
9
|
+
'application/pdf': string;
|
|
10
|
+
'application/xml': string;
|
|
11
|
+
'text/xml': string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extensionMap = void 0;
|
|
4
|
+
exports.extensionMap = {
|
|
5
|
+
'application/json': 'json',
|
|
6
|
+
'text/plain': 'txt',
|
|
7
|
+
'image/jpeg': 'jpg',
|
|
8
|
+
'image/png': 'png',
|
|
9
|
+
'text/html': 'html',
|
|
10
|
+
'text/css': 'css',
|
|
11
|
+
'text/javascript': 'js',
|
|
12
|
+
'application/pdf': 'pdf',
|
|
13
|
+
'application/xml': 'xml',
|
|
14
|
+
'text/xml': 'xml',
|
|
15
|
+
};
|
package/lib/utils/utils.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
export function getPackageVersion(): any;
|
|
2
|
+
export const TEST_ID_REGEX: RegExp;
|
|
3
|
+
export const SUITE_ID_REGEX: RegExp;
|
|
1
4
|
export function ansiRegExp(): RegExp;
|
|
2
5
|
export function isSameTest(test: any, t: any): boolean;
|
|
3
6
|
export function fetchSourceCode(contents: any, opts?: {}): string;
|
|
4
7
|
export function fetchSourceCodeFromStackTrace(stack?: string): string;
|
|
5
8
|
export function fetchIdFromCode(code: any, opts?: {}): any;
|
|
6
9
|
export function fetchIdFromOutput(output: any): any;
|
|
7
|
-
export function fetchFilesFromStackTrace(stack?: string): string[];
|
|
10
|
+
export function fetchFilesFromStackTrace(stack?: string, checkExists?: boolean): string[];
|
|
8
11
|
export namespace fileSystem {
|
|
9
12
|
function createDir(dirPath: any): void;
|
|
10
13
|
function clearDir(dirPath: any): void;
|
|
@@ -43,3 +46,9 @@ export function storeRunId(runId: any): void;
|
|
|
43
46
|
export namespace testRunnerHelper {
|
|
44
47
|
function getNameOfCurrentlyRunningTest(): any;
|
|
45
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Validates TESTOMATIO_SUITE environment variable format
|
|
51
|
+
* @param {String} suiteId - suite ID to validate
|
|
52
|
+
* @returns {String|null} validated suite ID or null if invalid
|
|
53
|
+
*/
|
|
54
|
+
export function validateSuiteId(suiteId: string): string | null;
|