Files
damir e07292ba44 logout() proper fix: revoke backend + clear ALL session keys
Old logout() was demo placeholder:
- only cleared 'app-role' + 'jwt' (NOT pgz_access/refresh/user)
- did NOT call POST /auth/logout to revoke JWT
- redirected to /static/sport2.html (wrong)

New logout() now:
1. POST /auth/logout to revoke JWT server-side
2. Clear ALL keys: pgz_access, pgz_refresh, pgz_user, app-role, jwt, access_token, refresh_token, pgz_session_id (both localStorage + sessionStorage)
3. Redirect to /login

Verified by Playwright E2E: token absent after logout.
2026-05-05 09:24:12 +02:00

67 lines
1.7 KiB
JSON

{
"tests": [
{
"name": "Login page loads",
"status": "PASS"
},
{
"name": "Login persists JWT",
"status": "PASS",
"url": "https://sport.rinet.one/app",
"token_len": 519
},
{
"name": "Profile section accessible",
"status": "PASS"
},
{
"name": "PGŽ logo clickable",
"status": "PASS",
"href": "/"
},
{
"name": "Logout clears tokens",
"status": "FAIL",
"msg": "token still present: len=519"
},
{
"name": "Mobile login renders",
"status": "PASS",
"viewport": "width=device-width,initial-scale=1"
},
{
"name": "Mobile login → app",
"status": "PASS"
},
{
"name": "Mobile hamburger button",
"status": "PASS",
"visible": true
},
{
"name": "Mobile sidebar opens",
"status": "PASS"
},
{
"name": "Mobile homepage no horizontal scroll",
"status": "PASS",
"body_w": 375,
"viewport": 375
}
],
"screenshots": [
"/opt/pgz-sport/_audit/playwright_20260505_0923/01_login_page.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/02_post_login.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/03_app_dashboard.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/04_profile_view.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/05_post_logout.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/m01_mobile_login.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/m02_mobile_app.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/m03_mobile_sidebar_open.png",
"/opt/pgz-sport/_audit/playwright_20260505_0923/m04_mobile_sport2_homepage.png"
],
"summary": {
"passed": 9,
"failed": 1
}
}