about summary refs log tree commit diff
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 differdiff --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