summaryrefslogtreecommitdiffstats
path: root/testing/mochitest/harness.xhtml
blob: 7bb94c64bf39c9eece0ab57ba3a8d652392af1b4 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/static/harness.css"
                 type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        title="Chrome Test Harness"
        directory="chrome">

  <script src="chrome://mochikit/content/tests/SimpleTest/LogController.js"/>
  <script src="chrome://mochikit/content/tests/SimpleTest/MemoryStats.js"/>
  <script src="chrome://mochikit/content/tests/SimpleTest/StructuredLog.jsm"/>
  <script src="chrome://mochikit/content/tests/SimpleTest/TestRunner.js"/>
  <script src="chrome://mochikit/content/tests/SimpleTest/MozillaLogger.js"/>
  <script src="chrome://mochikit/content/chrome-harness.js" />
  <script src="chrome://mochikit/content/chunkifyTests.js" />
  <script src="chrome://mochikit/content/manifestLibrary.js" />
  <script src="chrome://mochikit/content/tests/SimpleTest/setup.js" />
  <script type="application/javascript"><![CDATA[

function loadTests()
{
  window.removeEventListener("load", loadTests, false);
  getTestList({}, linkAndHookup);
}

function linkAndHookup(links) {
  // load server.js in so we can share template functions
  var scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
                       getService(Ci.mozIJSSubScriptLoader);
  var srvScope = {};
  scriptLoader.loadSubScript('chrome://mochikit/content/server.js',
                             srvScope);

  // generate our test list
  srvScope.makeTags();
  var tableContent = srvScope.linksToTableRows(links, 0);

  function populate() {
    document.getElementById("test-table").innerHTML += tableContent;
  }
  gTestList = JSON.parse(srvScope.jsonArrayOfTestFiles(links));
  populate();

  hookup();
}

    window.addEventListener("load", loadTests, false);
  ]]>
  </script>

  <vbox>
    <button label="Run Chrome Tests" id="runtests" flex="1"/>

    <body xmlns="http://www.w3.org/1999/xhtml" id="xulharness">
      <!--TODO: this should be separated into a file that both this file and server.js uses-->
      <div class="container">
        <p style="float:right;">
          <small>Based on the MochiKit unit tests.</small>
        </p>
        <div class="status">
          <h1 id="indicator">Status</h1>
          <h2 id="pass">Passed: <span id="pass-count">0</span></h2>
          <h2 id="fail">Failed: <span id="fail-count">0</span></h2>
          <h2 id="fail">Todo: <span id="todo-count">0</span></h2>
        </div>
        <div class="clear"></div>
        <div id="current-test">
          <b>Currently Executing: <span id="current-test-path">_</span></b>
        </div>
        <div class="clear"></div>
        <div class="frameholder">
          <iframe type="content" id="testframe" width="550" height="350"></iframe>
        </div>
        <div class="clear"></div>
        <div class="toggle">
          <a href="#" id="toggleNonTests">Show Non-Tests</a>
          <br />
        </div>
        <div id="wrapper">
          <table cellpadding="0" cellspacing="0">
          <!-- tbody needed to avoid bug 494546 causing performance problems -->
            <tbody id="test-table">
              <tr>
                <td>Passed</td>
                <td>Failed</td>
                <td>Todo</td>
                <td>Test Files</td>
              </tr>
            </tbody>
          </table>
          <br/>
          <table cellpadding="0" cellspacing="0" border="1" bordercolor="red">
          <!-- tbody needed to avoid bug 494546 causing performance problems -->
            <tbody id="fail-table">
            </tbody>
          </table>
        </div>
      </div>
    </body>
  </vbox>
</window>