diff options
Diffstat (limited to 'webtests')
-rw-r--r-- | webtests/browser_run.py | 74 | ||||
-rwxr-xr-x | webtests/chromedriver | bin | 0 -> 17741222 bytes | |||
-rw-r--r-- | webtests/correlation_matrix_test.py | 72 | ||||
-rw-r--r-- | webtests/correlation_test.py | 51 | ||||
-rw-r--r-- | webtests/libpeerconnection.log | 0 | ||||
-rw-r--r-- | webtests/marker_regression_test.py | 55 | ||||
-rw-r--r-- | webtests/show_trait_js_test.py | 42 | ||||
-rw-r--r-- | webtests/test_runner.py | 28 |
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 Binary files differnew file mode 100755 index 00000000..754eb668 --- /dev/null +++ b/webtests/chromedriver 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 |