blob: 8f8541020d61fc6bbd09a29cdc54bebdf2bb9f2e (
plain)
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
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview A mocha adapter for BrowserTests. To use, include mocha.js and
* mocha_adapter.js in a WebUIBrowserTest's extraLibraries array.
*/
/**
* Initializes a mocha reporter for the BrowserTest framework, which registers
* event listeners on the given Runner.
* @constructor
* @param {Runner} runner Runs the tests and provides hooks for test results
* (see Runner.prototype in mocha.js).
*/
function BrowserTestReporter(runner) {
var passes = 0;
var failures = 0;
// Increment passes for each passed test.
runner.on('pass', function(test) {
passes++;
});
// Report failures. Mocha only catches "assert" failures, because "expect"
// failures are caught by test_api.js.
runner.on('fail', function(test, err) {
failures++;
var message = 'Mocha test failed: ' + test.fullTitle() + '\n';
// Remove unhelpful mocha lines from stack trace.
var stack = err.stack.split('\n');
for (var i = 0; i < stack.length; i++) {
if (stack[i].indexOf('mocha.js:') == -1)
message += stack[i] + '\n';
}
console.error(message);
});
// Report the results to the test API.
runner.on('end', function() {
if (failures == 0) {
testDone();
return;
}
testDone([
false,
'Test Errors: ' + failures + '/' + (passes + failures) +
' tests had failed assertions.'
]);
});
}
// Configure mocha.
mocha.setup({
// Use TDD interface instead of BDD.
ui: 'tdd',
// Use custom reporter to interface with BrowserTests.
reporter: BrowserTestReporter,
});
|