aboutsummaryrefslogtreecommitdiff
path: root/webtests
diff options
context:
space:
mode:
Diffstat (limited to 'webtests')
-rw-r--r--webtests/browser_run.py74
-rwxr-xr-xwebtests/chromedriverbin0 -> 17741222 bytes
-rw-r--r--webtests/correlation_matrix_test.py72
-rw-r--r--webtests/correlation_test.py51
-rw-r--r--webtests/libpeerconnection.log0
-rw-r--r--webtests/marker_regression_test.py55
-rw-r--r--webtests/show_trait_js_test.py42
-rw-r--r--webtests/test_runner.py28
8 files changed, 322 insertions, 0 deletions
diff --git a/webtests/browser_run.py b/webtests/browser_run.py
new file mode 100644
index 00000000..2ec299c5
--- /dev/null
+++ b/webtests/browser_run.py
@@ -0,0 +1,74 @@
+from __future__ import absolute_import, division, print_function
+
+__all__ = ('sleep', 'testmod', 'test')
+
+from doctest import testmod
+
+from time import sleep
+
+import selenium
+from selenium import webdriver
+from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
+from selenium.webdriver.common.keys import Keys
+
+class Test(object):
+ def __init__(self):
+ #self.browser = webdriver.Chrome('/home/gn2/gn2/webtests/chromedriver')
+ self.browser = webdriver.Firefox()
+
+ def get(self, url):
+ self.browser.get(url)
+ sleep(5)
+ self.title()
+
+ def click(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ if el.text:
+ text = el.text.strip()
+ elif el.get_attribute("value"):
+ text = el.get_attribute("value").strip()
+ else:
+ text = "Notext"
+ el.click()
+ print("clicked:", text)
+ sleep(2)
+
+ def click_option(self, xpath_selector, option_text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ for option in el.find_elements_by_tag_name('option'):
+ if option.text == option_text:
+ option.click() # select() in earlier versions of webdriver
+ break
+ sleep(2)
+
+ def enter_text(self, xpath_selector, text):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ sleep(10)
+ el.send_keys(text)
+ sleep(5)
+ # Just in case things get mangled by JavaScript, etc. we print the text for testing
+ self.get_text(xpath_selector)
+
+ def get_text(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ text = el.text.strip() or el.get_attribute("value").strip()
+ print("text:", text)
+
+ def get_element_style(self, xpath_selector):
+ el = self.browser.find_element_by_xpath(xpath_selector)
+ style = el.get_attribute("style").strip()
+ print("style:", style)
+
+ def switch_window(self):
+ self.browser.switch_to_window(self.browser.window_handles[-1])
+ sleep(2)
+ self.title()
+ sleep(2)
+
+
+ def title(self):
+ print("title:", self.browser.title)
+
+
+
+test = Test() \ No newline at end of file
diff --git a/webtests/chromedriver b/webtests/chromedriver
new file mode 100755
index 00000000..754eb668
--- /dev/null
+++ b/webtests/chromedriver
Binary files differ
diff --git a/webtests/correlation_matrix_test.py b/webtests/correlation_matrix_test.py
new file mode 100644
index 00000000..8529c265
--- /dev/null
+++ b/webtests/correlation_matrix_test.py
@@ -0,0 +1,72 @@
+"""
+
+Test Correlation matrix
+
+>>> test.get("http://genenetwork.org/")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Hippocampus mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'grin2b')
+text: grin2b
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Add 1430675_at
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[2]/td/input''')
+clicked: HC_M2_0606_P::1430675_at
+
+Add 1442370_at
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[3]/td/input''')
+clicked: HC_M2_0606_P::1442370_at
+
+Add 1457003_at
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[4]/td/input''')
+clicked: HC_M2_0606_P::1457003_at
+
+Add 1422223_at
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[5]/td/input''')
+clicked: HC_M2_0606_P::1422223_at
+
+>>> sleep(5)
+
+Add to collection page
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[1]/td/table/tbody/tr[1]/td[4]/a''')
+clicked: Notext
+
+>>> sleep(5)
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: BXD Trait Collection
+
+Select all records
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/a/img''')
+clicked: Notext
+
+Click Matrix
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[2]/a/img''')
+clicked: Notext
+
+Another new window
+>>> test.switch_window()
+title: Correlation Matrix
+
+Sleep a bunch because this can take a while
+>>> sleep(10)
+
+Ensure that the correlation between Trait3 (HC_M2_0606_P::1457003_at) and Trait4 (HC_M2_0606_P::1422223_at) is 0.608
+>>> test.get_text('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/blockquote/table/tbody/tr[5]/td[5]/a/font''')
+text: 0.608\n71
+
+"""
+
+from __future__ import absolute_import, division, print_function
+
+from browser_run import *
+
+testmod()
diff --git a/webtests/correlation_test.py b/webtests/correlation_test.py
new file mode 100644
index 00000000..aad3a69f
--- /dev/null
+++ b/webtests/correlation_test.py
@@ -0,0 +1,51 @@
+"""
+Test calculate correlations
+
+>>> test.get("http://genenetwork.org")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Hippocampus mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'ssh')
+text: ssh
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Choose the first result
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[2]/td[2]/a''')
+clicked: 1455854_a_at
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: Hippocampus M430v2 BXD 06/06 PDNN : 1455854_a_at: Display Trait
+
+Click on Calculate Correlations
+>>> test.click('''//*[@id="title3"]''')
+clicked: Calculate Correlations
+
+Click on Compute
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p[6]/table/tbody/tr/td/div/div/span/table/tbody/tr/td/input[3]''')
+clicked: Compute
+
+Another new window
+>>> test.switch_window()
+title: Correlation
+
+Sleep a bunch because this can take a while
+>>> sleep(25)
+
+Ensure the Sample rho is the exepcted 1.000 because it should be the same record
+>>> test.get_text('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/table/tbody/tr[2]/td/div/table/tbody/tr[2]/td[9]/a''')
+text: 1.000
+
+"""
+
+from __future__ import absolute_import, division, print_function
+
+from browser_run import *
+
+testmod()
diff --git a/webtests/libpeerconnection.log b/webtests/libpeerconnection.log
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/webtests/libpeerconnection.log
diff --git a/webtests/marker_regression_test.py b/webtests/marker_regression_test.py
new file mode 100644
index 00000000..c4f76f53
--- /dev/null
+++ b/webtests/marker_regression_test.py
@@ -0,0 +1,55 @@
+"""
+Test calculate correlations
+
+>>> test.get("http://genenetwork.org")
+title: GeneNetwork
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Liver mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'grin2b')
+text: grin2b
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Choose the second result
+>>> test.click('''/html/body/table/tbody/tr[3]/td/table/tbody/tr/td/form/p/table/tbody/tr[3]/td/div/table/tbody/tr[3]/td[2]/a''')
+clicked: 1431700_at_A
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: GSE16780 UCLA Hybrid MDP Liver Affy HT M430A (Sep11) RMA : 1431700_at_A: Display Trait
+
+Click on Mapping Tools
+>>> test.click('''//*[@id="title4"]''')
+clicked: Mapping Tools
+
+Click on Marker Regression tab
+>>> test.click('''//*[@id="mapping_tabs"]/ul/li[2]/a''')
+clicked: Marker Regression
+
+Click on Compute
+>>> test.click('''//*[@id="mappingtabs-2"]/span/table/tbody/tr[1]/td/input''')
+clicked: Compute
+
+Another new window
+>>> test.switch_window()
+title: Genome Association Result
+
+Sleep a bunch because this can take a while
+>>> sleep(60)
+
+Ensure that the LRS of the top record is the exepcted value
+>>> test.get_text('''//*[@id="1"]/td[2]''')
+text: 11.511
+
+"""
+
+from __future__ import absolute_import, division, print_function
+
+from browser_run import *
+
+testmod()
diff --git a/webtests/show_trait_js_test.py b/webtests/show_trait_js_test.py
new file mode 100644
index 00000000..0fd2c16c
--- /dev/null
+++ b/webtests/show_trait_js_test.py
@@ -0,0 +1,42 @@
+"""
+Test if JS is working on the show trait page
+
+>>> test.get("alexandria.uthsc.edu:89")
+title: GeneNetwork
+
+Choose the species
+>>> test.click_option('''//*[@id="species"]''', 'Human')
+
+Choose the group
+>>> test.click_option('''//*[@id="cross"]''', 'Human Brain Transcriptome (Yale/Kavli)')
+
+Choose the type
+>>> test.click_option('''//*[@id="tissue"]''', 'Orbital Prefrontal Cortex mRNA')
+
+Enter the Get Any
+>>> test.enter_text('''//*[@id="tfor"]''', 'shh')
+text: shh
+
+Search
+>>> test.click('//*[@id="btsearch"]')
+clicked: Search
+
+Choose the first result
+>>> test.click('''//*[@id="KIN_YSM_OFC_0711::3081205"]/td[2]/a''')
+clicked: 3081205
+
+A new window is created, so we switch to it
+>>> test.switch_window()
+title: KIN/YSM Human OFC Affy Hu-Exon 1.0 ST (Jul11) Quantile : 3081205: Display Trait
+
+Check that the Calculate Correlations tab is closed (if javascript isn't working, it will be open)
+>>> test.get_element_style('''//*[@id="sectionbody3"]''')
+style: display: none;
+
+"""
+
+from __future__ import absolute_import, division, print_function
+
+from browser_run import *
+
+testmod()
diff --git a/webtests/test_runner.py b/webtests/test_runner.py
new file mode 100644
index 00000000..ef6d0d69
--- /dev/null
+++ b/webtests/test_runner.py
@@ -0,0 +1,28 @@
+from __future__ import absolute_import, division, print_function
+
+import unittest
+import doctest
+import glob
+
+tests = ("correlation_test",
+ "correlation_matrix_test",
+ "marker_regression_test",
+ "show_trait_js_test")
+
+
+def main():
+ tests = glob.glob("*_test.py")
+
+ suite = unittest.TestSuite()
+
+ for testname in tests:
+ test = testname.rsplit(".", 1)[0]
+ print("Test is:", test)
+ mod = __import__(test)
+ suite.addTest(doctest.DocTestSuite(mod))
+
+ runner = unittest.TextTestRunner()
+ runner.run(suite)
+
+if __name__ == '__main__':
+ main() \ No newline at end of file