Skip to content
This repository was archived by the owner on Jun 7, 2023. It is now read-only.

Commit 76f0990

Browse files
committed
Make tests more robust across chrome versions
1 parent 1c65d5b commit 76f0990

14 files changed

Lines changed: 162 additions & 1 deletion

File tree

runestone/activecode/test/test_activecode.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ def test_hello(self):
1616
:return:
1717
'''
1818
self.driver.get(self.host + "/index.html")
19+
wait = WebDriverWait(self.driver, 10)
20+
try:
21+
wait.until(
22+
EC.presence_of_element_located((By.ID, "test1"))
23+
)
24+
except:
25+
text = self.driver.page_source
26+
print(text)
1927
t1 = self.driver.find_element_by_id("test1")
2028
self.assertIsNotNone(t1)
2129
rb = t1.find_element_by_class_name("run-button")

runestone/assess/test/test_assess.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
__author__ = 'yasinovskyy'
66

77
from unittest import TestCase
8+
from selenium.webdriver.support import expected_conditions as EC
9+
from selenium.webdriver.support.ui import WebDriverWait
10+
from selenium.webdriver.common.by import By
811
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
912

1013
mf, setUpModule, tearDownModule = module_fixture_maker(__file__, True)
@@ -45,6 +48,14 @@ class MultipleChoiceQuestion_Tests(RunestoneTestCase):
4548
def test_ma1(self):
4649
'''Multiple Answer: Nothing selected, Check button clicked'''
4750
self.driver.get(self.host + "/index.html")
51+
wait = WebDriverWait(self.driver, 10)
52+
try:
53+
wait.until(
54+
EC.presence_of_element_located((By.ID, "question1"))
55+
)
56+
except:
57+
text = self.driver.page_source
58+
print(text)
4859
t1 = self.driver.find_element_by_id("question1")
4960

5061
btn_check = t1.find_element_by_tag_name('button')

runestone/clickableArea/test/test_clickableArea.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
__author__ = 'yasinovskyy'
66

7+
from selenium.webdriver.support import expected_conditions as EC
8+
from selenium.webdriver.support.ui import WebDriverWait
9+
from selenium.webdriver.common.by import By
710
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
811

912
setUpModule, tearDownModule = module_fixture_maker(__file__)
@@ -15,6 +18,15 @@ class ClickableAreaQuestion_Tests(RunestoneTestCase):
1518
def test_ca1(self):
1619
'''Text/Code: Nothing selected'''
1720
self.driver.get(self.host + "/index.html")
21+
wait = WebDriverWait(self.driver, 10)
22+
try:
23+
wait.until(
24+
EC.presence_of_element_located((By.TAG_NAME, "body"))
25+
)
26+
except:
27+
text = self.driver.page_source
28+
print(text)
29+
1830
t1 = self.driver.find_elements_by_class_name("alert-warning")[0]
1931

2032
btn_check = t1.find_element_by_class_name('btn-success')

runestone/dragndrop/test/test_dragndrop.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010

1111
__author__ = 'yasinovskyy'
1212

13+
from selenium.webdriver.support import expected_conditions as EC
14+
from selenium.webdriver.support.ui import WebDriverWait
15+
from selenium.webdriver.common.by import By
1316
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
1417

1518
setUpModule, tearDownModule = module_fixture_maker(__file__)
@@ -28,6 +31,15 @@ def setUp(self):
2831
def test_dnd1(self):
2932
'''No selection. Button clicked'''
3033
self.driver.get(self.host + "/index.html")
34+
wait = WebDriverWait(self.driver, 10)
35+
try:
36+
wait.until(
37+
EC.presence_of_element_located((By.ID, "drag-and-drop"))
38+
)
39+
except:
40+
text = self.driver.page_source
41+
print(text)
42+
3143
t1 = self.driver.find_element_by_id("drag-and-drop")
3244

3345
btn_check = t1.find_element_by_class_name('btn-success')

runestone/fitb/test/test_fitb.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
from unittest import TestCase
22
import codecs
33
from selenium.webdriver.common.alert import Alert
4+
from selenium.webdriver.support import expected_conditions as EC
5+
from selenium.webdriver.support.ui import WebDriverWait
6+
from selenium.webdriver.common.by import By
47
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
58

69
mf, setUpModule, tearDownModule = module_fixture_maker(__file__, True)
@@ -46,6 +49,15 @@ class FITBtests(RunestoneTestCase):
4649
# Load the web page, then return the DIV containing a FITB question.
4750
def find_fitb(self, elem_id):
4851
self.driver.get(self.host + "/index.html")
52+
wait = WebDriverWait(self.driver, 10)
53+
try:
54+
wait.until(
55+
EC.presence_of_element_located((By.ID, elem_id))
56+
)
57+
except:
58+
text = self.driver.page_source
59+
print(text)
60+
4961
self.fitb = self.driver.find_element_by_id(elem_id)
5062
return self.fitb
5163

runestone/lp/test/test_lp.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
from selenium.webdriver.common.by import By
2121
from selenium.webdriver.support.ui import WebDriverWait
2222
from selenium.webdriver.support import expected_conditions as EC
23+
from selenium.webdriver.common.by import By
24+
2325
#
2426
# Local imports
2527
# -------------
@@ -163,6 +165,15 @@ def test_5(self):
163165
class Functional_Test_Lp(RunestoneTestCase):
164166
def test_1(self):
165167
self.driver.get(self.host + "/lp_tester.s.html")
168+
wait = WebDriverWait(self.driver, 10)
169+
try:
170+
wait.until(
171+
EC.presence_of_element_located((By.TAG_NAME, "body"))
172+
)
173+
except:
174+
text = self.driver.page_source
175+
print(text)
176+
166177
snippets = self.driver.find_elements_by_class_name("code_snippet")
167178
self.assertEqual(len(snippets), 2)
168179
check_button = self.driver.find_element_by_id('e1')

runestone/matrixeq/test/test_matrixeq.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"""
44

55
from unittest import TestCase
6+
from selenium.webdriver.support import expected_conditions as EC
7+
from selenium.webdriver.support.ui import WebDriverWait
8+
from selenium.webdriver.common.by import By
69
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
710

811
__author__ = 'wayne brown'
@@ -15,6 +18,15 @@ class Matrixeq_Tests(RunestoneTestCase):
1518
def test_ma1(self):
1619
''' matrixeq - test the click of a mutliplication operator '''
1720
self.driver.get(self.host + "/index.html")
21+
wait = WebDriverWait(self.driver, 10)
22+
try:
23+
wait.until(
24+
EC.presence_of_element_located((By.TAG_NAME, "body"))
25+
)
26+
except:
27+
text = self.driver.page_source
28+
print(text)
29+
1830
# t1 = self.driver.find_element_by_id("question1")
1931
#
2032
# btn_check = t1.find_element_by_tag_name('button')

runestone/parsons/test/test_parsons.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ class ParsonsTests(RunestoneTestCase):
2121
def test_general(self):
2222

2323
self.driver.get(self.host + "/index.html")
24+
wait = WebDriverWait(self.driver, 10)
25+
try:
26+
wait.until(
27+
EC.presence_of_element_located((By.ID, "parsons-1-source"))
28+
)
29+
except:
30+
text = self.driver.page_source
31+
print(text)
2432
self.driver.execute_script('window.localStorage.clear();')
2533

2634
# Source has correct number of blocks and each block has a label

runestone/poll/test/test_poll.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
2+
from selenium.webdriver.support import expected_conditions as EC
3+
from selenium.webdriver.support.ui import WebDriverWait
4+
from selenium.webdriver.common.by import By
5+
26

37
setUpModule, tearDownModule = module_fixture_maker(__file__)
48

59
class PollTests(RunestoneTestCase):
610
def test_poll(self):
711
''' test the poll directive '''
812
self.driver.get(self.host + '/index.html')
13+
wait = WebDriverWait(self.driver, 10)
14+
try:
15+
wait.until(
16+
EC.presence_of_element_located((By.ID, "pollid1_container"))
17+
)
18+
except:
19+
text = self.driver.page_source
20+
print(text)
21+
922

1023
poll_div = self.driver.find_element_by_id('pollid1_container')
1124

@@ -20,6 +33,6 @@ def test_poll(self):
2033
el = poll_div.find_element_by_id('pollid1_sent') # check for results span
2134
self.assertIsNotNone(el)
2235
self.assertEqual(el.text[:6], "Thanks")
23-
36+
2437
# just make sure we can find the results div - an exception will be raised if the div cannot be found
2538
poll_div.find_element_by_id('pollid1_results')

runestone/reveal/test/test_reveal.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,25 @@
55
__author__ = 'yasinovskyy'
66

77
from runestone.unittest_base import module_fixture_maker, RunestoneTestCase
8+
from selenium.webdriver.support import expected_conditions as EC
9+
from selenium.webdriver.support.ui import WebDriverWait
10+
from selenium.webdriver.common.by import By
811

912
setUpModule, tearDownModule = module_fixture_maker(__file__)
1013

1114
class RevealQuestion_Tests(RunestoneTestCase):
1215
def test_r1(self):
1316
'''Initial view. Content is hidden'''
1417
self.driver.get(self.host + "/index.html")
18+
wait = WebDriverWait(self.driver, 10)
19+
try:
20+
wait.until(
21+
EC.presence_of_element_located((By.ID, "reveal"))
22+
)
23+
except:
24+
text = self.driver.page_source
25+
print(text)
26+
1527
t1 = self.driver.find_element_by_id("reveal")
1628

1729
q1 = t1.find_element_by_id('question1')

0 commit comments

Comments
 (0)