- Rework Login As Admin: use sessionStorage flag + relative fetch login + polling loop
- Add data-testid to JailDetailPage error render path
- Add Collections library import for Get From List keyword
- Fix /jails API response extraction (returns {items, total} not plain list)
- Change Close Context to Close Browser for proper browser cleanup
- Add domcontentloaded + Sleep + polling to Config test to avoid premature timeout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
127 lines
5.1 KiB
Plaintext
127 lines
5.1 KiB
Plaintext
*** 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 |