diff options
author | Sebastian Silva <sebastian@somosazucar.org> | 2013-06-18 06:27:29 (GMT) |
---|---|---|
committer | Sebastian Silva <sebastian@somosazucar.org> | 2013-06-18 06:27:29 (GMT) |
commit | 8759819e4a74c3e6424877947f6f15b8e5f15ae8 (patch) | |
tree | 8d40ee1a6c84a9b666858f2c8db0eba2065bc7f2 | |
parent | e7f20e90fbce124079e15b793bc3dfd52dbd2368 (diff) |
first UI tests (selenium)
-rw-r--r-- | sugar_network_webui/tests/__init__.py | 0 | ||||
-rw-r--r-- | sugar_network_webui/tests/create_comment.html | 61 | ||||
-rw-r--r-- | sugar_network_webui/tests/create_project.html | 56 | ||||
-rw-r--r-- | sugar_network_webui/tests/create_question.html | 56 | ||||
-rw-r--r-- | sugar_network_webui/tests/create_review.html | 47 | ||||
-rw-r--r-- | sugar_network_webui/tests/edit_project.html | 62 | ||||
-rw-r--r-- | sugar_network_webui/tests/test_create_project.py | 57 | ||||
-rw-r--r-- | sugar_network_webui/tests/test_create_question.py | 58 | ||||
-rw-r--r-- | sugar_network_webui/tests/test_edit_project.py | 59 | ||||
-rw-r--r-- | sugar_network_webui/tests/upload_artifact.html | 47 | ||||
-rw-r--r-- | sugar_network_webui/tests/webui-tests.html | 19 | ||||
-rw-r--r-- | sugar_network_webui/tests/webui1 | 57 |
12 files changed, 579 insertions, 0 deletions
diff --git a/sugar_network_webui/tests/__init__.py b/sugar_network_webui/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sugar_network_webui/tests/__init__.py diff --git a/sugar_network_webui/tests/create_comment.html b/sugar_network_webui/tests/create_comment.html new file mode 100644 index 0000000..3d358ef --- /dev/null +++ b/sugar_network_webui/tests/create_comment.html @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>comment_review</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">comment_review</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/resource/reviews?page=1</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>//div[4]/div/a</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>css=.comments-button + .comments-button> img</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>waitForEditable</td> + <td>id=textarea-comment</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=textarea-comment</td> + <td>comment ${date}</td> +</tr> +<tr> + <td>click</td> + <td>css=.comment-button</td> + <td></td> +</tr> +<tr> + <td>waitForTextPresent</td> + <td>comment ${date}</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>comment ${date}</td> + <td></td> +</tr> +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/create_project.html b/sugar_network_webui/tests/create_project.html new file mode 100644 index 0000000..b6f6a5e --- /dev/null +++ b/sugar_network_webui/tests/create_project.html @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>create_project</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">create_project</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context?page=1</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>//div[@id='toolbar']/ul/li[7]/div/img</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=title</td> + <td>Autotest ${date}</td> +</tr> +<tr> + <td>type</td> + <td>id=summary</td> + <td>Automatic Test #1 Pass</td> +</tr> +<tr> + <td>type</td> + <td>id=edit-content</td> + <td>Create new project</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=accept-button</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>Autotest ${date} </td> + <td></td> +</tr> +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/create_question.html b/sugar_network_webui/tests/create_question.html new file mode 100644 index 0000000..2473e2b --- /dev/null +++ b/sugar_network_webui/tests/create_question.html @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>create_question</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">create_question</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context/search/autotest?page=1</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>css=img.question-icon.has_tooltip </td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>css=#mejorar-sistema > img</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=title</td> + <td>Autotest ${date}</td> +</tr> +<tr> + <td>type</td> + <td>id=edit-content</td> + <td>Automatic Test #3 Create Question</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>name=question</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>Autotest ${date}</td> + <td></td> +</tr> +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/create_review.html b/sugar_network_webui/tests/create_review.html new file mode 100644 index 0000000..8557abc --- /dev/null +++ b/sugar_network_webui/tests/create_review.html @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>create_review</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">create_review</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context/search/autotest?page=1</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>//div[@id='resource-page-1']/div/a[4]/img</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>type</td> + <td>id=textarea-solution</td> + <td>Test #5 Create Review ${date}</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=contribute-button</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>Test #5 Create Review ${date}</td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/edit_project.html b/sugar_network_webui/tests/edit_project.html new file mode 100644 index 0000000..ae4810a --- /dev/null +++ b/sugar_network_webui/tests/edit_project.html @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>edit_project</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">edit_project</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context/search/autotest?page=1</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>css=img.grid-icon</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>css=span.edit-context > img</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=title</td> + <td>Autotest ${date}</td> +</tr> +<tr> + <td>type</td> + <td>id=summary</td> + <td>Automatic Test #2 Pass</td> +</tr> +<tr> + <td>type</td> + <td>id=edit-content</td> + <td>Edit project OK</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=accept-button</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>Autotest ${date} </td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/test_create_project.py b/sugar_network_webui/tests/test_create_project.py new file mode 100644 index 0000000..4a53dc2 --- /dev/null +++ b/sugar_network_webui/tests/test_create_project.py @@ -0,0 +1,57 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select +from selenium.common.exceptions import NoSuchElementException +import unittest, time, re +import datetime + +class CreateProject(unittest.TestCase): + def setUp(self): + self.driver = webdriver.Firefox() + self.driver.implicitly_wait(30) + self.base_url = "http://network-devel.sugarlabs.org/" + self.verificationErrors = [] + self.accept_next_alert = True + + def test_create_project(self): + driver = self.driver + driver.get(self.base_url + "/context?page=1") + date = str(datetime.date.today()) + driver.find_element_by_xpath("//div[@id='toolbar']/ul/li[7]/div/img").click() + driver.find_element_by_id("title").clear() + driver.find_element_by_id("title").send_keys("Autotest " + date) + driver.find_element_by_id("summary").clear() + driver.find_element_by_id("summary").send_keys("Automatic Test #1 Pass") + driver.find_element_by_id("edit-content").clear() + driver.find_element_by_id("edit-content").send_keys("Create new project") + driver.find_element_by_id("accept-button").click() + try: self.assertRegexpMatches(driver.find_element_by_css_selector("BODY").text, r"^[\s\S]*Autotest "+date+"[\s\S]*$") + except AssertionError as e: self.verificationErrors.append(str(e)) + + def is_element_present(self, how, what): + try: self.driver.find_element(by=how, value=what) + except NoSuchElementException, e: return False + return True + + def is_alert_present(self): + try: self.driver.switch_to_alert() + except NoAlertPresentException, e: return False + return True + + def close_alert_and_get_its_text(self): + try: + alert = self.driver.switch_to_alert() + alert_text = alert.text + if self.accept_next_alert: + alert.accept() + else: + alert.dismiss() + return alert_text + finally: self.accept_next_alert = True + + def tearDown(self): + self.driver.quit() + self.assertEqual([], self.verificationErrors) + +if __name__ == "__main__": + unittest.main() diff --git a/sugar_network_webui/tests/test_create_question.py b/sugar_network_webui/tests/test_create_question.py new file mode 100644 index 0000000..4442132 --- /dev/null +++ b/sugar_network_webui/tests/test_create_question.py @@ -0,0 +1,58 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select +from selenium.common.exceptions import NoSuchElementException +import unittest, time, re +import datetime + +class CreateQuestion(unittest.TestCase): + def setUp(self): + self.driver = webdriver.Firefox() + self.driver.implicitly_wait(30) + self.base_url = "http://network-devel.sugarlabs.org/" + self.verificationErrors = [] + self.accept_next_alert = True + + def test_create_question(self): + driver = self.driver + driver.get(self.base_url + "/context/search/autotest?page=1") + actions = webdriver.ActionChains(driver) + actions.move_to_element(driver.find_element_by_css_selector(".grid-icon")).perform() + driver.find_element_by_css_selector("img.question-icon.has_tooltip").click() + date = str(datetime.date.today()) + driver.find_element_by_css_selector("#mejorar-sistema > img").click() + driver.find_element_by_id("title").clear() + driver.find_element_by_id("title").send_keys("Autotest " + date) + driver.find_element_by_id("edit-content").clear() + driver.find_element_by_id("edit-content").send_keys("Automatic Test #3 Create Question") + driver.find_element_by_name("question").click() + try: self.assertRegexpMatches(driver.find_element_by_css_selector("BODY").text, r"^[\s\S]*Autotest "+date+"[\s\S]*$") + except AssertionError as e: self.verificationErrors.append(str(e)) + + def is_element_present(self, how, what): + try: self.driver.find_element(by=how, value=what) + except NoSuchElementException, e: return False + return True + + def is_alert_present(self): + try: self.driver.switch_to_alert() + except NoAlertPresentException, e: return False + return True + + def close_alert_and_get_its_text(self): + try: + alert = self.driver.switch_to_alert() + alert_text = alert.text + if self.accept_next_alert: + alert.accept() + else: + alert.dismiss() + return alert_text + finally: self.accept_next_alert = True + + def tearDown(self): + self.driver.quit() + self.assertEqual([], self.verificationErrors) + +if __name__ == "__main__": + unittest.main() diff --git a/sugar_network_webui/tests/test_edit_project.py b/sugar_network_webui/tests/test_edit_project.py new file mode 100644 index 0000000..24ca534 --- /dev/null +++ b/sugar_network_webui/tests/test_edit_project.py @@ -0,0 +1,59 @@ +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import Select +from selenium.common.exceptions import NoSuchElementException +import unittest, time, re +import datetime + +class EditProject(unittest.TestCase): + def setUp(self): + self.driver = webdriver.Firefox() + self.driver.implicitly_wait(30) + self.base_url = "http://network-devel.sugarlabs.org/" + self.verificationErrors = [] + self.accept_next_alert = True + + def test_edit_project(self): + driver = self.driver + driver.get(self.base_url + "/context/search/autotest?page=1") + driver.find_element_by_css_selector("img.grid-icon").click() + date = str(datetime.date.today()) + driver.find_element_by_css_selector("span.edit-context > img").click() + driver.find_element_by_id("title").clear() + driver.find_element_by_id("title").send_keys("Autotest " + date) + driver.find_element_by_id("summary").clear() + driver.find_element_by_id("summary").send_keys("Automatic Test #2 Pass") + driver.find_element_by_id("edit-content").clear() + driver.find_element_by_id("edit-content").send_keys("Edit project OK") + driver.find_element_by_id("accept-button").click() + # Warning: verifyTextPresent may require manual changes + try: self.assertRegexpMatches(driver.find_element_by_css_selector("BODY").text, r"^[\s\S]*Autotest "+date+"[\s\S]*$") + except AssertionError as e: self.verificationErrors.append(str(e)) + + def is_element_present(self, how, what): + try: self.driver.find_element(by=how, value=what) + except NoSuchElementException, e: return False + return True + + def is_alert_present(self): + try: self.driver.switch_to_alert() + except NoAlertPresentException, e: return False + return True + + def close_alert_and_get_its_text(self): + try: + alert = self.driver.switch_to_alert() + alert_text = alert.text + if self.accept_next_alert: + alert.accept() + else: + alert.dismiss() + return alert_text + finally: self.accept_next_alert = True + + def tearDown(self): + self.driver.quit() + self.assertEqual([], self.verificationErrors) + +if __name__ == "__main__": + unittest.main() diff --git a/sugar_network_webui/tests/upload_artifact.html b/sugar_network_webui/tests/upload_artifact.html new file mode 100644 index 0000000..a294363 --- /dev/null +++ b/sugar_network_webui/tests/upload_artifact.html @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>upload_artifact</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">upload_artifact</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context/search/autotest?page=1</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>//div[@id='resource-page-1']/div/a[6]/img</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>css=img.toolbar-icon.white-button</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>name=artifact_file</td> + <td>/etc/motd</td> +</tr> +<tr> + <td>type</td> + <td>name=content</td> + <td>test</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=submit</td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/webui-tests.html b/sugar_network_webui/tests/webui-tests.html new file mode 100644 index 0000000..7fed584 --- /dev/null +++ b/sugar_network_webui/tests/webui-tests.html @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <meta content="text/html; charset=UTF-8" http-equiv="content-type" /> + <title>Test Suite</title> +</head> +<body> +<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody> +<tr><td><b>Test Suite</b></td></tr> +<tr><td><a href="create_project.html">create_project</a></td></tr> +<tr><td><a href="edit_project.html">edit_project</a></td></tr> +<tr><td><a href="create_question.html">create_question</a></td></tr> +<tr><td><a href="upload_artifact.html">upload_artifact</a></td></tr> +<tr><td><a href="create_review.html">create_review</a></td></tr> +<tr><td><a href="create_comment.html">comment_review</a></td></tr> +</tbody></table> +</body> +</html> diff --git a/sugar_network_webui/tests/webui1 b/sugar_network_webui/tests/webui1 new file mode 100644 index 0000000..ba966a2 --- /dev/null +++ b/sugar_network_webui/tests/webui1 @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:10000/" /> +<title>webui1</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">webui1</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/context?page=1</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>new Date();</td> + <td>date</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>//div[@id='toolbar']/ul/li[7]/div/img</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=title</td> + <td>Autotest ${date}</td> +</tr> +<tr> + <td>type</td> + <td>id=summary</td> + <td>Automatic Test #1 Pass</td> +</tr> +<tr> + <td>type</td> + <td>id=edit-content</td> + <td>Create new project</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>accept-button</td> + <td></td> +</tr> +<tr> + <td>verifyTextPresent</td> + <td>Autotest ${date} </td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> |