forked from CGM_Public/pretix_original
Remove legacy multi-browser and Sauce test runner code
This commit is contained in:
@@ -1,60 +1,14 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
|
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from selenium import webdriver
|
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 use Chrome, Firefox, etc... here
|
||||||
# could add Chrome, Firefox, etc... here
|
BROWSER = os.environ.get('TEST_BROWSER', 'PhantomJS')
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
class BrowserTest(StaticLiveServerTestCase):
|
class BrowserTest(StaticLiveServerTestCase):
|
||||||
@@ -64,48 +18,19 @@ class BrowserTest(StaticLiveServerTestCase):
|
|||||||
settings.DEBUG = ('--debug' in sys.argv)
|
settings.DEBUG = ('--debug' in sys.argv)
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
if RUN_LOCAL:
|
self.driver = getattr(webdriver, BROWSER)()
|
||||||
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.set_window_size(1920, 1080)
|
self.driver.set_window_size(1920, 1080)
|
||||||
self.driver.implicitly_wait(3)
|
self.driver.implicitly_wait(3)
|
||||||
|
|
||||||
def tearDownLocal(self):
|
def tearDown(self):
|
||||||
self.driver.quit()
|
self.driver.quit()
|
||||||
|
|
||||||
def tearDownSauce(self):
|
def scroll_into_view(self, element):
|
||||||
print("\nLink to your job: \n "
|
"""Scroll element into view"""
|
||||||
"https://saucelabs.com/jobs/%s \n" % self.driver.session_id)
|
y = element.location['y']
|
||||||
try:
|
self.driver.execute_script('window.scrollTo(0, {0})'.format(y))
|
||||||
if sys.exc_info() == (None, None, None):
|
|
||||||
sauce.jobs.update_job(self.driver.session_id, passed=True)
|
def scroll_and_click(self, element):
|
||||||
else:
|
self.scroll_into_view(element)
|
||||||
sauce.jobs.update_job(self.driver.session_id, passed=False)
|
time.sleep(0.5)
|
||||||
finally:
|
element.click()
|
||||||
self.driver.quit()
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
from django.test import TestCase, Client
|
from django.test import TestCase, Client
|
||||||
|
|
||||||
from pretix.base.models import User
|
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):
|
class LoginFormBrowserTest(BrowserTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission
|
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):
|
class EventsTest(BrowserTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import unittest
|
|||||||
from selenium.webdriver.support.select import Select
|
from selenium.webdriver.support.select import Select
|
||||||
from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission, ItemCategory, Property, \
|
from pretix.base.models import User, Organizer, Event, OrganizerPermission, EventPermission, ItemCategory, Property, \
|
||||||
PropertyValue, Question, Quota, Item
|
PropertyValue, Question, Quota, Item
|
||||||
from pretix.base.tests import BrowserTest, on_platforms
|
from pretix.base.tests import BrowserTest
|
||||||
|
|
||||||
|
|
||||||
class ItemFormTest(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_css_selector('button[type="submit"]').click()
|
||||||
self.driver.find_element_by_class_name("navbar-right")
|
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):
|
class CategoriesTest(ItemFormTest):
|
||||||
|
|
||||||
def test_create(self):
|
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)
|
self.assertNotIn("Entry tickets", self.driver.find_element_by_css_selector(".container table").text)
|
||||||
|
|
||||||
|
|
||||||
@on_platforms()
|
|
||||||
class PropertiesTest(ItemFormTest):
|
class PropertiesTest(ItemFormTest):
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
@@ -156,7 +144,6 @@ class PropertiesTest(ItemFormTest):
|
|||||||
self.assertNotIn("Size", self.driver.find_element_by_css_selector(".container table").text)
|
self.assertNotIn("Size", self.driver.find_element_by_css_selector(".container table").text)
|
||||||
|
|
||||||
|
|
||||||
@on_platforms()
|
|
||||||
class QuestionsTest(ItemFormTest):
|
class QuestionsTest(ItemFormTest):
|
||||||
|
|
||||||
def test_create(self):
|
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)
|
self.assertNotIn("shoe size", self.driver.find_element_by_css_selector(".container table").text)
|
||||||
|
|
||||||
|
|
||||||
@on_platforms()
|
|
||||||
class QuotaTest(ItemFormTest):
|
class QuotaTest(ItemFormTest):
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user