Beautification, code cleanup, and litmus tab improvements. p=ben_h,

r=zach.
This commit is contained in:
zach@zachlipton.com 2007-07-19 15:55:03 -07:00
parent 79526ada6f
commit f4204997ed
6 changed files with 236 additions and 143 deletions

View File

@ -1,23 +1,40 @@
const FIREFOX_ID = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
var litmus = {
var litmus = {
baseURL : qaPref.getPref(qaPref.prefBase+".litmus.url", "char"),
getTestcase : function(testcase_id, callback) {
var url = litmus.baseURL+'json.cgi?testcase_id='+testcase_id;
var d = loadJSONDoc(url);
d.addBoth(function (res) {
d.deferred = null;
return res;
});
d.addCallback(callback);
d.addErrback(function (err) {
if (err instanceof CancelledError) {
return;
}
alert(err);
});
var url = litmus.baseURL+'json.cgi?testcase_id='+testcase_id;
var d = loadJSONDoc(url);
d.addBoth(function (res) {
d.deferred = null;
return res;
});
d.addCallback(callback);
d.addErrback(function (err) {
if (err instanceof CancelledError) {
return;
}
alert(err);
});
},
getSubgroup : function(subgroupID, callback) {
var url = litmus.baseURL+'json.cgi?subgroup_id='+subgroupID;
var d = loadJSONDoc(url);
d.addBoth(function (res) {
d.deferred = null;
return res;
});
d.addCallback(callback);
d.addErrback(function (err) {
if (err instanceof CancelledError) {
return;
}
alert(err);
});
},
validateLogin : function(uname, passwd, callback) {
var req = doSimpleXMLHttpRequest(litmus.baseURL+'json.cgi', {
validate_login: 1,
@ -44,9 +61,129 @@
}
});
},
currentTestCaseIndex: 0, // position in array
currentSubgroupID: 21,
cachedTests: null,
checkRadioButtons : function() {
var menu = document.getElementById('testlist');
var disable = menu.selectedItem.firstChild.getAttribute("checked");
document.getElementById("qa-testcase-result").disabled = disable;
},
prevButton : function() {
litmus.currentTestCaseIndex--;
litmus.selectCurrentTestCase();
},
nextButton: function() {
// if they selected a result, then submit the result
if ($('qa-testcase-result').selectedItem) {
litmus.submitResult();
}
litmus.currentTestCaseIndex++;
litmus.selectCurrentTestCase();
},
handleSelect : function() {
litmus.currentTestCaseIndex = document.getElementById('testlist').selectedIndex;
litmus.selectCurrentTestCase();
},
selectCurrentTestCase : function() {
var menu = document.getElementById('testlist');
menu.selectedIndex = litmus.currentTestCaseIndex;
litmus.populateTestcase(litmus.cachedTests[litmus.currentTestCaseIndex]);
litmus.checkRadioButtons();
},
populatePreviewBox : function() {
//document.getElementById("prev1").innerHTML = "hi!"; This doesn't even work, I guess I'll rewrite table in XUL
var menu = document.getElementById('testlist');
if (!menu) return;
while (menu.firstChild) { // clear menu
menu.removeChild(menu.firstChild);
};
for (var i = 0; i < litmus.cachedTests.length; i++) {
var row = menu.appendItem("");
var checkbox = document.createElement("listcell");
checkbox.setAttribute("label", "");
checkbox.setAttribute("type", "checkbox");
checkbox.setAttribute("disabled", "true");
//checkbox.setAttribute("checked", "true");
var name = document.createElement("listcell");
name.setAttribute("label", "#" + litmus.cachedTests[i].testcase_id + " -- " + litmus.cachedTests[i].summary);
name.setAttribute("crop", "end");
name.setAttribute("maxwidth", "175");
row.appendChild(checkbox);
row.appendChild(name);
}
},
populateTestcase : function(testcase) {
document.getElementById('qa-testcase-id').value =
qaMain.bundle.getString("qa.extension.testcase.head")+testcase.testcase_id;
document.getElementById('qa-testcase-summary').value = testcase.summary;
document.getElementById('qa-testcase-steps').innerHTML = testcase.steps;
document.getElementById('qa-testcase-expected').innerHTML = testcase.expected_results;
},
populateFields : function(subgroup) {
litmus.cachedTests = subgroup.testcases;
//litmus.currentTestCaseIndex = 0;
litmus.populatePreviewBox();
litmus.currentTestCaseIndex = 0;
litmus.selectCurrentTestCase();
},
submitResult : function() {
var rs;
var item = $('qa-testcase-result').selectedItem;
if (item.id == "qa-testcase-pass") {
rs = 'Pass';
} else if (item.id == "qa-testcase-fail") {
rs = 'Fail';
} else if (item.id == "qa-testcase-unclearBroken") {
rs = 'Test unclear/broken';
} else {
// no result selected, so don't submit anything for thes test:
return false;
}
var l = new LitmusResults({username: qaPref.litmus.getUsername(),
password: qaPref.litmus.getPassword(),
server: litmus.baseURL});
l.sysconfig(new Sysconfig());
l.addResult(new Result({
testid: litmus.cachedTests[litmus.currentTestCaseIndex].testcase_id,
resultstatus: rs,
exitstatus: 'Exited Normally',
duration: 0,
comment: $('qa-testcase-comment').value,
isAutomatedResult: 0
}));
var callback = function(resp) {
alert("yay");
};
var errback = function(resp) {
alert(resp.responseText);
};
litmus.postResultXML(l.toXML(), callback, errback);
var menu = document.getElementById('testlist');
var item = menu.selectedItem;
item.firstChild.setAttribute("checked", "true");
return false; // ?? Got rid of strict warning...
},
};
// any missing fields will be autodetected
function Sysconfig(aProduct, aPlatform, aOpsys, aBranch, aBuildid, aLocale) {
this._load('product', aProduct);

View File

@ -1,88 +1,32 @@
var qaMain = {
htmlNS: "http://www.w3.org/1999/xhtml",
curtest: null,
openQATool : function() {
window.open("chrome://qa/content/qa.xul", "_blank", "chrome,all,dialog=no,resizable=no");
},
nextButton: function() {
// if they selected a result, then submit the result
if ($('qa-testcase-result').selectedItem) {
qaMain.submitResult();
}
},
populateTestcase : function(testcase) {
// stash the testcase object in curtest for future reference:
curtest = testcase;
document.getElementById('qa-testcase-id').value =
qaMain.bundle.getString("qa.extension.testcase.head")+testcase.testcase_id;
document.getElementById('qa-testcase-summary').value = testcase.summary;
document.getElementById('qa-testcase-steps').innerHTML = testcase.steps_formatted;
document.getElementById('qa-testcase-expected').innerHTML = testcase.expected_results_formatted;
},
onToolOpen : function() {
if (qaPref.getPref(qaPref.prefBase+'.isFirstTime', 'bool') == true) {
window.open("chrome://qa/content/setup.xul", "_blank", "chrome,all,dialog=no");
}
litmus.getTestcase('22', qaMain.populateTestcase);
window.open("chrome://qa/content/setup.xul", "_blank", "chrome,all,dialog=yes");
}
},
submitResult : function() {
var rs;
var item = $('qa-testcase-result').selectedItem;
if (item.id == "qa-testcase-pass") {
rs = 'Pass';
} else if (item.id == "qa-testcase-fail") {
rs = 'Fail';
} else if (item.id == "qa-testcase-unclearBroken") {
rs = 'Test unclear/broken';
} else {
// no result selected, so don't submit anything for thes test:
return false;
}
var l = new LitmusResults({username: qaPref.litmus.getUsername(),
password: qaPref.litmus.getPassword(),
server: litmus.baseURL});
l.sysconfig(new Sysconfig());
l.addResult(new Result({
testid: curtest.testcase_id,
resultstatus: rs,
exitstatus: 'Exited Normally',
duration: 0,
comment: $('qa-testcase-comment').value,
isAutomatedResult: 0
}));
var callback = function(resp) {
alert("yay");
};
var errback = function(resp) {
alert(resp.responseText);
};
litmus.postResultXML(l.toXML(), callback, errback);
},
};
qaMain.__defineGetter__("bundle", function(){return $("bundle_qa");});
qaMain.__defineGetter__("urlbundle", function(){return $("bundle_urls");});
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
if (arguments.length == 1)
return element;
elements.push(element);
elements.push(element);
}
return elements;

