From e6a0d7bed2b2ae14159b8b582c34a64d37022aa7 Mon Sep 17 00:00:00 2001 From: ddm Date: Fri, 27 Dec 2013 14:44:36 +0100 Subject: [PATCH 1/4] [FIX] Yet another attempt to figure out UI tests on runbot bzr revid: ddm@openerp.com-20131227134436-mx8a7vid4m70sqtp --- addons/website/tests/test_ui.py | 19 ++++++++++--------- .../tests/ui_suite/banner_tour_test.js | 4 ++-- .../website/tests/ui_suite/simple_dom_test.js | 15 +++++++++++++++ .../website/tests/ui_suite/ui_test_runner.js | 7 ++++--- 4 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 addons/website/tests/ui_suite/simple_dom_test.js diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index 76ae3a9b8b2..ab936eb91d9 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -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,17 +114,19 @@ 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 + # the first line is treated as a JSON messgae + # 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) @@ -135,13 +135,14 @@ class WebsiteUiSuite(unittest.TestSuite): 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 diff --git a/addons/website/tests/ui_suite/banner_tour_test.js b/addons/website/tests/ui_suite/banner_tour_test.js index 9bade783afc..b25b80e79c4 100644 --- a/addons/website/tests/ui_suite/banner_tour_test.js +++ b/addons/website/tests/ui_suite/banner_tour_test.js @@ -33,6 +33,6 @@ testRunner.run(function testBannerTour (page) { }, function () { console.log('{ "event": "success" }'); phantom.exit(); - }); - }); + }, 15000); + }, 5000); }); \ No newline at end of file diff --git a/addons/website/tests/ui_suite/simple_dom_test.js b/addons/website/tests/ui_suite/simple_dom_test.js new file mode 100644 index 00000000000..e0c19ceef2a --- /dev/null +++ b/addons/website/tests/ui_suite/simple_dom_test.js @@ -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); +}); \ No newline at end of file diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index 75febbb4c9d..e472579a0e8 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -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..."+ready); phantom.exit(1); } else { clearInterval(interval); From 8ea56d266e935100e0225825cdd64d091d7d1983 Mon Sep 17 00:00:00 2001 From: ddm Date: Fri, 27 Dec 2013 14:53:30 +0100 Subject: [PATCH 2/4] [IMP] UI tests code cleanup bzr revid: ddm@openerp.com-20131227135330-z3815qyz4cjaf8zj --- addons/website/tests/test_ui.py | 8 ++------ addons/website/tests/ui_suite/banner_tour_test.js | 1 - addons/website/tests/ui_suite/ui_test_runner.js | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index ab936eb91d9..22c5f9643ad 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -119,9 +119,8 @@ class WebsiteUiSuite(unittest.TestSuite): # ------------- # 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" } - # the first line is treated as a JSON messgae + # - 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) @@ -130,9 +129,6 @@ class WebsiteUiSuite(unittest.TestSuite): 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+"\n"+"\n".join(lines[1::])) diff --git a/addons/website/tests/ui_suite/banner_tour_test.js b/addons/website/tests/ui_suite/banner_tour_test.js index b25b80e79c4..162e2049e78 100644 --- a/addons/website/tests/ui_suite/banner_tour_test.js +++ b/addons/website/tests/ui_suite/banner_tour_test.js @@ -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, diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index e472579a0e8..7fff3530426 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -39,7 +39,7 @@ 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 { test(page); From d02f8b2d3a6d376e4cced176c6419c6bb51f92a5 Mon Sep 17 00:00:00 2001 From: ddm Date: Fri, 27 Dec 2013 15:07:44 +0100 Subject: [PATCH 3/4] bzr revid: ddm@openerp.com-20131227140744-y9pgrkt6qina3sez --- addons/website/tests/ui_suite/ui_test_runner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index 7fff3530426..a781db54674 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -9,7 +9,7 @@ function waitFor(ready, callback, timeout) { if(!condition) { var message = "Timeout after "+timeout+" ms"; console.log('{ "event": "error", "message": "'+message+'" }'); - console.log("Waiting for..."+ready); + console.log("Waiting for...\n"+ready); phantom.exit(1); } else { clearInterval(interval); From 6e54f0a834049453eb762f245e4b48ea62df049d Mon Sep 17 00:00:00 2001 From: ddm Date: Fri, 27 Dec 2013 15:29:33 +0100 Subject: [PATCH 4/4] Temporary test bzr revid: ddm@openerp.com-20131227142933-174si3fpu9jm4cld --- addons/website/tests/ui_suite/ui_test_runner.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index a781db54674..8cc925fdfba 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -42,6 +42,8 @@ function run (test) { console.log('{ "event": "error", "message": "'+url+' failed to load"}'); phantom.exit(1); } else { + // TODO Remove + console.log('{ "event": "error", "message": "Testing '+url+'"}'); test(page); } });