Skip to content

Commit

Permalink
Merge f4875a0 into 7a4f5ba
Browse files Browse the repository at this point in the history
  • Loading branch information
davidtaylorhq committed May 15, 2017
2 parents 7a4f5ba + f4875a0 commit 7ea95aa
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 50 deletions.
14 changes: 10 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
sudo: false
dist: trusty

language: python
python:
"2.7"
cache: pip

before_install:
- "export DISPLAY=:99.0"
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16"
addons:
sauce_connect:
username: "davidtaylorhq"
access_key: "3393655d-bcc9-4701-9653-0fca51ad3f1c"

install:
- pip install -r requirements.txt
- pip install coveralls codeclimate-test-reporter

before_script:
- export PATH=$PATH:/usr/lib/chromium-browser/
- python manage.py collectstatic --noinput

script:
- coverage run manage.py test RIGS
- coverage run manage.py test RIGS.test_functional --verbosity=2

after_success:
- coveralls
Expand Down
100 changes: 55 additions & 45 deletions RIGS/test_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,31 @@
from reversion import revisions as reversion
import json


import time



def SELENIUM_DRIVER(test_name):
# return webdriver.Chrome()
if os.environ.get("TRAVIS"):
username = os.environ["SAUCE_USERNAME"]
access_key = os.environ["SAUCE_ACCESS_KEY"]
caps = {'browserName': "chrome"}
caps['platform'] = "Windows 7"
caps['version'] = "latest"
caps["tunnel-identifier"] = os.environ["TRAVIS_JOB_NUMBER"]
caps["name"] = '#' + os.environ["TRAVIS_JOB_NUMBER"] + ": " + test_name
hub_url = "%s:%s@localhost:4445" % (username, access_key)
driver = webdriver.Remote(desired_capabilities=caps, command_executor="http://%s/wd/hub" % hub_url)
return driver
else:
return webdriver.Chrome()


class UserRegistrationTest(LiveServerTestCase):

def setUp(self):
self.browser = webdriver.Firefox()
self.browser = SELENIUM_DRIVER(self.id())
self.browser.implicitly_wait(3) # Set implicit wait session wide
os.environ['RECAPTCHA_TESTING'] = 'True'

Expand Down Expand Up @@ -166,9 +185,9 @@ def setUp(self):

self.vatrate = models.VatRate.objects.create(start_at='2014-03-05',rate=0.20,comment='test1')

self.browser = webdriver.Firefox()
self.browser.implicitly_wait(3) # Set implicit wait session wide
self.browser.maximize_window()
self.browser = SELENIUM_DRIVER(self.id())
self.browser.implicitly_wait(10) # Set implicit wait session wide
# self.browser.maximize_window()
os.environ['RECAPTCHA_TESTING'] = 'True'

def tearDown(self):
Expand Down Expand Up @@ -211,7 +230,7 @@ def testRigCreate(self):
# Gets redirected to login and back
self.authenticate('/event/create/')

wait = WebDriverWait(self.browser, 10) #setup WebDriverWait to use later (to wait for animations)
wait = WebDriverWait(self.browser, 1) #setup WebDriverWait to use later (to wait for animations)

wait.until(animation_is_finished())

Expand Down Expand Up @@ -366,11 +385,11 @@ def testRigCreate(self):
self.assertEqual(obj.pk, int(option.get_attribute("value")))

# Set start date/time
form.find_element_by_id('id_start_date').send_keys('3015-05-25')
form.find_element_by_id('id_start_date').send_keys('25/05/3015')
form.find_element_by_id('id_start_time').send_keys('06:59')

# Set end date/time
form.find_element_by_id('id_end_date').send_keys('4000-06-27')
form.find_element_by_id('id_end_date').send_keys('27/06/4000')
form.find_element_by_id('id_end_time').send_keys('07:00')

# Add item
Expand Down Expand Up @@ -467,7 +486,7 @@ def testEventDuplicate(self):
self.browser.get(self.live_server_url + '/event/' + str(testEvent.pk) + '/duplicate/')
self.authenticate('/event/' + str(testEvent.pk) + '/duplicate/')

wait = WebDriverWait(self.browser, 10) #setup WebDriverWait to use later (to wait for animations)
wait = WebDriverWait(self.browser, 3) #setup WebDriverWait to use later (to wait for animations)

save = self.browser.find_element_by_xpath(
'(//button[@type="submit"])[3]')
Expand Down Expand Up @@ -540,7 +559,7 @@ def testDateValidation(self):
# Gets redirected to login and back
self.authenticate('/event/create/')

wait = WebDriverWait(self.browser, 10) #setup WebDriverWait to use later (to wait for animations)
wait = WebDriverWait(self.browser, 3) #setup WebDriverWait to use later (to wait for animations)

wait.until(animation_is_finished())

Expand All @@ -555,14 +574,13 @@ def testDateValidation(self):
e.send_keys('Test Event Name')

# Both dates, no times, end before start
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')
self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")

form.find_element_by_id('id_end_date').clear()
form.find_element_by_id('id_end_date').send_keys('3015-04-23')
self.browser.execute_script("document.getElementById('id_end_date').value='3015-04-23'")

# Attempt to save - should fail
save.click()

