From 8759819e4a74c3e6424877947f6f15b8e5f15ae8 Mon Sep 17 00:00:00 2001 From: Sebastian Silva Date: Tue, 18 Jun 2013 06:27:29 +0000 Subject: first UI tests (selenium) --- 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 @@ + + + + + + +comment_review + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
comment_review
open/resource/reviews?page=1
clickAndWait//div[4]/div/a
clickcss=.comments-button + .comments-button> img
storeEvalnew Date();date
waitForEditableid=textarea-comment
typeid=textarea-commentcomment ${date}
clickcss=.comment-button
waitForTextPresentcomment ${date}
verifyTextPresentcomment ${date}
+ + 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 @@ + + + + + + +create_project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
create_project
open/context?page=1
storeEvalnew Date();date
clickAndWait//div[@id='toolbar']/ul/li[7]/div/img
typeid=titleAutotest ${date}
typeid=summaryAutomatic Test #1 Pass
typeid=edit-contentCreate new project
clickAndWaitid=accept-button
verifyTextPresentAutotest ${date}
+ + 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 @@ + + + + + + +create_question + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
create_question
open/context/search/autotest?page=1
clickAndWaitcss=img.question-icon.has_tooltip
storeEvalnew Date();date
clickAndWaitcss=#mejorar-sistema > img
typeid=titleAutotest ${date}
typeid=edit-contentAutomatic Test #3 Create Question
clickAndWaitname=question
verifyTextPresentAutotest ${date}
+ + 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 @@ + + + + + + +create_review + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
create_review
open/context/search/autotest?page=1
clickAndWait//div[@id='resource-page-1']/div/a[4]/img
storeEvalnew Date();date
typeid=textarea-solutionTest #5 Create Review ${date}
clickAndWaitid=contribute-button
verifyTextPresentTest #5 Create Review ${date}
+ + 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 @@ + + + + + + +edit_project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
edit_project
open/context/search/autotest?page=1
clickAndWaitcss=img.grid-icon
storeEvalnew Date();date
clickAndWaitcss=span.edit-context > img
typeid=titleAutotest ${date}
typeid=summaryAutomatic Test #2 Pass
typeid=edit-contentEdit project OK
clickAndWaitid=accept-button
verifyTextPresentAutotest ${date}
+ + 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 @@ + + + + + + +upload_artifact + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
upload_artifact
open/context/search/autotest?page=1
clickAndWait//div[@id='resource-page-1']/div/a[6]/img
clickAndWaitcss=img.toolbar-icon.white-button
typename=artifact_file/etc/motd
typename=contenttest
clickAndWaitid=submit
+ + 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 @@ + + + + + + Test Suite + + + + + + + + + + +
Test Suite
create_project
edit_project
create_question
upload_artifact
create_review
comment_review
+ + 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 @@ + + + + + + +webui1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
webui1
open/context?page=1
storeEvalnew Date();date
clickAndWait//div[@id='toolbar']/ul/li[7]/div/img
typeid=titleAutotest ${date}
typeid=summaryAutomatic Test #1 Pass
typeid=edit-contentCreate new project
clickAndWaitaccept-button
verifyTextPresentAutotest ${date}
+ + -- cgit v0.9.1