]> git.proxmox.com Git - mirror_novnc.git/blob - tests/run_from_console.zombie.js
Use textContent instead of innerHTML
[mirror_novnc.git] / tests / run_from_console.zombie.js
1 var Browser = require('zombie');
2 var path = require('path');
3 var EventEmitter = require('events').EventEmitter;
4 var Q = require('q');
5
6 var provide_emitter = function(file_paths) {
7 var emitter = new EventEmitter();
8
9 file_paths.reduce(function(prom, file_path, path_ind) {
10 return prom.then(function(browser) {
11 browser.visit('file://'+file_path, function() {
12 if (browser.error) throw new Error(browser.errors);
13
14 var res_json = {};
15 res_json.file_ind = path_ind;
16
17 res_json.num_tests = browser.querySelectorAll('li.test').length;
18 res_json.num_fails = browser.querySelectorAll('li.test.fail').length;
19 res_json.num_passes = browser.querySelectorAll('li.test.pass').length;
20 res_json.num_slow = browser.querySelectorAll('li.test.pass:not(.fast)').length;
21 res_json.num_skipped = browser.querySelectorAll('li.test.pending').length;
22 res_json.duration = browser.text('li.duration em');
23
24 var traverse_node = function(elem) {
25 var classList = elem.className.split(' ');
26 var res;
27 if (classList.indexOf('suite') > -1) {
28 res = {
29 type: 'suite',
30 name: elem.querySelector('h1').textContent,
31 has_subfailures: elem.querySelectorAll('li.test.fail').length > 0
32 };
33
34 var child_elems = elem.querySelector('ul').children;
35 res.children = Array.prototype.map.call(child_elems, traverse_node);
36 return res;
37 }
38 else {
39 var h2_content = elem.querySelector('h2').childNodes;
40 res = {
41 type: 'test',
42 text: h2_content[0].textContent
43 };
44
45 if (classList.indexOf('pass') > -1) {
46 res.pass = true;
47 if (classList.indexOf('pending') > -1) {
48 res.slow = false;
49 res.skipped = true;
50 }
51 else {
52 res.slow = classList.indexOf('fast') < 0;
53 res.skipped = false;
54 res.duration = h2_content[1].textContent;
55 }
56 }
57 else {
58 res.error = elem.querySelector('pre.error').textContent;
59 }
60
61 return res;
62 }
63 };
64
65 var top_suites = browser.querySelectorAll('#mocha-report > li.suite');
66 res_json.suites = Array.prototype.map.call(top_suites, traverse_node);
67 res_json.replay = browser.querySelector('a.replay').textContent;
68
69 emitter.emit('test_ready', res_json);
70 });
71
72 return new Browser();
73 });
74 }, Q(new Browser()));
75
76 return emitter;
77 };
78
79 module.exports = {
80 provide_emitter: provide_emitter,
81 name: 'ZombieJS'
82 };