60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
"""
|
|
License Dialog Tests
|
|
- test_license_dialog_opens_from_about: Clicking View License in About opens the license modal
|
|
- test_license_dialog_contains_agpl_text: The modal displays the GNU AGPL v3 heading
|
|
- test_license_dialog_closes: The license modal can be closed independently
|
|
- test_about_remains_open_after_license_close: Closing the license dialog keeps About open
|
|
"""
|
|
from playwright.sync_api import Page, expect
|
|
|
|
|
|
def _wait_for_db(page: Page, app_url: str):
|
|
"""Navigate and wait for the database to be ready."""
|
|
page.goto(app_url)
|
|
page.wait_for_function(
|
|
"document.documentElement.getAttribute('data-db-ready') === 'true'",
|
|
timeout=15000,
|
|
)
|
|
|
|
|
|
def _open_license(page: Page, app_url: str):
|
|
"""Navigate to Settings, open About, then open the license dialog."""
|
|
_wait_for_db(page, app_url)
|
|
page.click('a[href="#/settings"]')
|
|
page.wait_for_selector('[data-testid="settings-language"]')
|
|
page.click('[data-testid="settings-about"]')
|
|
page.wait_for_selector('[data-testid="modal-card"]')
|
|
page.click('[data-testid="about-license-btn"]')
|
|
page.wait_for_selector('[data-testid="license-dialog-content"]')
|
|
|
|
|
|
def test_license_dialog_opens_from_about(page: Page, app_url: str):
|
|
"""Clicking View License in the About dialog opens the license modal."""
|
|
_open_license(page, app_url)
|
|
expect(page.locator('[data-testid="license-dialog-content"]')).to_be_visible()
|
|
|
|
|
|
def test_license_dialog_contains_agpl_text(page: Page, app_url: str):
|
|
"""The license modal displays the GNU Affero General Public License heading."""
|
|
_open_license(page, app_url)
|
|
expect(page.locator('[data-testid="license-dialog-content"]')).to_contain_text(
|
|
"GNU AFFERO GENERAL PUBLIC LICENSE"
|
|
)
|
|
|
|
|
|
def test_license_dialog_closes(page: Page, app_url: str):
|
|
"""The license modal can be closed with its own close button."""
|
|
_open_license(page, app_url)
|
|
modals = page.locator('[data-testid="modal-close"]')
|
|
modals.last.click()
|
|
expect(page.locator('[data-testid="license-dialog-content"]')).not_to_be_visible()
|
|
|
|
|
|
def test_about_remains_open_after_license_close(page: Page, app_url: str):
|
|
"""Closing the license dialog leaves the About dialog still open."""
|
|
_open_license(page, app_url)
|
|
modals = page.locator('[data-testid="modal-close"]')
|
|
modals.last.click()
|
|
expect(page.locator('[data-testid="license-dialog-content"]')).not_to_be_visible()
|
|
expect(page.locator('[data-testid="about-app-version"]')).to_be_visible()
|