Explorar el Código

[testing] Add selenium integration test draft

cgars hace 7 años
padre
commit
0236e60c43
Se han modificado 1 ficheros con 155 adiciones y 0 borrados
  1. 155 0
      selenium/ginIntTest.py

+ 155 - 0
selenium/ginIntTest.py

@@ -0,0 +1,155 @@
+# -*- coding: utf-8 -*-
+from selenium import webdriver
+from selenium.webdriver.common.by import By
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.support.ui import Select
+from selenium.common.exceptions import NoSuchElementException
+from selenium.common.exceptions import NoAlertPresentException
+import unittest, time, re
+import os
+
+class GINLanding(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        ginurl = os.environ["GINURL"]
+        cls.driver = webdriver.Chrome("bin/chromedriver")
+        cls.driver.implicitly_wait(3)
+        cls.base_url = ginurl
+        cls.verificationErrors = []
+        cls.accept_next_alert = True
+    
+    @classmethod
+    def tearDownClass(cls):
+        #cls.driver.quit()
+        return
+    
+    def setUp(self):
+        return
+    def test00_install(self):
+        driver = self.driver
+        driver.get(self.base_url + "/install")
+        driver.find_element_by_css_selector("div.ui.selection.database.type.dropdown").click()
+        # some wait is needed
+        time.sleep(1)
+        driver.find_element_by_xpath("//div[4]").click()
+        driver.find_element_by_id("db_path").clear()
+        driver.find_element_by_id("db_path").send_keys("/data/gogs.db")
+        driver.find_element_by_xpath("//div[@id='sqlite_settings']/div").click()
+        driver.find_element_by_id("app_name").click()
+        driver.find_element_by_id("app_name").clear()
+        driver.find_element_by_id("app_name").send_keys("GINTEST")
+        driver.find_element_by_id("app_url").click()
+        driver.find_element_by_id("app_url").clear()
+        driver.find_element_by_id("app_url").send_keys(self.base_url + "")
+        driver.find_element_by_css_selector("button.ui.primary.button").click()
+        self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
+
+    def test01_g_i_n_landing(self):
+        driver = self.driver
+        driver.get(self.base_url + "")
+        driver.find_element_by_link_text("Home").click()
+        self.assertEqual("Modern Research Data Management for Neuroscience", driver.find_element_by_css_selector("h2").text)
+        self.assertEqual("...inspired by github, flavoured for science", driver.find_element_by_css_selector("div.ginsubtitle").text)
+        self.assertEqual("FAQ", driver.find_element_by_link_text("FAQ").text)
+        self.assertEqual("Register", driver.find_element_by_link_text("Register").text)
+        self.assertEqual("Sign In", driver.find_element_by_link_text("Sign In").text)
+        self.assertEqual("GINTEST", driver.title)
+    
+    def test02_register(self):
+        driver = self.driver
+        driver.get(self.base_url + "")
+        driver.find_element_by_link_text("Register").click()
+        self.assertEqual("Sign Up", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
+        self.assertEqual("Please note!\nFor Registration we require only username, password and email. Please use an institutional email to register. Otherwise you will only be able to use a subset of gins functionality and your maximum repository size will be dramatically reduced", driver.find_element_by_css_selector("div.ui.piled.yellow.segment").text)
+        self.assertEqual("", driver.find_element_by_css_selector("button.ui.green.button").get_attribute("value"))
+        driver.find_element_by_id("user_name").click()
+        driver.find_element_by_id("user_name").clear()
+        driver.find_element_by_id("user_name").send_keys("testuser")
+        driver.find_element_by_id("email").clear()
+        driver.find_element_by_id("email").send_keys("test@test.test")
+        driver.find_element_by_id("password").clear()
+        driver.find_element_by_id("password").send_keys("test")
+        driver.find_element_by_id("retype").clear()
+        driver.find_element_by_id("retype").send_keys("test")
+        driver.find_element_by_id("full_name").clear()
+        driver.find_element_by_id("full_name").send_keys("test")
+        driver.find_element_by_id("affiliation").clear()
+        driver.find_element_by_id("affiliation").send_keys("tester")
+        driver.find_element_by_css_selector("button.ui.green.button").click()
+        self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
+
+
+    def test03_login(self):
+        driver = self.driver
+        self.login()
+        self.assertEqual("test - Dashboard - GINTEST", driver.title)
+
+    def test04_createrepo(self):
+        driver = self.driver
+        driver.get(self.base_url + "")
+        #driver.find_element_by_css_selector("div.full.height").click()
+        driver.find_element_by_css_selector("i.octicon.octicon-triangle-down").click()
+        #driver.find_element_by_css_selector("div.ui.dropdown.head.link.jump.item.poping.up.visible").click()
+        self.assertEqual("New Repository", driver.find_element_by_link_text("New Repository").text)
+        driver.find_element_by_link_text("New Repository").click()
+        self.assertEqual("New Repository - GINTEST", driver.title)
+        driver.find_element_by_id("repo_name").click()
+        driver.find_element_by_id("repo_name").clear()
+        driver.find_element_by_id("repo_name").send_keys("testrepo1")
+        driver.find_element_by_id("description").clear()
+        driver.find_element_by_id("description").send_keys("this is the first test repository")
+        driver.find_element_by_css_selector("button.ui.green.button").click()
+        self.assertEqual("testuser/testrepo1: this is the first test repository - GINTEST", driver.title)
+        self.assertEqual("LICENSE", driver.find_element_by_link_text("LICENSE").text)
+        self.assertEqual("README.md", driver.find_element_by_link_text("README.md").text)
+
+    def is_element_present(self, how, what):
+        try: self.driver.find_element(by=how, value=what)
+        except NoSuchElementException as e: return False
+        return True
+    
+    def is_alert_present(self):
+        try: self.driver.switch_to_alert()
+        except NoAlertPresentException as 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):
+        return
+
+
+    def logout(self):
+        """
+        Helper to log out of current session
+        """
+        driver = self.driver
+        driver.get(self.base_url + "/user/logout")
+    
+    def login(self):
+        """
+        Helper to login Testuser
+        """
+        driver = self.driver
+        driver.get(self.base_url + "/user/login")
+        self.assertEqual("Sign In", driver.find_element_by_css_selector("h3.ui.top.attached.header").text)
+        self.assertEqual("Sign In", driver.find_element_by_css_selector("button.ui.green.button").text)
+        driver.find_element_by_id("user_name").click()
+        driver.find_element_by_id("user_name").clear()
+        driver.find_element_by_id("user_name").send_keys("testuser")
+        driver.find_element_by_id("password").clear()
+        driver.find_element_by_id("password").send_keys("test")
+        driver.find_element_by_css_selector("button.ui.green.button").click()
+
+if __name__ == "__main__":
+    unittest.main()