78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
"""Frontend E2E tests — navigation (tabs, drawer)."""
|
|
|
|
import pytest
|
|
|
|
|
|
def _login(page):
|
|
"""Helper: login as admin."""
|
|
page.locator("#loginUsername").fill("admin")
|
|
page.locator("#loginPassword").fill("changeme")
|
|
page.locator("button:has-text('Sign In')").click()
|
|
page.wait_for_selector("#loginOverlay", state="hidden", timeout=5000)
|
|
|
|
|
|
@pytest.mark.frontend
|
|
def test_tab_navigation(page, live_server):
|
|
"""Clicking bottom tabs switches the active panel."""
|
|
_login(page)
|
|
|
|
# Initially the Add Asset tab is active (it's the default)
|
|
assert page.locator("#tabAddAsset.tab-panel.active").is_visible()
|
|
|
|
# Click "Assets" tab (📦 Assets)
|
|
page.locator(".tab-btn[data-tab='tabAssets']").click()
|
|
assert page.locator("#tabAssets.tab-panel.active").is_visible()
|
|
|
|
# Click "Dashboard" tab (📊 Dash)
|
|
page.locator(".tab-btn[data-tab='tabDashboard']").click()
|
|
assert page.locator("#tabDashboard.tab-panel.active").is_visible()
|
|
|
|
# Click back to Add Asset
|
|
page.locator(".tab-btn[data-tab='tabAddAsset']").click()
|
|
assert page.locator("#tabAddAsset.tab-panel.active").is_visible()
|
|
|
|
|
|
@pytest.mark.frontend
|
|
def test_drawer_open_close(page, live_server):
|
|
"""Hamburger opens drawer, close button closes it."""
|
|
_login(page)
|
|
|
|
# Open drawer
|
|
page.locator(".hamburger").click()
|
|
page.wait_for_selector("#drawer.open", timeout=3000)
|
|
assert page.locator("#drawer.open").is_visible()
|
|
|
|
# Close drawer via ✕ button
|
|
page.locator(".close-drawer").click()
|
|
# Drawer should lose .open class
|
|
page.wait_for_selector("#drawer:not(.open)", timeout=3000)
|
|
|
|
|
|
@pytest.mark.frontend
|
|
def test_drawer_navigation(page, live_server):
|
|
"""Drawer links switch tabs and close the drawer."""
|
|
_login(page)
|
|
|
|
# Open drawer
|
|
page.locator(".hamburger").click()
|
|
page.wait_for_selector("#drawer.open", timeout=3000)
|
|
|
|
# Click "Asset List" in drawer (📦 Asset List)
|
|
page.locator(".dn-item[data-tab='tabAssets']").click()
|
|
page.wait_for_selector("#tabAssets.active", timeout=3000)
|
|
assert page.locator("#tabAssets.tab-panel.active").is_visible()
|
|
# Drawer should close after navigation
|
|
assert not page.locator("#drawer.open").is_visible()
|
|
|
|
|
|
@pytest.mark.frontend
|
|
def test_drawer_user_info(page, live_server):
|
|
"""Drawer shows current user info."""
|
|
_login(page)
|
|
|
|
page.locator(".hamburger").click()
|
|
page.wait_for_selector("#drawer.open", timeout=3000)
|
|
|
|
assert page.locator("#drawerName").inner_text() == "admin"
|
|
assert "admin" in page.locator("#drawerRole").inner_text().lower()
|