ucberkeley/moocchat

View on GitHub
webdriver/multi_user_tests.py

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/python
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest

class TestMultiUserAutomation(unittest.TestCase):
    def setUp(self):
        self.group_size = 3
        self.driver = webdriver.Chrome()
        driver = self.driver
        driver.get("http://localhost:3000")
        for handle in driver.window_handles:
            self.original_window_handle = handle
        for i in range(self.group_size - 1):
            driver.execute_script("window.open('http://localhost:3000', '_blank');")

    def tearDown(self):
        driver = self.driver
        for handle in driver.window_handles:
            if handle != self.original_window_handle:
                driver.switch_to_window(handle)
                driver.execute_script("window.close();")
        driver.switch_to_window(self.original_window_handle)
        driver.close()

    def test_title_basic(self):
        driver = self.driver
        assert len(driver.window_handles) == self.group_size
        for handle in driver.window_handles:
            driver.switch_to_window(handle)
            assert "MOOCChat" in driver.title

    def test_group_reaches_first_task_page(self):
        driver = self.driver
        for i in range(len(driver.window_handles)):
            handle = driver.window_handles[i]
            driver.switch_to_window(handle)

            # Fill in initial form and submit to reach waiting room
            learner_name = driver.find_element_by_name("learner_name")
            learner_name.send_keys("Learner #" + str(i))
            driver.find_element_by_xpath("//select[@id='condition_id']/option[.='Chat Sequence 1']").click()
            driver.find_element_by_xpath("//select[@id='activity_schema_id']/option[.='Quiz Review']").click()
            driver.find_element_by_xpath("//input[@type='submit']").click()
            assert len(driver.find_elements_by_class_name('timer')) > 0

        # Wait for group formation timer to expire and reach first page of task
        for handle in driver.window_handles:
            driver.switch_to_window(handle)
            WebDriverWait(driver, 60).until(lambda driver: driver.title == "Page 0")

if __name__ == '__main__':
    unittest.main()