Skip to content

Commit

Permalink
make a driver system for integration testing track selection
Browse files Browse the repository at this point in the history
  • Loading branch information
rbuels committed May 22, 2012
1 parent eecfdfa commit 92df844
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 30 deletions.
47 changes: 17 additions & 30 deletions tests/selenium_tests/jbrowse_selenium/JBrowseTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,32 @@
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select

import track_selectors

class JBrowseTest (object):

data_dir = None
base_url = None

## TestCase overrides

def baseURL( self ):
if not self.base_url:
self.base_url = os.environ['JBROWSE_URL'] if 'JBROWSE_URL' in os.environ else "file://"+os.getcwd()+"/index.html"
return self.base_url
tracksel_type = 'Simple'

## TestCase override - use instead of constructor
def setUp( self ):

self.track_selector = getattr( track_selectors, '%sTrackSelector' % self.tracksel_type )( self )

self.browser = webdriver.Firefox()
self.browser.get(
self.baseURL()
+ ( "?data="+self.data_dir if self.data_dir else "" )
)
time.sleep(0.5)
time.sleep(0.5) # give selenium some time to get its head on straight

def baseURL( self ):
if not self.base_url:
self.base_url = os.environ['JBROWSE_URL'] if 'JBROWSE_URL' in os.environ else "file://"+os.getcwd()+"/index.html"
return self.base_url


## convenience methods for us

Expand Down Expand Up @@ -108,33 +114,14 @@ def trackpane_rubberband( self, start_pct, end_pct ):
self._rubberband( "//div[contains(@class,'dragWindow')]", start_pct, end_pct, Keys.SHIFT )

def is_track_on( self, tracktext ):
# find the track label
return not self.maybe_find_element_by_xpath( "//div[@class='tracklist-label'][contains(.,'%s')]" % tracktext )
# find the track label in the track pane
return not self.maybe_find_element_by_xpath( "//div[contains(@class,'dragWindow')]//div[@class='track-label'][contains(.,'%s')]" % tracktext )

def turn_on_track( self, tracktext ):

# find the track label
tracklabel = self.assert_element( "//div[@class='tracklist-label'][contains(.,'%s')]" % tracktext )
dragpane = self.assert_element( "//div[contains(@class, 'trackContainer')]" )

# drag the track label over
self.actionchains() \
.drag_and_drop( tracklabel, dragpane ) \
.perform()

self.assert_no_js_errors()
return self.track_selector.turn_on_track( tracktext )

def turn_off_track( self, tracktext ):

# drag the track back into the track list
track_handle = self.assert_element( "/html//div[contains(@class,'track')]//div[contains(@class,'track-label')][contains(.,'%s')]" % tracktext )
track_list = self.assert_element( "/html//div[@id='tracksAvail']" )

self.actionchains() \
.drag_and_drop( track_handle, track_list ) \
.perform()

self.assert_no_js_errors()
return self.track_selector.turn_off_track( tracktext )

def actionchains( self ):
return ActionChains( self.browser )
Expand Down
31 changes: 31 additions & 0 deletions tests/selenium_tests/jbrowse_selenium/track_selectors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
class SimpleTrackSelector (object):

def __init__(self, browser):
self.browser = browser

def turn_on_track( self, tracktext ):

# find the track label
tracklabel = self.browser.assert_element( "//div[@class='tracklist-label'][contains(.,'%s')]" % tracktext )
dragpane = self.browser.assert_element( "//div[contains(@class, 'trackContainer')]" )

# drag the track label over
self.browser.actionchains() \
.drag_and_drop( tracklabel, dragpane ) \
.perform()

self.browser.assert_no_js_errors()

def turn_off_track( self, tracktext ):

# drag the track back into the track list
track_handle = self.browser.assert_element( "/html//div[contains(@class,'track')]//div[contains(@class,'track-label')][contains(.,'%s')]" % tracktext )
track_list = self.browser.assert_element( "/html//div[@id='tracksAvail']" )

self.browser.actionchains() \
.drag_and_drop( track_handle, track_list ) \
.perform()

self.browser.assert_no_js_errors()


0 comments on commit 92df844

Please sign in to comment.