error = self.browser.find_element_by_xpath('//div[contains(@class, "alert-danger")]')
self.assertTrue(error.is_displayed())
self.assertIn("can't finish before it has started", error.find_element_by_xpath('//dd[1]/ul/li').text)
Expand All @@ -571,16 +589,14 @@ def testDateValidation(self):
# Same date, end time before start time
form = self.browser.find_element_by_tag_name('form')
save = self.browser.find_element_by_xpath('(//button[@type="submit"])[3]')
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')

form.find_element_by_id('id_end_date').clear()
form.find_element_by_id('id_end_date').send_keys('3015-04-23')
self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")
self.browser.execute_script("document.getElementById('id_end_date').value='3015-04-23'")

form.find_element_by_id('id_start_time').clear()
form.find_element_by_id('id_start_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_start_time').send_keys('06:59')

form.find_element_by_id('id_end_time').clear()
form.find_element_by_id('id_end_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_end_time').send_keys('06:00')

# Attempt to save - should fail
Expand All @@ -593,31 +609,28 @@ def testDateValidation(self):
# Same date, end time before start time
form = self.browser.find_element_by_tag_name('form')
save = self.browser.find_element_by_xpath('(//button[@type="submit"])[3]')
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')

form.find_element_by_id('id_end_date').clear()
form.find_element_by_id('id_end_date').send_keys('3015-04-23')
self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")
self.browser.execute_script("document.getElementById('id_end_date').value='3015-04-24'")

form.find_element_by_id('id_start_time').clear()
form.find_element_by_id('id_start_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_start_time').send_keys('06:59')

form.find_element_by_id('id_end_time').clear()
form.find_element_by_id('id_end_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_end_time').send_keys('06:00')


# No end date, end time before start time
form = self.browser.find_element_by_tag_name('form')
save = self.browser.find_element_by_xpath('(//button[@type="submit"])[3]')
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')

form.find_element_by_id('id_end_date').clear()

self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")
self.browser.execute_script("document.getElementById('id_end_date').value=''")

form.find_element_by_id('id_start_time').clear()
form.find_element_by_id('id_start_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_start_time').send_keys('06:59')

form.find_element_by_id('id_end_time').clear()
form.find_element_by_id('id_end_time').send_keys(Keys.DELETE)
form.find_element_by_id('id_end_time').send_keys('06:00')

# Attempt to save - should fail
Expand All @@ -630,19 +643,18 @@ def testDateValidation(self):
# 2 dates, end after start
form = self.browser.find_element_by_tag_name('form')
save = self.browser.find_element_by_xpath('(//button[@type="submit"])[3]')
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')
self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")
self.browser.execute_script("document.getElementById('id_end_date').value='3015-04-26'")

form.find_element_by_id('id_end_date').clear()
form.find_element_by_id('id_end_date').send_keys('3015-04-26')

form.find_element_by_id('id_start_time').clear()

form.find_element_by_id('id_end_time').clear()
self.browser.execute_script("document.getElementById('id_start_time').value=''")
self.browser.execute_script("document.getElementById('id_end_time').value=''")

# Attempt to save - should succeed
save.click()

wait.until(animation_is_finished())


# See redirected to success page
successTitle = self.browser.find_element_by_xpath('//h1').text
event = models.Event.objects.get(name='Test Event Name')
Expand All @@ -653,7 +665,7 @@ def testRigNonRig(self):
# Gets redirected to login and back
self.authenticate('/event/create/')

wait = WebDriverWait(self.browser, 10) #setup WebDriverWait to use later (to wait for animations)
wait = WebDriverWait(self.browser, 3) #setup WebDriverWait to use later (to wait for animations)
self.browser.implicitly_wait(3) #Set session-long wait (only works for non-existant DOM objects)

wait.until(animation_is_finished())
Expand All @@ -672,8 +684,7 @@ def testRigNonRig(self):
e.send_keys('Test Event Name')

# Set an arbitrary date
form.find_element_by_id('id_start_date').clear()
form.find_element_by_id('id_start_date').send_keys('3015-04-24')
self.browser.execute_script("document.getElementById('id_start_date').value='3015-04-24'")

# Save the rig
save.click()
Expand Down Expand Up @@ -767,7 +778,7 @@ def setUp(self):
models.Event.objects.create(name="TE E17", start_date=date.today()-timedelta(days=1), is_rig=False, description="non rig yesterday")
models.Event.objects.create(name="TE E18", start_date=date.today(), is_rig=False, status=models.Event.CANCELLED, description="non rig today cancelled")

self.browser = webdriver.Firefox()
self.browser = SELENIUM_DRIVER(self.id())
self.browser.implicitly_wait(3) # Set implicit wait session wide
os.environ['RECAPTCHA_TESTING'] = 'True'

Expand Down Expand Up @@ -926,6 +937,5 @@ def __call__(self, driver):
numberAnimating = driver.execute_script('return $(":animated").length')
finished = numberAnimating == 0
if finished:
import time
time.sleep(0.1)
return finished
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ python-dateutil==2.6.0
pytz==2017.2
raven==6.0.0
reportlab==3.4.0
selenium==2.53.1
selenium==3.4.1
simplejson==3.10.0
six==1.10.0
sqlparse==0.2.3
Expand Down

0 comments on commit 7ea95aa

Please sign in to comment.