2026-03-31 14:23:31 -05:00
|
|
|
"""End-to-end tests for device management UI."""
|
2026-03-30 22:26:15 -05:00
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
from playwright.async_api import Page, expect
|
2026-03-30 22:26:15 -05:00
|
|
|
|
|
|
|
|
from wiregui.models.user import User as UserModel
|
2026-03-31 14:23:31 -05:00
|
|
|
from tests.e2e.conftest import login
|
2026-03-30 22:26:15 -05:00
|
|
|
|
|
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
async def test_add_device_via_ui(page: Page, test_user: UserModel):
|
2026-03-30 22:26:15 -05:00
|
|
|
"""Test the full flow: login → devices → add device → see it in table."""
|
2026-03-31 14:23:31 -05:00
|
|
|
await login(page)
|
|
|
|
|
await expect(page.get_by_text("My Devices")).to_be_visible(timeout=10_000)
|
2026-03-30 22:26:15 -05:00
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
await page.get_by_role("button", name="Add Device").click()
|
|
|
|
|
await expect(page.get_by_text("New Device")).to_be_visible(timeout=5_000)
|
2026-03-30 22:26:15 -05:00
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
await page.locator("input[aria-label='Device Name']").fill("Test Laptop")
|
|
|
|
|
await page.get_by_role("button", name="Create").click()
|
2026-03-30 22:26:15 -05:00
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
# Should see config dialog with the device name
|
|
|
|
|
await expect(page.get_by_text("Config for Test Laptop")).to_be_visible(timeout=10_000)
|
2026-03-30 22:26:15 -05:00
|
|
|
|
|
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
async def test_add_device_requires_name(page: Page, test_user: UserModel):
|
2026-03-30 22:26:15 -05:00
|
|
|
"""Test that creating a device without a name shows an error."""
|
2026-03-31 14:23:31 -05:00
|
|
|
await login(page)
|
|
|
|
|
await expect(page.get_by_text("My Devices")).to_be_visible(timeout=10_000)
|
2026-03-30 22:26:15 -05:00
|
|
|
|
2026-03-31 14:23:31 -05:00
|
|
|
await page.get_by_role("button", name="Add Device").click()
|
|
|
|
|
await expect(page.get_by_text("New Device")).to_be_visible(timeout=5_000)
|
|
|
|
|
await page.get_by_role("button", name="Create").click()
|
|
|
|
|
await expect(page.get_by_text("Device name is required")).to_be_visible(timeout=5_000)
|