Spaces:
Running
Running
File size: 1,566 Bytes
df692ec a2a8f31 df692ec | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | """Local E2E of the internal /admin console (dev-token auth)."""
from __future__ import annotations
import pytest
pytestmark = pytest.mark.local
def test_admin_overview_and_invite_card(page, app_url):
page.goto(f"{app_url}/admin?token=admintoken", wait_until="networkidle")
page.wait_for_selector("#tenants tr", timeout=15000) # per-tenant health table
assert page.is_visible("#ioTenant") and page.is_visible("#ioEmail") # invite-a-tenant-owner
def test_admin_provision_a_client(page, app_url):
page.goto(f"{app_url}/admin?token=admintoken", wait_until="networkidle")
page.wait_for_selector("#clients tr", timeout=15000)
page.fill("#ctId", "acme-e2e")
page.fill("#ctCompany", "Acme E2E Lawn")
page.fill("#ctEmail", "owner@acme-e2e.com")
page.fill("#ctOrigin", "https://acme-e2e.com")
page.click("#ctGo")
# Provisioned: the one-time publishable key is shown and the client appears in the list.
page.wait_for_function("document.getElementById('ctMsg').textContent.includes('Provisioned')", timeout=10000)
assert page.locator("#ctMsg code").count() == 1 # the minted key, shown once
page.wait_for_function("document.getElementById('clients').textContent.includes('acme-e2e')", timeout=8000)
def test_admin_gate_without_token(page, app_url):
page.goto(f"{app_url}/admin", wait_until="networkidle")
page.wait_for_selector("#tokenInput", timeout=8000) # no token → sign-in gate
assert page.is_hidden("#tenants") or page.locator("#tenants tr").count() == 0
|