*** Settings *** Library Collections Resource ${CURDIR}/../resources/common.resource Resource ${CURDIR}/../resources/auth.resource *** Test Cases *** Login Page Loads Without Error [Documentation] Login must run before Login As Admin — use New Page to avoid session cookie. ... Vite SPA always returns 200; focus on DOM assertions after client-side routing. New Browser chromium headless=${TRUE} New Page Go To ${FRONTEND_URL}/login Wait For Elements State css=form visible timeout=15s Get Text css=body not contains Something went wrong Close Browser Setup Page Loads Without Error [Documentation] Setup wizard accessible before auth; may redirect to /login if already done. New Browser chromium headless=${TRUE} New Page Go To ${FRONTEND_URL}/setup # After setup is complete, this redirects to /login. Accept either page. ${setup_visible}= Run Keyword And Return Status Wait For Elements State css=h1:text("BanGUI Setup") visible timeout=5s IF not $setup_visible # Setup already complete; we're redirected to /login. Verify login page instead. Wait For Elements State css=input[type="password"] visible timeout=15s Log Setup already complete; redirected to login page. END Get Text css=body not contains Something went wrong Close Browser Dashboard Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/ Wait For Elements State css=[data-testid="dashboard"] visible timeout=15s Get Text css=body not contains Something went wrong Close Browser Map Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/map Wait For Elements State css=[data-testid="map-page"] visible timeout=15s Get Text css=body not contains Something went wrong Close Browser Jails Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/jails Wait For Elements State css=[data-testid="jails-page"] visible timeout=15s Get Text css=body not contains Something went wrong Close Browser Jail Detail Page Loads Without Error [Documentation] Guard: check jail exists via GET /api/jails first; use first jail name. Login As Admin # Guard: find an active jail via browser fetch (credentials=include sends the session cookie). # The /jails endpoint returns a paginated response: { items: [...], total: N } ${jail_response}= Evaluate JavaScript ${None} ... async () => { ... const res = await fetch('/api/v1/jails', { credentials: 'include' }); ... if (!res.ok) return { items: [], total: 0 }; ... return res.json().catch(() => ({ items: [], total: 0 })); ... } ${jail_list}= Set Variable ${jail_response}[items] ${count}= Get Length ${jail_list} IF ${count} > 0 ${first_jail}= Get From List ${jail_list} 0 ${jail_name}= Set Variable ${first_jail}[name] Log Using jail: ${jail_name} ELSE ${jail_name}= Set Variable manual-Jail Log No jails found; using fallback name: ${jail_name} END Go To ${FRONTEND_URL}/jails/${jail_name} Wait For Load State domcontentloaded FOR ${i} IN RANGE 1 16 ${found}= Run Keyword And Return Status Wait For Elements State css=[data-testid="jail-detail-page"] visible timeout=2s IF ${found} BREAK END Sleep 1s END Wait For Elements State css=[data-testid="jail-detail-page"] visible timeout=30s Get Text css=body not contains Something went wrong Close Browser Config Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/config Wait For Load State domcontentloaded Sleep 2s FOR ${i} IN RANGE 1 16 ${found}= Run Keyword And Return Status Wait For Elements State css=[data-testid="config-page"] visible timeout=2s IF ${found} BREAK END Sleep 1s END IF not ${found} Log Config page did not load within 30 seconds END Get Text css=body not contains Something went wrong Close Browser History Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/history Wait For Load State domcontentloaded FOR ${i} IN RANGE 1 16 ${found}= Run Keyword And Return Status Wait For Elements State css=[data-testid="history-page"] visible timeout=2s IF ${found} BREAK END Sleep 1s END Wait For Elements State css=[data-testid="history-page"] visible timeout=15s Get Text css=body not contains Something went wrong Close Browser Blocklists Page Loads Without Error Login As Admin Go To ${FRONTEND_URL}/blocklists Wait For Elements State css=[data-testid="blocklists-page"] visible timeout=15s Get Text css=body not contains Something went wrong Close Browser