Skip to content
Snippets Groups Projects
Commit 968caaac authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add selenium test for PDF generation

parent 827b235c
No related branches found
No related tags found
1 merge request!464Resolve "Support PDF generation via a headless Chromium running in the background using celery"
import os
from django.conf import settings
from django.contrib.auth.models import User
from django.test import override_settings
from django.test.selenium import SeleniumTestCase, SeleniumTestCaseBase
from django.urls import reverse
import pytest
from selenium.webdriver.support.wait import WebDriverWait
from aleksis.core.models import Person
pytestmark = pytest.mark.django_db
......@@ -14,7 +19,8 @@ SeleniumTestCaseBase.browsers = list(
)
SeleniumTestCaseBase.selenium_hub = os.environ.get("TEST_SELENIUM_HUB", "") or None
@pytest.mark.usefixtures("celery_worker")
@override_settings(CELERY_BROKER_URL="memory://localhost//")
class SeleniumTests(SeleniumTestCase):
serialized_rollback = True
......@@ -29,18 +35,11 @@ class SeleniumTests(SeleniumTestCase):
else:
return False
def test_index(self):
self.selenium.get(self.live_server_url + "/")
assert "AlekSIS" in self.selenium.title
self._screenshot("index.png")
def test_login_default_superuser(self):
username = "admin"
password = "admin"
def _login(self, username= "admin", password= "admin", with_screenshots=False):
# Navigate to configured login page
self.selenium.get(self.live_server_url + reverse(settings.LOGIN_URL))
self._screenshot("login_default_superuser_blank.png")
if with_screenshots:
self._screenshot("login_default_superuser_blank.png")
# Find login form input fields and enter defined credentials
self.selenium.find_element_by_xpath(
......@@ -49,11 +48,34 @@ class SeleniumTests(SeleniumTestCase):
self.selenium.find_element_by_xpath(
'//label[contains(text(), "Password")]/../input'
).send_keys(password)
self._screenshot("login_default_superuser_filled.png")
if with_screenshots:
self._screenshot("login_default_superuser_filled.png")
# Submit form by clicking django-two-factor-auth's Next button
self.selenium.find_element_by_xpath('//button[contains(text(), "Login")]').click()
self._screenshot("login_default_superuser_submitted.png")
if with_screenshots:
self._screenshot("login_default_superuser_submitted.png")
def _create_person(self, username = "admin"):
user = User.objects.get(username=username)
person = Person.objects.create(user=user, first_name="Jane", last_name="Doe")
return person
def test_index(self):
self.selenium.get(self.live_server_url + "/")
assert "AlekSIS" in self.selenium.title
self._screenshot("index.png")
def test_login_default_superuser(self):
self._login("admin", "admin", with_screenshots=True)
# Should redirect away from login page and not put up an alert about wrong credentials
assert "Please enter a correct username and password." not in self.selenium.page_source
def test_pdf_generation(self):
self._login()
self._create_person()
self.selenium.get(self.live_server_url + reverse("test_pdf"))
el = WebDriverWait(self.selenium, 10).until(lambda d: ".pdf" in self.selenium.current_url)
self._screenshot("pdf.png")
pytest_plugins = ("celery.contrib.pytest", )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment