summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2018-04-12 09:39:44 +0200
committerGéry Debongnie <ged@odoo.com>2018-04-12 11:27:15 +0200
commit473edda86edd367a070084573d8b8cb46a7be2d4 (patch)
treea62839b0f752baf5cb8f714e1bcbcb3a2e0e9ae6
parentd5f6d1eb4af5261fa6e273dca6f1f013998e9c77 (diff)
[IMP] web: add fail fast feature to qunit test suite
With this commit, we introduce a new 'fail fast' feature to our qunit test suite: when it is activated, the qunit test suite will immediately stop after the first failed test. It is accessible as a flag in the url (failfast), or by clicking the checkbox in the UI. It is currently not activated by default. Note that this commit also change the url for the runbot phantomjs test in order to activate this feature. This allows us to increase the global timeout for the js test suite without fear!
-rw-r--r--addons/web/static/tests/helpers/qunit_config.js21
-rw-r--r--addons/web/tests/test_js.py4
2 files changed, 23 insertions, 2 deletions
diff --git a/addons/web/static/tests/helpers/qunit_config.js b/addons/web/static/tests/helpers/qunit_config.js
index 641d3a6f09b..cfe08b68136 100644
--- a/addons/web/static/tests/helpers/qunit_config.js
+++ b/addons/web/static/tests/helpers/qunit_config.js
@@ -118,4 +118,25 @@ function _addSortButton() {
});
}
+/**
+ * We add here a 'fail fast' feature: we often want to stop the test suite after
+ * the first failed test. This is also useful for the runbot test suites.
+ */
+
+QUnit.config.urlConfig.push({
+ id: "failfast",
+ label: "Fail Fast",
+ tooltip: "Stop the test suite immediately after the first failed test."
+});
+
+QUnit.begin(function() {
+ if (QUnit.config.failfast) {
+ QUnit.testDone(function(details) {
+ if (details.failed > 0) {
+ QUnit.config.queue.length = 0;
+ }
+ });
+ }
+});
+
})();
diff --git a/addons/web/tests/test_js.py b/addons/web/tests/test_js.py
index 1dd01bb8045..f903fa704c5 100644
--- a/addons/web/tests/test_js.py
+++ b/addons/web/tests/test_js.py
@@ -12,11 +12,11 @@ class WebSuite(odoo.tests.HttpCase):
def test_01_js(self):
# webclient desktop test suite
- self.phantom_js('/web/tests?mod=web', "", "", login='admin', timeout=390)
+ self.phantom_js('/web/tests?mod=web&failfast', "", "", login='admin', timeout=1800)
def test_02_js(self):
# webclient mobile test suite
- self.phantom_js('/web/tests/mobile?mod=web', "", "", login='admin', timeout=300)
+ self.phantom_js('/web/tests/mobile?mod=web&failfast', "", "", login='admin', timeout=1800)
def test_check_suite(self):
# verify no js test is using `QUnit.only` as it forbid any other test to be executed