gecko/testing/mochitest/harness-overlay.xul
2009-12-29 15:31:09 -08:00

141 lines
5.0 KiB
XML

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<overlay id="browserTestOverlay"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<window>
<script type="application/javascript"
src="chrome://mochikit/content/MochiKit/packed.js" />
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/TestRunner.js"/>
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/MozillaFileLogger.js"/>
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/quit.js" />
<script type="text/javascript"
src="chrome://mochikit/content/tests/SimpleTest/setup.js" />
<script type="application/javascript;version=1.7"><![CDATA[
function loadTests()
{
window.removeEventListener("load", loadTests, false);
var dir = document.documentElement.getAttribute('directory');
var url = "chrome://mochikit/content/" + dir + "/";
// Find our chrome dir
var ios = Cc["@mozilla.org/network/io-service;1"].
getService(Ci.nsIIOService);
var chromeURI = ios.newURI("chrome://mochikit/content/",
null, null);
var resolvedURI = Cc["@mozilla.org/chrome/chrome-registry;1"].
getService(Ci.nsIChromeRegistry).
convertChromeURL(chromeURI);
var fileHandler = Cc["@mozilla.org/network/protocol;1?name=file"].
getService(Ci.nsIFileProtocolHandler);
var chromeDir = fileHandler.getFileFromURLSpec(resolvedURI.spec);
chromeDir = chromeDir.parent.QueryInterface(Ci.nsILocalFile);
chromeDir.appendRelativePath(dir);
var singleTestPath;
if ("testPath" in params && params.testPath) {
var extraPath = params.testPath;
var pathToCheck = chromeDir.clone().QueryInterface(Ci.nsILocalFile);
var pathIsFile = false;
try {
var pathParts = extraPath.toString().split("/");
for each (var part in pathParts) {
pathToCheck.append(part);
}
if (pathToCheck.isDirectory()) {
for each (var part in pathParts) {
chromeDir.append(part);
}
url += extraPath + "/";
}
else {
pathIsFile = true;
}
}
catch (e) {
pathIsFile = true;
}
if (pathIsFile) {
singleTestPath = url + params.testPath;
}
}
// 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 [links, count] = srvScope.list(url, chromeDir, true);
var tableContent = srvScope.linksToTableRows(links, 0);
function populate() {
$("test-table").innerHTML += tableContent;
}
gTestList = eval(srvScope.jsonArrayOfTestFiles(links));
populate();
hookup();
// if we got passed a test path, just run that single test
if (singleTestPath)
window.location.href = singleTestPath;
}
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">
<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 scrolling="no" id="testframe" width="500"></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>
</div>
</div>
</body>
</vbox>
</window>
</overlay>