Adding e2e testing
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import re
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import expect
|
||||
|
||||
from helpers import app_url, login_as_admin, skip_without_admin_credentials
|
||||
|
||||
|
||||
def open_admin_dropdown(page):
|
||||
page.locator("#adminDropdownBtn").click()
|
||||
admin_menu = page.locator("#adminDropdownMenu")
|
||||
expect(admin_menu).to_have_class(re.compile("active"))
|
||||
return admin_menu
|
||||
|
||||
|
||||
def open_admin_page(page):
|
||||
skip_without_admin_credentials(pytest)
|
||||
page.goto(app_url("/admin"))
|
||||
expect(page).to_have_title(re.compile("PPR Admin Interface"))
|
||||
expect(page.get_by_role("heading", name=re.compile("Swansea Tower"))).to_be_visible()
|
||||
login_as_admin(page)
|
||||
|
||||
|
||||
def test_actions_and_admin_dropdowns_toggle_exclusively(page):
|
||||
open_admin_page(page)
|
||||
|
||||
actions_menu = page.locator("#actionsDropdownMenu")
|
||||
admin_menu = page.locator("#adminDropdownMenu")
|
||||
|
||||
expect(actions_menu).not_to_have_class(re.compile("active"))
|
||||
expect(admin_menu).not_to_have_class(re.compile("active"))
|
||||
|
||||
page.locator("#actionsDropdownBtn").click()
|
||||
expect(actions_menu).to_have_class(re.compile("active"))
|
||||
expect(admin_menu).not_to_have_class(re.compile("active"))
|
||||
expect(actions_menu.get_by_role("link", name=re.compile("New PPR"))).to_be_visible()
|
||||
expect(actions_menu.get_by_role("link", name=re.compile("Book Out"))).to_be_visible()
|
||||
expect(actions_menu.get_by_role("link", name=re.compile("Book In"))).to_be_visible()
|
||||
expect(actions_menu.get_by_role("link", name=re.compile("Overflight"))).to_be_visible()
|
||||
|
||||
admin_menu = open_admin_dropdown(page)
|
||||
expect(actions_menu).not_to_have_class(re.compile("active"))
|
||||
expect(admin_menu.get_by_role("link", name=re.compile("Admin View"))).to_be_visible()
|
||||
expect(admin_menu.get_by_role("link", name=re.compile("ATC View"))).to_be_visible()
|
||||
expect(admin_menu.get_by_role("link", name=re.compile("Reports"))).to_be_visible()
|
||||
expect(admin_menu.get_by_role("link", name=re.compile("Drone Requests"))).to_be_visible()
|
||||
expect(admin_menu.get_by_role("link", name=re.compile("Journal Log"))).to_be_visible()
|
||||
|
||||
page.locator(".container").click()
|
||||
expect(admin_menu).not_to_have_class(re.compile("active"))
|
||||
|
||||
|
||||
def test_admin_menu_links_navigate_to_expected_pages(page):
|
||||
open_admin_page(page)
|
||||
|
||||
menu_expectations = [
|
||||
("Admin View", re.compile(r"/admin$"), re.compile("PPR Admin Interface"), "title"),
|
||||
("ATC View", re.compile(r"/atc$"), re.compile("ATC Management Interface"), "title"),
|
||||
("Reports", re.compile(r"/reports$"), re.compile("PPR Reports"), "heading"),
|
||||
("Drone Requests", re.compile(r"/drone-requests$"), re.compile("Drone Flight Requests"), "heading"),
|
||||
("Journal Log", re.compile(r"/journal$"), re.compile("Journal Log"), "heading"),
|
||||
]
|
||||
|
||||
for label, url_pattern, expected_text, assertion_type in menu_expectations:
|
||||
page.goto(app_url("/admin"))
|
||||
login_as_admin(page)
|
||||
admin_menu = open_admin_dropdown(page)
|
||||
admin_menu.get_by_role("link", name=re.compile(label)).click()
|
||||
expect(page).to_have_url(url_pattern)
|
||||
if assertion_type == "title":
|
||||
expect(page).to_have_title(expected_text)
|
||||
else:
|
||||
expect(page.get_by_role("heading", name=expected_text)).to_be_visible()
|
||||
Reference in New Issue
Block a user