Remove legacy multi-browser and Sauce test runner code

This commit is contained in:
Raphael Michel
2015-02-20 01:05:23 +01:00
parent 38a56e06d2
commit 4da23d33b5
4 changed files with 17 additions and 108 deletions

View File

@@ -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()

View File

@@ -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):

View File

@@ -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):

View File

@@ -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):