forked from codeceptjs/CodeceptJS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.js
65 lines (52 loc) · 1.75 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
'use strict';
const event = require('../event');
const container = require('../container');
const recorder = require('../recorder');
const debug = require('../output').debug;
/**
* Enable Helpers to listen to test events
*/
module.exports = function () {
let helpers = container.helpers();
const runHelpersHook = (hook, param) => {
Object.keys(helpers).forEach((key) => {
helpers[key][hook](param);
});
};
const runAsyncHelpersHook = (hook, param, force) => {
Object.keys(helpers).forEach((key) => {
if (!helpers[key][hook]) return;
recorder.add(`hook ${key}.${hook}()`, () => helpers[key][hook](param), force);
});
};
event.dispatcher.on(event.all.before, function () {
runHelpersHook('_init');
});
event.dispatcher.on(event.suite.before, function (suite) {
runAsyncHelpersHook('_beforeSuite', suite, true);
});
event.dispatcher.on(event.suite.after, function (suite) {
runAsyncHelpersHook('_afterSuite', suite, true);
});
event.dispatcher.on(event.test.started, function (test) {
runHelpersHook('_test', test);
recorder.catch((e) => debug(e));
});
event.dispatcher.on(event.test.before, function () {
runAsyncHelpersHook('_before');
});
event.dispatcher.on(event.test.failed, function (test) {
runAsyncHelpersHook('_failed', test, true);
// should not fail test execution, so errors should be catched
recorder.catch((e) => debug(e));
});
event.dispatcher.on(event.test.after, function (test) {
runAsyncHelpersHook('_after', {}, true);
});
event.dispatcher.on(event.step.before, function (step) {
runAsyncHelpersHook('_beforeStep', step);
});
event.dispatcher.on(event.step.after, function (step) {
runAsyncHelpersHook('_afterStep', step);
});
};