From 3e4c1fe168144413d73f3fb045615637a3a1db99 Mon Sep 17 00:00:00 2001 From: Radomir Dopieralski Date: Fri, 19 Dec 2014 12:12:15 +0100 Subject: [PATCH] Add test infrastructure for QUnit tests With a single example failing test. The tests are only available when debug is enabled. Change-Id: I2f3b2933d3cf3c8bf4343dfd57e3da8d356bd32b --- test/selenium.py | 52 +++++++++++++++++++ tuskar_boxes/overview/urls.py | 8 +++ .../static/tuskar_boxes/tests/tuskar.boxes.js | 9 ++++ .../templates/tuskar_boxes/qunit.html | 26 ++++++++++ 4 files changed, 95 insertions(+) create mode 100644 test/selenium.py create mode 100644 tuskar_boxes/static/tuskar_boxes/tests/tuskar.boxes.js create mode 100644 tuskar_boxes/templates/tuskar_boxes/qunit.html diff --git a/test/selenium.py b/test/selenium.py new file mode 100644 index 0000000..0b8891a --- /dev/null +++ b/test/selenium.py @@ -0,0 +1,52 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from __future__ import absolute_import + +import logging + +from horizon.test import helpers +from selenium.common import exceptions as selenium_exceptions + + +class BrowserTests(helpers.SeleniumTestCase): + def test_qunit(self): + url = "%s%s" % (self.live_server_url, "/infrastructure/qunit-tuskar-boxes/") + self.selenium.get(url) + wait = self.ui.WebDriverWait(self.selenium, 10) + + def qunit_done(driver): + text = driver.find_element_by_id("qunit-testresult").text + return "Tests completed" in text + + wait.until(qunit_done) + + failed_elem = self.selenium.find_element_by_class_name("failed") + failed = int(failed_elem.text) + if failed: + self.log_failure_messages() + self.assertEqual(failed, 0) + + def log_failure_messages(self): + logger = logging.getLogger('selenium') + logger.error("Errors found during qunit test:") + fail_elems = self.selenium.find_elements_by_class_name("fail") + for elem in fail_elems: + try: + module = elem.find_element_by_class_name("module-name").text + except selenium_exceptions.NoSuchElementException: + continue + message = elem.find_element_by_class_name("test-message").text + source = elem.find_element_by_tag_name("pre").text + logger.error("Module: %s, message: %s, source: %s" % ( + module, message, source)) diff --git a/tuskar_boxes/overview/urls.py b/tuskar_boxes/overview/urls.py index 9f395ac..86049c0 100644 --- a/tuskar_boxes/overview/urls.py +++ b/tuskar_boxes/overview/urls.py @@ -12,7 +12,9 @@ # License for the specific language governing permissions and limitations # under the License. +from django.conf import settings from django.conf import urls +from django.views import generic from tuskar_ui.infrastructure.overview import urls as tuskar_urls import tuskar_boxes.overview.views as views @@ -23,3 +25,9 @@ urlpatterns.extend(urls.patterns( '', urls.url(r'^$', views.IndexView.as_view(), name='index'), )) + +if settings.DEBUG: + urlpatterns.append(urls.url( + r'^qunit-tuskar-boxes$', + generic.TemplateView.as_view(template_name="tuskar_boxes/qunit.html"), + )) diff --git a/tuskar_boxes/static/tuskar_boxes/tests/tuskar.boxes.js b/tuskar_boxes/static/tuskar_boxes/tests/tuskar.boxes.js new file mode 100644 index 0000000..48f838d --- /dev/null +++ b/tuskar_boxes/static/tuskar_boxes/tests/tuskar.boxes.js @@ -0,0 +1,9 @@ +horizon.addInitFunction(function () { + "use strict"; + + module("Tuskar boxes (tuskar.boxes.js)"); + + test("Passing test", function () { + equal(1, 1); + }); +}); diff --git a/tuskar_boxes/templates/tuskar_boxes/qunit.html b/tuskar_boxes/templates/tuskar_boxes/qunit.html new file mode 100644 index 0000000..426e4ff --- /dev/null +++ b/tuskar_boxes/templates/tuskar_boxes/qunit.html @@ -0,0 +1,26 @@ + + + + Tuskar-UI Extras QUnit Test Suite + + + + {% include "horizon/_conf.html" %} + + {% comment %}Load test modules here.{% endcomment %} + + {% comment %}End test modules.{% endcomment %} + + {% include "horizon/_scripts.html" %} + {% include "infrastructure/_scripts.html" %} + + + +

Tuskar-UI Extras JavaScript Tests

+

+
+

+
    +
    +
    +