codeceptjs 3.7.0-beta.7 → 3.7.0-beta.8
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/lib/actor.js +1 -2
- package/lib/ai.js +130 -121
- package/lib/codecept.js +4 -4
- package/lib/command/check.js +4 -0
- package/lib/command/run-workers.js +1 -53
- package/lib/command/workers/runTests.js +25 -189
- package/lib/container.js +16 -0
- package/lib/event.js +18 -17
- package/lib/listener/exit.js +5 -8
- package/lib/listener/globalTimeout.js +26 -9
- package/lib/listener/result.js +12 -0
- package/lib/listener/steps.js +0 -6
- package/lib/mocha/asyncWrapper.js +12 -2
- package/lib/mocha/cli.js +50 -24
- package/lib/mocha/hooks.js +32 -3
- package/lib/mocha/suite.js +27 -1
- package/lib/mocha/test.js +91 -7
- package/lib/mocha/types.d.ts +5 -0
- package/lib/output.js +1 -0
- package/lib/plugin/analyze.js +351 -0
- package/lib/plugin/commentStep.js +5 -0
- package/lib/plugin/customReporter.js +52 -0
- package/lib/plugin/heal.js +2 -2
- package/lib/plugin/pageInfo.js +143 -0
- package/lib/plugin/retryTo.js +10 -2
- package/lib/plugin/screenshotOnFail.js +4 -6
- package/lib/plugin/stepTimeout.js +1 -1
- package/lib/plugin/tryTo.js +9 -1
- package/lib/recorder.js +4 -4
- package/lib/rerun.js +43 -42
- package/lib/result.js +161 -0
- package/lib/step/base.js +52 -4
- package/lib/step/helper.js +3 -0
- package/lib/step/meta.js +9 -1
- package/lib/step/record.js +5 -5
- package/lib/step/section.js +55 -0
- package/lib/steps.js +28 -1
- package/lib/{step/timeout.js → timeout.js} +24 -0
- package/lib/utils.js +35 -0
- package/lib/workers.js +28 -38
- package/package.json +2 -2
- package/typings/promiseBasedTypes.d.ts +12 -518
- package/typings/types.d.ts +75 -518
- package/lib/listener/artifacts.js +0 -19
- package/lib/plugin/debugErrors.js +0 -67
package/lib/workers.js
CHANGED
|
@@ -12,7 +12,8 @@ const { replaceValueDeep, deepClone } = require('./utils')
|
|
|
12
12
|
const mainConfig = require('./config')
|
|
13
13
|
const output = require('./output')
|
|
14
14
|
const event = require('./event')
|
|
15
|
-
const {
|
|
15
|
+
const { deserializeTest } = require('./mocha/test')
|
|
16
|
+
const { deserializeSuite } = require('./mocha/suite')
|
|
16
17
|
const recorder = require('./recorder')
|
|
17
18
|
const runHook = require('./hooks')
|
|
18
19
|
const WorkerStorage = require('./workerStorage')
|
|
@@ -230,17 +231,10 @@ class Workers extends EventEmitter {
|
|
|
230
231
|
super()
|
|
231
232
|
this.setMaxListeners(50)
|
|
232
233
|
this.codecept = initializeCodecept(config.testConfig, config.options)
|
|
233
|
-
this.failuresLog = []
|
|
234
234
|
this.errors = []
|
|
235
235
|
this.numberOfWorkers = 0
|
|
236
236
|
this.closedWorkers = 0
|
|
237
237
|
this.workers = []
|
|
238
|
-
this.stats = {
|
|
239
|
-
passes: 0,
|
|
240
|
-
failures: 0,
|
|
241
|
-
tests: 0,
|
|
242
|
-
pending: 0,
|
|
243
|
-
}
|
|
244
238
|
this.testGroups = []
|
|
245
239
|
|
|
246
240
|
createOutputDir(config.testConfig)
|
|
@@ -353,8 +347,6 @@ class Workers extends EventEmitter {
|
|
|
353
347
|
}
|
|
354
348
|
|
|
355
349
|
run() {
|
|
356
|
-
this.stats.start = new Date()
|
|
357
|
-
this.stats.failedHooks = 0
|
|
358
350
|
recorder.startUnlessRunning()
|
|
359
351
|
event.dispatcher.emit(event.workers.before)
|
|
360
352
|
process.env.RUNS_WITH_WORKERS = 'true'
|
|
@@ -380,7 +372,7 @@ class Workers extends EventEmitter {
|
|
|
380
372
|
* @returns {Boolean}
|
|
381
373
|
*/
|
|
382
374
|
isFailed() {
|
|
383
|
-
return (
|
|
375
|
+
return (Container.result().failures.length || this.errors.length) > 0
|
|
384
376
|
}
|
|
385
377
|
|
|
386
378
|
_listenWorkerEvents(worker) {
|
|
@@ -393,33 +385,37 @@ class Workers extends EventEmitter {
|
|
|
393
385
|
}
|
|
394
386
|
|
|
395
387
|
switch (message.event) {
|
|
396
|
-
case event.all.
|
|
397
|
-
|
|
398
|
-
|
|
388
|
+
case event.all.result:
|
|
389
|
+
// we ensure consistency of result by adding tests in the very end
|
|
390
|
+
Container.result().addFailures(message.data.failures)
|
|
391
|
+
Container.result().addStats(message.data.stats)
|
|
392
|
+
message.data.tests.forEach(test => {
|
|
393
|
+
Container.result().addTest(deserializeTest(test))
|
|
394
|
+
})
|
|
399
395
|
break
|
|
400
396
|
case event.suite.before:
|
|
401
|
-
this.emit(event.suite.before,
|
|
397
|
+
this.emit(event.suite.before, deserializeSuite(message.data))
|
|
402
398
|
break
|
|
403
399
|
case event.test.before:
|
|
404
|
-
this.emit(event.test.before,
|
|
400
|
+
this.emit(event.test.before, deserializeTest(message.data))
|
|
405
401
|
break
|
|
406
402
|
case event.test.started:
|
|
407
|
-
this.emit(event.test.started,
|
|
403
|
+
this.emit(event.test.started, deserializeTest(message.data))
|
|
408
404
|
break
|
|
409
405
|
case event.test.failed:
|
|
410
|
-
this.emit(event.test.failed,
|
|
406
|
+
this.emit(event.test.failed, deserializeTest(message.data))
|
|
411
407
|
break
|
|
412
408
|
case event.test.passed:
|
|
413
|
-
this.emit(event.test.passed,
|
|
409
|
+
this.emit(event.test.passed, deserializeTest(message.data))
|
|
414
410
|
break
|
|
415
411
|
case event.test.skipped:
|
|
416
|
-
this.emit(event.test.skipped,
|
|
412
|
+
this.emit(event.test.skipped, deserializeTest(message.data))
|
|
417
413
|
break
|
|
418
414
|
case event.test.finished:
|
|
419
|
-
this.emit(event.test.finished,
|
|
415
|
+
this.emit(event.test.finished, deserializeTest(message.data))
|
|
420
416
|
break
|
|
421
417
|
case event.test.after:
|
|
422
|
-
this.emit(event.test.after,
|
|
418
|
+
this.emit(event.test.after, deserializeTest(message.data))
|
|
423
419
|
break
|
|
424
420
|
case event.step.finished:
|
|
425
421
|
this.emit(event.step.finished, message.data)
|
|
@@ -431,7 +427,7 @@ class Workers extends EventEmitter {
|
|
|
431
427
|
this.emit(event.step.passed, message.data)
|
|
432
428
|
break
|
|
433
429
|
case event.step.failed:
|
|
434
|
-
this.emit(event.step.failed, message.data)
|
|
430
|
+
this.emit(event.step.failed, message.data, message.data.error)
|
|
435
431
|
break
|
|
436
432
|
}
|
|
437
433
|
})
|
|
@@ -450,33 +446,26 @@ class Workers extends EventEmitter {
|
|
|
450
446
|
|
|
451
447
|
_finishRun() {
|
|
452
448
|
event.dispatcher.emit(event.workers.after, { tests: this.workers.map(worker => worker.tests) })
|
|
453
|
-
if (
|
|
449
|
+
if (Container.result().hasFailed) {
|
|
454
450
|
process.exitCode = 1
|
|
455
451
|
} else {
|
|
456
452
|
process.exitCode = 0
|
|
457
453
|
}
|
|
458
|
-
// removed this.finishedTests because in all /lib only first argument (!this.isFailed()) is used)
|
|
459
|
-
this.emit(event.all.result, !this.isFailed())
|
|
460
|
-
this.emit('end') // internal event
|
|
461
|
-
}
|
|
462
454
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
this.
|
|
466
|
-
this.stats.tests += newStats.tests
|
|
467
|
-
this.stats.pending += newStats.pending
|
|
468
|
-
this.stats.failedHooks += newStats.failedHooks
|
|
455
|
+
this.emit(event.all.result, Container.result())
|
|
456
|
+
event.dispatcher.emit(event.workers.result, Container.result())
|
|
457
|
+
this.emit('end') // internal event
|
|
469
458
|
}
|
|
470
459
|
|
|
471
460
|
printResults() {
|
|
472
|
-
|
|
473
|
-
|
|
461
|
+
const result = Container.result()
|
|
462
|
+
result.finish()
|
|
474
463
|
|
|
475
464
|
// Reset process for logs in main thread
|
|
476
465
|
output.process(null)
|
|
477
466
|
output.print()
|
|
478
467
|
|
|
479
|
-
this.failuresLog =
|
|
468
|
+
this.failuresLog = result.failures
|
|
480
469
|
.filter(log => log.length && typeof log[1] === 'number')
|
|
481
470
|
// mocha/lib/reporters/base.js
|
|
482
471
|
.map(([format, num, title, message, stack], i) => [format, i + 1, title, message, stack])
|
|
@@ -487,7 +476,8 @@ class Workers extends EventEmitter {
|
|
|
487
476
|
this.failuresLog.forEach(log => output.print(...log))
|
|
488
477
|
}
|
|
489
478
|
|
|
490
|
-
output.result(
|
|
479
|
+
output.result(result.stats.passes, result.stats.failures, result.stats.pending, ms(result.duration), result.stats.failedHooks)
|
|
480
|
+
|
|
491
481
|
process.env.RUNS_WITH_WORKERS = 'false'
|
|
492
482
|
}
|
|
493
483
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeceptjs",
|
|
3
|
-
"version": "3.7.0-beta.
|
|
3
|
+
"version": "3.7.0-beta.8",
|
|
4
4
|
"description": "Supercharged End 2 End Testing Framework for NodeJS",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"acceptance",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"figures": "3.2.0",
|
|
95
95
|
"fn-args": "4.0.0",
|
|
96
96
|
"fs-extra": "11.2.0",
|
|
97
|
-
"glob": "
|
|
97
|
+
"glob": "^11.0.1",
|
|
98
98
|
"fuse.js": "^7.0.0",
|
|
99
99
|
"html-minifier-terser": "7.2.0",
|
|
100
100
|
"inquirer": "6.5.2",
|