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 @@ + +
+ +