[MERGE] Merge parents

bzr revid: rim@openerp.com-20131227150154-gsifl3xvj67f1ega
This commit is contained in:
Richard Mathot (OpenERP)
2013-12-27 16:01:54 +01:00
4 changed files with 35 additions and 21 deletions
+11 -14
View File
@@ -104,9 +104,7 @@ class WebsiteUiSuite(unittest.TestSuite):
# EOF
readable.remove(stream)
else:
self.process(lines[0], result)
# the runner expects only one output line
# any subsequent line is ignored
self.process(lines, result)
readable.remove(stream)
if last_check_time >= (start_time + self._timeout):
result.addError(self._test, "Timeout after %s s" % (last_check_time - start_time ))
@@ -116,32 +114,31 @@ class WebsiteUiSuite(unittest.TestSuite):
phantom.terminate()
result.stopTest(self._test)
def process(self, line, result):
def process(self, lines, result):
# Test protocol
# -------------
# use console.log in phantomjs to output test results using the following format:
# - for a success: { "event": "success" }
# - for a failure: { "event": "failure", "message": "Failure description" }
# - for an error: { "event": "error", "message": "Error description" }
# any other message is treated as an error
# - for an error: { "event": "error", "message": "Short error description" }
# the first line is treated as a JSON message (JSON should be formatted on one line)
# subsequent lines are displayed only if the first line indicated an error
# or if the first line was not a JSON message (still an error)
result.startTest(self._test)
try:
args = json.loads(line)
args = json.loads(lines[0])
event = args.get('event', None)
if event == 'success':
result.addSuccess(self._test)
elif event == 'failure':
message = args.get('message', "")
result.addFailure(self._test, message)
elif event == 'error':
message = args.get('message', "")
result.addError(self._test, message)
result.addError(self._test, message+"\n"+"\n".join(lines[1::]))
else:
result.addError(self._test, 'Unexpected JSON: "%s"' % line)
result.addError(self._test, 'Unexpected message: "%s"' % "\n".join(lines))
except ValueError:
result.addError(self._test, 'Unexpected message: "%s"' % line)
result.addError(self._test, 'Unexpected message: "%s"' % "\n".join(lines))
def load_tests(loader, base, _):
base.addTest(WebsiteUiSuite('dummy_test.js', {}))
base.addTest(WebsiteUiSuite('simple_dom_test.js', { 'action': 'website.action_website_homepage' }))
base.addTest(WebsiteUiSuite('banner_tour_test.js', { 'action': 'website.action_website_homepage' }))
return base
@@ -22,7 +22,6 @@ testRunner.run(function testBannerTour (page) {
waitFor(function () {
var after = page.evaluate(function () {
if ($('button[data-action=edit]').is(":visible")) {
console.error("why?");
return {
carousel: $('#wrap [data-snippet-id=carousel]').length,
columns: $('#wrap [data-snippet-id=three-columns]').length,
@@ -33,6 +32,6 @@ testRunner.run(function testBannerTour (page) {
}, function () {
console.log('{ "event": "success" }');
phantom.exit();
});
});
}, 15000);
}, 5000);
});
@@ -0,0 +1,15 @@
var testRunner = require('./ui_test_runner.js');
var waitFor = testRunner.waitFor;
testRunner.run(function simpleDomTest (page) {
waitFor(function () {
return page.evaluate(function () {
return window.openerp && window.openerp.website
&& window.openerp.website.TestConsole;
});
}, function () {
console.log('{ "event": "success" }');
phantom.exit();
}, 20000);
});
@@ -1,14 +1,15 @@
function waitFor(ready, callback, timeout) {
var timeoutMillis = timeout ? Math.round(timeout*1000) : 30000;
timeout = timeout || 10000;
var start = new Date().getTime();
var condition = ready();
var interval = setInterval(function() {
if ((new Date().getTime() - start < timeoutMillis) && !condition ) {
if ((new Date().getTime() - start < timeout) && !condition ) {
condition = ready();
} else {
if(!condition) {
var message = "Timeout after "+timeoutMillis+" ms";
var message = "Timeout after "+timeout+" ms";
console.log('{ "event": "error", "message": "'+message+'" }');
console.log("Waiting for...\n"+ready);
phantom.exit(1);
} else {
clearInterval(interval);
@@ -38,9 +39,11 @@ function run (test) {
};
page.open(url, function (status) {
if (status !== 'success') {
console.log('{ "event": "failure", "message": "'+url+' failed to load"}');
console.log('{ "event": "error", "message": "'+url+' failed to load"}');
phantom.exit(1);
} else {
// TODO Remove
console.log('{ "event": "error", "message": "Testing '+url+'"}');
test(page);
}
});