diff --git a/addons/website/static/src/js/website.tour.js b/addons/website/static/src/js/website.tour.js index 34b3e099ab0..4a4cebaccfe 100644 --- a/addons/website/static/src/js/website.tour.js +++ b/addons/website/static/src/js/website.tour.js @@ -291,6 +291,7 @@ var self = this; var testId = 'test_'+tour.id+'_tour'; this.tours.push(tour); + var stepDelay = 100; //ms var test = { id: tour.id, run: function (force) { @@ -309,8 +310,8 @@ setTimeout(function () { setTimeout(function () { executeStep(nextStep); - }, 10); - }, 10); + }, stepDelay); + }, 0); } else { window.localStorage.removeItem(testId); } @@ -319,13 +320,7 @@ if (step.snippet && step.trigger === 'drag') { website.TestConsole.dragAndDropSnippet(step.snippet); } else if (step.trigger.id === 'change') { - var currentValue = $element.val(); - var options = $element[0].options; - // FIXME: It may be necessary to set a particular value - var newValue = _.find(options, function (option) { - return option.value !== currentValue; - }).value; - $element.val(newValue).trigger($.Event("change")); + $element.trigger($.Event("change", { srcElement: $element })); } else { $element.trigger($.Event("click", { srcElement: $element })); } @@ -350,8 +345,8 @@ setTimeout(function () { setTimeout(function () { executeStep(currentStep); - }, 10); - }, 10); + }, stepDelay); + }, 0); } } }, diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index 508086bb7b1..c681157fabd 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -81,7 +81,7 @@ class WebsiteUiSuite(unittest.TestSuite): phantom = subprocess.Popen([ 'phantomjs', - os.path.join(os.path.join(os.path.dirname(__file__), 'ui_suite'), self._testfile), + self._testfile, json.dumps(self._options) ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) @@ -132,8 +132,11 @@ class WebsiteUiSuite(unittest.TestSuite): except ValueError: result.addError(self._test, 'Unexpected message: "%s"' % "\n".join(lines)) +def full_path(filename): + return os.path.join(os.path.join(os.path.dirname(__file__), 'ui_suite'), filename) + def load_tests(loader, base, _): - base.addTest(WebsiteUiSuite('dummy_test.js', {})) - base.addTest(WebsiteUiSuite('simple_dom_test.js', { 'action': 'website.action_website_homepage' }, 120.0)) - base.addTest(WebsiteUiSuite('homepage_test.js', { 'action': 'website.action_website_homepage' }, 120.0)) + base.addTest(WebsiteUiSuite(full_path('dummy_test.js'), {})) + base.addTest(WebsiteUiSuite(full_path('simple_dom_test.js'), { 'action': 'website.action_website_homepage' }, 120.0)) + base.addTest(WebsiteUiSuite(full_path('homepage_test.js'), { 'action': 'website.action_website_homepage' }, 120.0)) return base diff --git a/addons/website/tests/ui_suite/homepage_test.js b/addons/website/tests/ui_suite/homepage_test.js index 8de08ca893e..7405450fdaa 100644 --- a/addons/website/tests/ui_suite/homepage_test.js +++ b/addons/website/tests/ui_suite/homepage_test.js @@ -11,6 +11,9 @@ testRunner.run(function homepageTest (page) { && window.openerp.website.TestConsole.test('banner'); }); }, function executeTest () { + page.onResourceError = function(error) { + console.log('{ "event": "error", "message": "'+error.url+' failed to load ('+error.errorString+') "}'); + }; var before = page.evaluate(function () { var result = { carousel: $('#wrap [data-snippet-id=carousel]').length, diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index f7a83ae5a3c..4c8709eee53 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -43,17 +43,26 @@ function run (test) { page.viewportSize = { width: 1920, height: 1080 }; page.onError = function(message, trace) { - console.log('{ "event": "error", "message": "'+message+'"}'); phantom.exit(1); }; + page.onAlert = function(message) { + console.log(message); + phantom.exit(1); + }; + page.onConsoleMessage = function(message) { + console.log(message); + phantom.exit(1); + }; page.open(url, function (status) { if (status !== 'success') { console.log('{ "event": "error", "message": "'+url+' failed to load"}'); phantom.exit(1); } else { - test(page); + page.onLoadFinished = function(status) { + test(page); + }; } }); } diff --git a/addons/website_blog/tests/__init__.py b/addons/website_blog/tests/__init__.py index 97f1da2f54b..b407275c256 100644 --- a/addons/website_blog/tests/__init__.py +++ b/addons/website_blog/tests/__init__.py @@ -21,6 +21,8 @@ from openerp.addons.website_blog.tests import test_controllers +import test_ui + checks = [ test_controllers, ] diff --git a/addons/website_blog/tests/test_ui.py b/addons/website_blog/tests/test_ui.py new file mode 100644 index 00000000000..cd33b6921a7 --- /dev/null +++ b/addons/website_blog/tests/test_ui.py @@ -0,0 +1,10 @@ +import os + +import openerp.addons.website.tests.test_ui as test_ui + +def full_path(filename): + return os.path.join(os.path.join(os.path.dirname(__file__), 'ui_suite'), filename) + +def load_tests(loader, base, _): + base.addTest(test_ui.WebsiteUiSuite(full_path('post_test.js'), { 'action': 'website.action_website_homepage' }, 120.0)) + return base \ No newline at end of file diff --git a/addons/website_blog/tests/ui_suite/post_test.js b/addons/website_blog/tests/ui_suite/post_test.js new file mode 100644 index 00000000000..9aeef8bdd79 --- /dev/null +++ b/addons/website_blog/tests/ui_suite/post_test.js @@ -0,0 +1,37 @@ +var testRunner = require('../../../website/tests/ui_suite/ui_test_runner.js'); + +var waitFor = testRunner.waitFor; + +testRunner.run(function homepageTest (page) { + page.evaluate(function () { localStorage.clear(); }); + waitFor(function clientReady () { + return page.evaluate(function () { + return window.openerp && window.openerp.website + && window.openerp.website.TestConsole + && window.openerp.website.TestConsole.test('blog'); + }); + }, function executeTest () { + page.onResourceError = function(error) { + console.log('{ "event": "error", "message": "'+error.url+' failed to load ('+error.errorString+') "}'); + }; + page.evaluate(function () { + window.openerp.website.TestConsole.test('blog').run(true); + }); + waitFor(function testExecuted () { + var after = page.evaluate(function () { + return $('button[data-action=edit]').is(":visible") && { + image: $('#wrap [data-snippet-id=image-text]').length, + text: $('#wrap [data-snippet-id=text-block]').length, + }; + }); + var result = after && (after.image === 1) && (after.text === 1); + if (!result && window.location.href.indexOf('/blogpost/') > 0) { + window.location.reload(); + } + return result; + }, function finish () { + console.log('{ "event": "success" }'); + phantom.exit(); + }, 90000); + }, 20000); +}); \ No newline at end of file