runner.on("pending", invokeHandler(function(test) {
     var currentTest = allureReporter.getCurrentTest();
     if(currentTest && currentTest.name === test.title) {
         allureReporter.endCase("skipped");
     } else {
         allureReporter.pendingCase(test.title);
     }
 }));
 runner.on("fail", invokeHandler(function(test, err) {
     if(!allureReporter.getCurrentTest()) {
         allureReporter.startCase(test.title);
     }
     var isAssertionError = err.name === "AssertionError" || err.code === "ERR_ASSERTION";
     var status = isAssertionError ? "failed" : "broken";
     if(global.onError) {
         global.onError(err);
     }
     allureReporter.endCase(status, err);
 }));
 runner.on("hook end", invokeHandler(function(hook) {
     if(hook.title.indexOf('"after each" hook') === 0) {
         allureReporter.endCase("passed");
     }
 }));
 runner.on("pass", invokeHandler(function() {
     allureReporter.endCase("passed");
 }));