4.6 KiB
End-To-End Smoke Standard
This checklist defines the repeatable smoke path for the core awards workflow.
It complements the build checks in docs/workflow.md and should be used after
changes to nominations, categories, candidates, voting, winners, permissions,
or public landing-page workflow.
Scope
Core workflow:
Nomination -> Admin preparation -> Candidate -> Voting -> Winner preparation -> Winner/archive
Public nomination is grouped by main category (Category.GroupName). Voting and
winners stay on concrete subcategory Category rows.
Automated Local Smoke
Run this against a local backend. If an admin session token is available, the script also checks admin endpoints.
scripts/smoke-local.sh
ADMIN_SESSION_TOKEN=<token> scripts/smoke-local.sh
Expected local defaults:
- Backend:
http://127.0.0.1:5084 - Frontend:
http://127.0.0.1:5173 - Database: PostgreSQL on
localhost:5433
The script checks:
/api/health/api/health/database/api/public/overview- current-season category structure
- legacy parent labels are not exposed by the public category endpoint
- optional admin season/team endpoints when
ADMIN_SESSION_TOKENis set
Manual Browser Smoke
Use the local frontend with backend running as a pair.
Public Nomination
- Open the public landing page.
- Start nomination.
- Confirm only main categories are selectable.
- Submit 1, 2, and 3 links in one main category.
- Confirm duplicate links in the same main category are blocked.
- Confirm empty categories can be skipped.
- Confirm Twitch links get tracker status when possible.
- Confirm non-Twitch links are accepted and need manual tier choice.
Admin Review And Candidate Preparation
- Open
/admin/nominations. - Confirm nominations are grouped by main category and streamer identity.
- Confirm the tracker tier suggestion is visible when available.
- Promote a Twitch nomination using the suggested tier.
- Promote a non-Twitch nomination with manual tier override.
- Confirm candidate
NominationTallyreflects grouped nominations. - Confirm candidate clip metadata requires a link when winner clip is mandatory.
Voting
- Open the public voting modal.
- Confirm categories show as main category with subcategories.
- Switch category and subcategory without the modal jumping or resizing.
- Vote in at least one subcategory.
- Save vote again and confirm this is treated as vote editing.
- Confirm missing-vote warning appears before completion when applicable.
Admin Voting Workspace
- Open
/admin/voting. - Confirm the page appears only for roles with
voting,analytics, orwinnerseffective access. - Confirm the tree groups by main category, with subcategories as children.
- Confirm leaderboard order defaults to most votes first.
- Confirm vote count, candidate count, open reviews, clip status, readiness, ties or close races, and soft "few nominators" warnings are visible.
- Use quick links to candidates, nominations/review, and winners.
Winners And Archive
- Open
/admin/winners. - Confirm it focuses on final winner assignment and landing-page release readiness.
- Set or clear a winner in a subcategory.
- Confirm
max. 1x winneridentity guard is visible/enforced. - Confirm missing winner clip blocks or warns according to workflow settings.
- Confirm publishing is blocked while winners, reviews, or blocking workflow rules are incomplete.
- Publish the year and confirm current winners appear on the landing page while the previous landing-page winner year moves into the archive list.
- Confirm current landing-page winners are not listed as an archive year at the same time.
- Open the public archive modal and confirm winner clip/video embeds render.
Permissions
- Open
/admin/team. - Confirm permission catalog includes current admin pages: Dashboard, Jahre, Nominierungen, Kategorien, Kandidaten, Clips, Landingpage, Risiko, Audit-Log, Analytics, Voting, Gewinner, Einstellungen, Team.
- Confirm roles with
analyticsorwinnersstill get effectivevotingaccess for navigation and route guards. - Confirm write actions still fail for read-only organization-team access.
Responsive Checks
Check public voting, admin voting, admin winners, and admin categories at:
360px390px768px- desktop
In the browser console:
document.documentElement.scrollWidth <= window.innerWidth
The expression must be true unless a deliberate horizontal data table is in a
contained scroll area.
Cleanup
Temporary local nominations, candidates, votes, clips, and winners may be created for smoke validation. Remove test artifacts before finishing if they would pollute future manual checks.