Skip to content

Commit

Permalink
Merge pull request #251 from AutomatedTester/runtests
Browse files Browse the repository at this point in the history
Add the ability to test discovery of webdriver tests and only start a br...
  • Loading branch information
AutomatedTester committed Jul 16, 2013
2 parents 75cadad + 9957d6e commit fe77ee1
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 30 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
node_modules
scratch
*.py[co]
*.sw[po]
6 changes: 4 additions & 2 deletions webdriver/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ whether they meet the recognized standard.
4. `source bin/activate` to activate the local Python installation
5. `pip install selenium` or `easy_install selenium`
6. `cd _WEBDRIVER_TEST_ROOT_`
6. `python test_example.py`
7. `python runtests.py`

To be run a specific test file you can just run `python test_file.py`

## Updating configuration

Expand All @@ -30,4 +32,4 @@ be picked up by WebDriverBaseTest when tests are run.
files that will be used for testing. HTML files are not to be
reused between tests.
3. Test name should explain the intention of the test e.g. `def
test_navigate_and_return_title(self):`.
test_navigate_and_return_title(self):`
26 changes: 12 additions & 14 deletions webdriver/base_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,19 @@
from webserver import Httpd
from selenium import webdriver


class WebDriverBaseTest(unittest.TestCase):

def __init__(self, methodName):
unittest.TestCase.__init__(self, methodName)
self.driver = None
self.webserver = None

def setUp(self):

@classmethod
def setUpClass(cls):
config = ConfigParser.ConfigParser()
config.read('webdriver.cfg')
self.driver_class = getattr(webdriver, config.get("Default", 'browser'))
self.driver = self.driver_class()
self.webserver = Httpd()
self.webserver.start()
cls.driver_class = getattr(webdriver, config.get("Default", 'browser'))
cls.driver = cls.driver_class()
cls.webserver = Httpd()
cls.webserver.start()

def tearDown(self):
self.driver.quit()
self.webserver.stop()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
cls.webserver.stop()
Empty file.
15 changes: 7 additions & 8 deletions webdriver/element_location/element_location_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,36 @@
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
import base_test


class ElementLocationTest(base_test.WebDriverBaseTest):
def setUp(self):
super(self).setUp()
self.driver.get(self.webserver.where_is("element_location/elements.html"))

def test_find_element_by_id(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_id("id")
self.assertEquals("id", e.text)


def test_find_element_by_name(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_name("name")
self.assertEquals("name", e.text)


def test_find_element_by_css_selector(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_css_selector("#id")
self.assertEquals("id", e.text)


def test_find_element_by_link_text(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_link_text("link text")
self.assertEquals("link text", e.text)


def test_find_element_by_partial_link_text(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_partial_link_text("link tex")
self.assertEquals("link text", e.text)


def test_find_element_by_xpath(self):
self.driver.get(self.webserver.where_is("element_location/elements.html"))
e = self.driver.find_element_by_xpath("//*[@id='id']")
self.assertEquals("id", e.text)

Expand Down
Empty file.
17 changes: 11 additions & 6 deletions webdriver/element_state/visibility_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
import base_test


class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest):
def test_0x0_pixel_element_is_not_visible(self):
self.driver.get(self.webserver.where_is("element_state/0x0-pixels.html"))
Expand Down Expand Up @@ -73,7 +74,7 @@ def test_element_hidden_by_overflow_x_is_not_visible(self):
self.driver.get(self.webserver.where_is(page))
right = self.driver.find_element_by_id("right")
bottom_right = self.driver.find_element_by_id("bottom-right")

self.assertFalse(right.is_displayed())
self.assertFalse(bottom_right.is_displayed())

Expand All @@ -91,7 +92,7 @@ def test_element_hidden_by_overflow_y_is_not_visible(self):

self.assertFalse(bottom.is_displayed())
self.assertFalse(bottom_right.is_displayed())

def test_parent_node_visible_when_all_children_are_absolutely_position_and_overflow_is_hidden(self):
pass

Expand Down Expand Up @@ -124,7 +125,7 @@ def test_element_hidden_by_other_element(self):

self.assertTrue(overlay.is_displayed())
self.assertFalse(hidden.is_displayed())

def test_element_partially_hidden_by_other_element(self):
self.driver.get(self.webserver.where_is("element_state/element-partially-hidden-by-other-element.html"))
partial = self.driver.find_element_by_id("partial")
Expand Down Expand Up @@ -175,7 +176,8 @@ def test_element_with_same_color_as_parent_background(self):
self.driver.get(self.webserver.where_is("element_state/element-with-same-color-as-parent-background.html"))
hidden = self.driver.find_element_by_id("hidden")
self.assertFalse(hidden.is_displayed())



class DisplayTest(base_test.WebDriverBaseTest):
def test_display_block(self):
self.driver.get(self.webserver.where_is("element_state/display-block.html"))
Expand Down Expand Up @@ -219,7 +221,8 @@ def test_display_none_hidden_dynamically(self):
self.driver.get(self.webserver.where_is("element_state/display-none-dynamic.html"))
hidden = self.driver.find_element_by_id("hidden")
self.assertFalse(hidden.is_displayed())



class VisibilityTest(base_test.WebDriverBaseTest):
def test_element_state_hidden(self):
self.driver.get(self.webserver.where_is("element_state/visibility-hidden.html"))
Expand All @@ -230,7 +233,7 @@ def test_element_state_visible(self):
self.driver.get(self.webserver.where_is("element_state/visibility-visible.html"))
el = self.driver.find_element_by_tag_name("p")
self.assertTrue(el.is_displayed())

def test_visibility_hidden_hides_child_node(self):
self.driver.get(self.webserver.where_is("element_state/visibility-child.html"))
parent = self.driver.find_element_by_id("parent")
Expand Down Expand Up @@ -266,6 +269,7 @@ def test_visibility_hidden_on_parent_takes_presedence_over_display_block(self):
def test_visibility_hidden_set_dynamically(self):
pass


class VisibilityInteractionTest(base_test.WebDriverBaseTest):
def test_input_hidden_is_unclickable(self):
self.driver.get(self.webserver.where_is("element_state/input-type-hidden-unclickable.html"))
Expand All @@ -288,6 +292,7 @@ def test_typing_in_hidden_input_is_impossible(self):
with self.assertRaises(ElementNotVisibleException):
textfield.send_keys("Koha is a popular Indian cheese")


class OpacityTest(base_test.WebDriverBaseTest):
pass

Expand Down
Empty file.
14 changes: 14 additions & 0 deletions webdriver/runtests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import unittest

from unittest import TestLoader, TextTestRunner, TestSuite

if __name__ == "__main__":

loader = TestLoader()
suite = TestSuite((
loader.discover(".", pattern="*.py")
))

runner = TextTestRunner(verbosity=2)
runner.run(suite)
unittest.main()

0 comments on commit fe77ee1

Please sign in to comment.