diff --git a/functional_tests/test_front_pages.py b/functional_tests/test_front_pages.py index cb8f987bc51cd617d1a905c8877ebfc6513be705..5aa9c73c3caefde5114339616122f8df8ef4c012 100644 --- a/functional_tests/test_front_pages.py +++ b/functional_tests/test_front_pages.py @@ -1,26 +1,28 @@ import os -import time +from typing import Sequence from django.test import LiveServerTestCase from selenium import webdriver -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.firefox.options import Options +from selenium.webdriver.remote.webelement import WebElement -from core.models import UserAccount from functional_tests.util import get_frontend_url, login, create_browser -from util.factories import make_test_data from util import factory_boys as fact LiveServerTestCase.port = int(os.environ.get('LIVE_SERVER_PORT', 0)) -class FrontPageTestsTutorReviewer: +class FrontPageTestsTutorReviewer(): + def __init__(self): + self.browser: webdriver.Firefox = None + def _login(self): login(self.browser, self.live_server_url, self.username, self.password) def test_statistics_are_shown(self): self._login() - statistics = self.browser.find_element_by_id('correction-statistics') + statistcs = self.browser.find_element_by_id('correction-statistics') + title = statistcs.find_element_by_class_name('title') + self.assertEqual('Statistics', title.text) class FrontPageTestsTutor(LiveServerTestCase, FrontPageTestsTutorReviewer): @@ -30,10 +32,24 @@ class FrontPageTestsTutor(LiveServerTestCase, FrontPageTestsTutorReviewer): self.username = 'tutor' self.password = 'p' fact.UserAccountFactory(username=self.username, password=self.password) + fact.SubmissionFactory() def tearDown(self): self.browser.quit() + def test_side_bar_contains_correct_items(self): + self._login() + drawer = self.browser.find_element_by_class_name('v-navigation-drawer') + links = extract_hrefs(drawer.find_elements_by_tag_name('a')) + self.assertTrue(all(link in links for link in ['#/home', '#/feedback'])) + task_title = drawer.find_element_by_class_name('v-toolbar__title') + self.assertEqual('Tasks', task_title.text) + footer = drawer.find_element_by_class_name('sidebar-footer') + feedback_link = footer.find_element_by_css_selector('a.feedback-link') + self.assertEqual('Give us Feedback!', feedback_link.text) + self.assertEqual('https://gitlab.gwdg.de/j.michal/grady/issues', + feedback_link.get_attribute('href')) + class FrontPageTestsReviewer(LiveServerTestCase, FrontPageTestsTutorReviewer): def setUp(self): @@ -45,3 +61,21 @@ class FrontPageTestsReviewer(LiveServerTestCase, FrontPageTestsTutorReviewer): def tearDown(self): self.browser.quit() + + def test_side_bar_contains_correct_items(self): + self._login() + drawer = self.browser.find_element_by_class_name('v-navigation-drawer') + links = extract_hrefs(drawer.find_elements_by_tag_name('a')) + self.assertTrue(all(link in links for link in + ['#/home', '#/feedback', '#/student-overview', '#/tutor-overview'])) + task_title = drawer.find_element_by_class_name('v-toolbar__title') + self.assertEqual('Tasks', task_title.text) + footer = drawer.find_element_by_class_name('sidebar-footer') + feedback_link = footer.find_element_by_css_selector('a.feedback-link') + self.assertEqual('Give us Feedback!', feedback_link.text) + self.assertEqual('https://gitlab.gwdg.de/j.michal/grady/issues', + feedback_link.get_attribute('href')) + + +def extract_hrefs(web_elements: Sequence[WebElement]): + return [el.get_attribute('href') for el in web_elements]