View File

@ -1,4 +1,5 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chome://qa/skin/" type="text/css"?>
<!DOCTYPE overlay [

View File

@ -6,65 +6,64 @@
]>
<overlay id="qa-litmus-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<tabpanel id="qa-tab-litmus">
<vbox>
<hbox>
<vbox>
<button label="&qa.litmus.selecttests;" oncommand="" style="margin-left: 4px;" />
<label value="Firefox 3.0 Catch-All Test Run" />
<label value="Firefox 3.0 Basic Functional Tests" />
<label value="Software Update" />
</vbox>
<div xmlns="http://www.w3.org/1999/xhtml">
<table style="margin-left: 12px; width:200px;" id="qa-litmus-testoverview">
<tr class="testoverview-previous"><td>...</td></tr>
<tr class="testoverview-previous"><td>#20 - Create/check live bookmark</td></tr>
<tr class="testoverview-previous"><td>#21 - Search from contextual menu</td></tr>
<tr class="testoverview-current"><td>#22 - Performance check</td></tr>
<tr class="testoverview-next"><td>#23 - Manage search engines</td></tr>
<tr class="testoverview-next"><td>#24 - Uninstall</td></tr>
<tr class="testoverview-next"><td>...</td></tr>
</table>
</div>
</hbox>
<hbox style="font-weight: bold;">
<description id="qa-testcase-summary">Summary of testcase</description>
<label value=" --" />
<label id="qa-testcase-id" value="Testcase 51" />
</hbox>
<vbox flex="1">
<groupbox>
<caption label="&qa.testcase.steps;" />
<div xmlns="http://www.w3.org/1999/xhtml" id="qa-testcase-steps" />
</groupbox>
<splitter id="qa-mainwindow-splitter" state="open" collapse="none">
<grippy/>
</splitter>
<groupbox>
<caption label="&qa.testcase.expected;" />
<div xmlns="http://www.w3.org/1999/xhtml" id="qa-testcase-expected" />
</groupbox>
</vbox>
<groupbox>
<caption label="Result:" />
<radiogroup id="qa-testcase-result">
<radio id="qa-testcase-pass" label="&qa.testcase.result.pass;"/>
<radio id="qa-testcase-fail" label="&qa.testcase.result.fail;"/>
<radio id="qa-testcase-unclearBroken" label="&qa.testcase.result.unclearbroken;"/>
</radiogroup>
</groupbox>
<label control="qa-testcase-comment" value="&qa.testcase.comment;"/>
<textbox id="qa-testcase-comment" style="min-height: 75px; max-width:300px"/>
<hbox flex="1">
<button id="qa-mainwindow-previousButton" label="Previous" />
<button id="qa-mainwindow-nextButton" label="Next" oncommand="qaMain.nextButton()"/>
</hbox>
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://qa/content/tabs/qa.js" />
<script type="application/x-javascript" src="chrome://qa/content/tabs/litmus.js" />
<tabpanel id="qa-tab-litmus" >
<vbox align="start" pack="start">
<hbox align="start" pack="start">
<vbox maxwidth="110">
<button maxwidth="110" label="&qa.litmus.selecttests;" oncommand="litmus.getSubgroup('1', litmus.populateFields)" style="margin-left: 4px;" />
<label value="Firefox 3.0 Catch-All Test Run" />
<label value="Firefox 3.0 Basic Functional Tests" />
<label value="Software Update" />
</vbox>
<listbox rows="7" equalsize="always" onselect="litmus.handleSelect()" id="testlist">
<listcols>
<listcol />
<listcol />
</listcols>
</listbox>
</hbox>
<hbox style="font-weight: bold;">
<label id="qa-testcase-id" value="Testcase 51" />
<label value=" --" />
<description id="qa-testcase-summary">Summary of testcase</description>
</hbox>
<vbox>
<groupbox height="160px">
<caption label="&qa.testcase.steps;" crop="end" maxwidth="200"/>
<div xmlns="http://www.w3.org/1999/xhtml" style="width: 300px" id="qa-testcase-steps" class="list"/>
</groupbox>
<splitter id="qa-mainwindow-splitter" state="open" collapse="none">
<grippy/>
</splitter>
<groupbox height="130px">
<caption label="&qa.testcase.expected;" />
<div xmlns="http://www.w3.org/1999/xhtml" id="qa-testcase-expected" class="list"/>
</groupbox>
</vbox>
<groupbox>
<caption label="Result:" />
<radiogroup id="qa-testcase-result">
<radio id="qa-testcase-pass" label="&qa.testcase.result.pass;"/>
<radio id="qa-testcase-fail" label="&qa.testcase.result.fail;"/>
<radio id="qa-testcase-unclearBroken" label="&qa.testcase.result.unclearbroken;"/>
</radiogroup>
</groupbox>
<label control="qa-testcase-comment" value="&qa.testcase.comment;"/>
<textbox id="qa-testcase-comment" style="min-height: 75px; max-width:300px"/>
<hbox flex="1" maxheight="30px">
<button id="qa-mainwindow-previousButton" label="Previous" oncommand="litmus.prevButton()"/>
<button id="qa-mainwindow-nextButton" label="Next (Submit)" oncommand="litmus.nextButton()"/>
</hbox>
</vbox>
</tabpanel>

View File

@ -96,6 +96,7 @@ var qmo = {
a.textContent = text;
a.href = links[i].url;
a.target = "blank_";
}
},
};

View File

@ -30,6 +30,9 @@ html|a {
position: fixed;
border: 1px solid grey;
background-color: white;
background-image: url("logolight.png");
background-repeat: no-repeat;
background-position: center;
}
.qa-notify {
@ -47,6 +50,14 @@ html|a {
font-weight: bold;
}
/* general formatting */
.list {
padding-left: 10px;
}
/* @group test overview */
#qa-litmus-testoverview {
text-decoration: underline;