diff --git a/src/pretix/base/tests/__init__.py b/src/pretix/base/tests/__init__.py index c2a580227..fd32190b8 100644 --- a/src/pretix/base/tests/__init__.py +++ b/src/pretix/base/tests/__init__.py @@ -1,60 +1,14 @@ import os import sys +import time from django.contrib.staticfiles.testing import StaticLiveServerTestCase from django.conf import settings from selenium import webdriver -RUN_LOCAL = ('SAUCE_USERNAME' not in os.environ) -""" -For a long time, we used SauceLabs for CI testing, because they provide free -browser VMs for Open Source projects. However, more tests failed because of -connection timeouts to SauceLabs than for real reasons, so we're using -PhantomJS now. However, we'll keep the SauceClient code here as it might prove -useful some day. -""" -if RUN_LOCAL: - # could add Chrome, Firefox, etc... here - BROWSERS = [os.environ.get('TEST_BROWSER', 'PhantomJS')] -else: - from sauceclient import SauceClient - USERNAME = os.environ.get('SAUCE_USERNAME') - ACCESS_KEY = os.environ.get('SAUCE_ACCESS_KEY') - sauce = SauceClient(USERNAME, ACCESS_KEY) - - BROWSERS = [ - {"platform": "Mac OS X 10.9", - "browserName": "chrome", - "version": "35"}, - {"platform": "Windows 8.1", - "browserName": "internet explorer", - "version": "11"}, - {"platform": "Linux", - "browserName": "firefox", - "version": "29"}] - - -def on_platforms(): - if RUN_LOCAL: - def decorator(base_class): - module = sys.modules[base_class.__module__].__dict__ - for i, platform in enumerate(BROWSERS): - d = dict(base_class.__dict__) - d['browser'] = platform - name = "%s_%s" % (base_class.__name__, i + 1) - module[name] = type(name, (base_class,), d) - pass - return decorator - - def decorator(base_class): - module = sys.modules[base_class.__module__].__dict__ - for i, platform in enumerate(BROWSERS): - d = dict(base_class.__dict__) - d['desired_capabilities'] = platform - name = "%s_%s" % (base_class.__name__, i + 1) - module[name] = type(name, (base_class,), d) - return decorator +# could use Chrome, Firefox, etc... here +BROWSER = os.environ.get('TEST_BROWSER', 'PhantomJS') class BrowserTest(StaticLiveServerTestCase): @@ -64,48 +18,19 @@ class BrowserTest(StaticLiveServerTestCase): settings.DEBUG = ('--debug' in sys.argv) def setUp(self): - if RUN_LOCAL: - self.setUpLocal() - else: - self.setUpSauce() - - def tearDown(self): - if RUN_LOCAL: - self.tearDownLocal() - else: - self.tearDownSauce() - - def setUpSauce(self): - if 'TRAVIS_JOB_NUMBER' in os.environ: - self.desired_capabilities['tunnel-identifier'] = \ - os.environ['TRAVIS_JOB_NUMBER'] - self.desired_capabilities['build'] = os.environ['TRAVIS_BUILD_NUMBER'] - self.desired_capabilities['tags'] = \ - [os.environ['TRAVIS_PYTHON_VERSION'], 'CI'] - self.desired_capabilities['name'] = self.id() - - sauce_url = "http://%s:%s@ondemand.saucelabs.com:80/wd/hub" - self.driver = webdriver.Remote( - desired_capabilities=self.desired_capabilities, - command_executor=sauce_url % (USERNAME, ACCESS_KEY) - ) - self.driver.implicitly_wait(5) - - def setUpLocal(self): - self.driver = getattr(webdriver, self.browser)() + self.driver = getattr(webdriver, BROWSER)() self.driver.set_window_size(1920, 1080) self.driver.implicitly_wait(3) - def tearDownLocal(self): + def tearDown(self): self.driver.quit() - def tearDownSauce(self): - print("\nLink to your job: \n " - "https://saucelabs.com/jobs/%s \n" % self.driver.session_id) - try: - if sys.exc_info() == (None, None, None): - sauce.jobs.update_job(self.driver.session_id, passed=True) - else: - sauce.jobs.update_job(self.driver.session_id, passed=False) - finally: - self.driver.quit() + def scroll_into_view(self, element): + """Scroll element into view""" + y = element.location['y'] + self.driver.execute_script('window.scrollTo(0, {0})'.format(y)) + + def scroll_and_click(self, element): + self.scroll_into_view(element) + time.sleep(0.5) + element.click() diff --git a/src/pretix/control/tests/test_auth.py b/src/pretix/control/tests/test_auth.py index b87093630..c6351ad88 100644 --- a/src/pretix/control/tests/test_auth.py +++ b/src/pretix/control/tests/test_auth.py @@ -1,10 +1,9 @@ from django.test import TestCase, Client from pretix.base.models import User -from pretix.base.tests import BrowserTest, on_platforms +from pretix.base.tests import BrowserTest -@on_platforms() class LoginFormBrowserTest(BrowserTest): def setUp(self): diff --git a/src/pretix/control/tests/test_events.py b/src/pretix/control/tests/test_events.py index 1596cc647..2a3f7c4bc 100644 --- a/src/pretix/control/tests/test_events.py +++ b/src/pretix/control/tests/test_events.py @@ -1,9 +1,8 @@ import datetime from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission -from pretix.base.tests import BrowserTest, on_platforms +from pretix.base.tests import BrowserTest -@on_platforms() class EventsTest(BrowserTest): def setUp(self): diff --git a/src/pretix/control/tests/test_items.py b/src/pretix/control/tests/test_items.py index ae9d1858b..28df55a92 100644 --- a/src/pretix/control/tests/test_items.py +++ b/src/pretix/control/tests/test_items.py @@ -5,7 +5,7 @@ import unittest from selenium.webdriver.support.select import Select from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission, ItemCategory, Property, \ PropertyValue, Question, Quota, Item -from pretix.base.tests import BrowserTest, on_platforms +from pretix.base.tests import BrowserTest class ItemFormTest(BrowserTest): @@ -30,18 +30,7 @@ class ItemFormTest(BrowserTest): self.driver.find_element_by_css_selector('button[type="submit"]').click() self.driver.find_element_by_class_name("navbar-right") - def scroll_into_view(self, element): - """Scroll element into view""" - y = element.location['y'] - self.driver.execute_script('window.scrollTo(0, {0})'.format(y)) - def scroll_and_click(self, element): - self.scroll_into_view(element) - time.sleep(0.5) - element.click() - - -@on_platforms() class CategoriesTest(ItemFormTest): def test_create(self): @@ -109,7 +98,6 @@ class CategoriesTest(ItemFormTest): self.assertNotIn("Entry tickets", self.driver.find_element_by_css_selector(".container table").text) -@on_platforms() class PropertiesTest(ItemFormTest): def test_create(self): @@ -156,7 +144,6 @@ class PropertiesTest(ItemFormTest): self.assertNotIn("Size", self.driver.find_element_by_css_selector(".container table").text) -@on_platforms() class QuestionsTest(ItemFormTest): def test_create(self): @@ -193,7 +180,6 @@ class QuestionsTest(ItemFormTest): self.assertNotIn("shoe size", self.driver.find_element_by_css_selector(".container table").text) -@on_platforms() class QuotaTest(ItemFormTest): def test_create(self):