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

Commit bc530fd

Browse files
bnmnetpbjones1
authored andcommitted
Add: Smart waits
Port: To pytest.
1 parent b7d74bb commit bc530fd

2 files changed

Lines changed: 44 additions & 49 deletions

File tree

runestone/tabbedStuff/js/tabbedstuff.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TabbedStuff extends RunestoneBase {
3434
this.activeTab = 0; // default value--activeTab is the index of the tab that starts open
3535
this.findActiveTab();
3636
this.createTabContainer();
37+
this.indicate_component_ready();
3738
}
3839
/*===========================================
3940
== Update attributes of instance variables ==
@@ -57,21 +58,21 @@ class TabbedStuff extends RunestoneBase {
5758
== Creating/appending final HTML elements ==
5859
==========================================*/
5960
createTabContainer() {
60-
this.replacementDiv = document.createElement("div");
61-
this.replacementDiv.id = this.divid;
62-
$(this.replacementDiv).addClass(this.origElem.getAttribute("class"));
63-
$(this.replacementDiv).attr({ role: "tabpanel" });
61+
this.containerDiv = document.createElement("div");
62+
this.containerDiv.id = this.divid;
63+
$(this.containerDiv).addClass(this.origElem.getAttribute("class"));
64+
$(this.containerDiv).attr({ role: "tabpanel" });
6465
this.tabsUL = document.createElement("ul");
6566
this.tabsUL.id = this.divid + "_tab";
6667
$(this.tabsUL).addClass("nav nav-tabs");
6768
$(this.tabsUL).attr({ role: "tablist" });
6869
this.tabContentDiv = document.createElement("div"); // Create tab content container that holds tab panes w/content
6970
$(this.tabContentDiv).addClass("tab-content");
7071
this.createTabs(); // create and append tabs to the <ul>
71-
this.replacementDiv.appendChild(this.tabsUL);
72-
this.replacementDiv.appendChild(this.tabContentDiv);
72+
this.containerDiv.appendChild(this.tabsUL);
73+
this.containerDiv.appendChild(this.tabContentDiv);
7374
this.addCMD(); // Adds fuctionality for Codemirror/Disqus
74-
$(this.origElem).replaceWith(this.replacementDiv);
75+
$(this.origElem).replaceWith(this.containerDiv);
7576
}
7677
createTabs() {
7778
// Create tabs in format <li><a><span></span></a></li> to be appended to the <ul>

runestone/tabbedStuff/test/test_tabbedStuff.py

Lines changed: 36 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,60 +4,54 @@
44

55
__author__ = "yasinovskyy"
66

7-
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
117

12-
setUpModule, tearDownModule = module_fixture_maker(__file__)
8+
def test_t1(selenium_utils):
9+
"""Initial view. Tab 1 is visible, tab 2 is hidden"""
10+
su = selenium_utils
11+
su.get("index.html")
12+
su.wait_until_ready("exercise1")
1313

14+
e1 = su.driver.find_element_by_id("exercise1")
1415

15-
class TabbedQuestion_Tests(RunestoneTestCase):
16-
def test_t1(self):
17-
"""Initial view. Tab 1 is visible, tab 2 is hidden"""
18-
self.driver.get(self.host + "/index.html")
19-
wait = WebDriverWait(self.driver, 10)
20-
try:
21-
wait.until(EC.presence_of_element_located((By.ID, "exercise1")))
22-
except:
23-
text = self.driver.page_source
24-
print(text[:300])
16+
t1 = e1.find_element_by_class_name("active")
17+
tp1 = e1.find_element_by_id("exercise1-0")
2518

26-
e1 = self.driver.find_element_by_id("exercise1")
19+
assert "Tab 1" == t1.text
20+
assert "Hello!" == tp1.text
2721

28-
t1 = e1.find_element_by_class_name("active")
29-
tp1 = e1.find_element_by_id("exercise1-0")
3022

31-
self.assertEqual("Tab 1", t1.text)
32-
self.assertEqual("Hello!", tp1.text)
23+
def test_t2(selenium_utils):
24+
"""Tab 2 is visible, tab 1 is hidden"""
25+
su = selenium_utils
26+
su.get("index.html")
27+
su.wait_until_ready("exercise1")
28+
e1 = su.driver.find_element_by_id("exercise1")
3329

34-
def test_t2(self):
35-
"""Tab 2 is visible, tab 1 is hidden"""
36-
self.driver.get(self.host + "/index.html")
37-
e1 = self.driver.find_element_by_id("exercise1")
30+
btn_tab2 = e1.find_element_by_link_text("Tab 2")
31+
btn_tab2.click()
3832

39-
btn_tab2 = e1.find_element_by_link_text("Tab 2")
40-
btn_tab2.click()
33+
t1 = e1.find_element_by_class_name("active")
34+
tp1 = e1.find_element_by_id("exercise1-1")
4135

42-
t1 = e1.find_element_by_class_name("active")
43-
tp1 = e1.find_element_by_id("exercise1-1")
36+
assert "Tab 2" == t1.text
37+
assert "Goodbye!" == tp1.text
4438

45-
self.assertEqual("Tab 2", t1.text)
46-
self.assertEqual("Goodbye!", tp1.text)
4739

48-
def test_t3(self):
49-
"""Tab 2 is selected, then tab 1"""
50-
self.driver.get(self.host + "/index.html")
51-
e1 = self.driver.find_element_by_id("exercise1")
40+
def test_t3(selenium_utils):
41+
"""Tab 2 is selected, then tab 1"""
42+
su = selenium_utils
43+
su.get("index.html")
44+
su.wait_until_ready("exercise1")
45+
e1 = su.driver.find_element_by_id("exercise1")
5246

53-
btn_tab2 = e1.find_element_by_link_text("Tab 2")
54-
btn_tab2.click()
47+
btn_tab2 = e1.find_element_by_link_text("Tab 2")
48+
btn_tab2.click()
5549

56-
btn_tab1 = e1.find_element_by_link_text("Tab 1")
57-
btn_tab1.click()
50+
btn_tab1 = e1.find_element_by_link_text("Tab 1")
51+
btn_tab1.click()
5852

59-
t1 = e1.find_element_by_class_name("active")
60-
tp1 = e1.find_element_by_id("exercise1-0")
53+
t1 = e1.find_element_by_class_name("active")
54+
tp1 = e1.find_element_by_id("exercise1-0")
6155

62-
self.assertEqual("Tab 1", t1.text)
63-
self.assertEqual("Hello!", tp1.text)
56+
assert "Tab 1" == t1.text
57+
assert "Hello!" == tp1.text

0 commit comments

Comments
 (0)