Full-stack web application for tracking income, expenses, budgets and financial reports. Manual and functional testing performed across all core user flows, REST API endpoints, and authentication mechanisms.
| ID | Module | Test case | Precondition | Expected result | Priority | Status |
|---|---|---|---|---|---|---|
| TC-01 | Register | Register with valid data | User not registered | Account created, redirected to login | High | PASS |
| TC-02 | Register | Register with existing email | Email already in DB | Error: "Email already registered" | High | PASS |
| TC-03 | Register | Register with empty fields | Form loaded | Validation errors shown per field | Medium | PASS |
| TC-04 | Login | Login with valid credentials | User registered | JWT generated, redirect to dashboard | High | PASS |
| TC-05 | Login | Login with wrong password | User registered | Error message shown, no redirect | High | PASS |
| TC-06 | Auth | Access protected route without token | User not logged in | Redirect to login (401) | High | FAIL |
| TC-07 | Movements | Register income with valid data | User authenticated | Movement saved, balance updated | High | PASS |
| TC-08 | Movements | Register expense with valid data | User authenticated | Movement saved, balance updated | High | PASS |
| TC-09 | Movements | Register movement with missing fields | User authenticated | Validation error shown, no DB insert | Medium | FAIL |
| TC-10 | Movements | Edit an existing movement | Movement exists | Updated data saved, balance recalculated | High | PASS |
| TC-11 | Movements | Delete a movement | Movement exists | Movement removed, balance updated | High | PASS |
| TC-12 | Balance | View balance with movements registered | At least 1 movement | Correct totals for income, expenses, balance | High | PASS |
| TC-13 | Balance | View balance with no movements | No movements | Informative empty state message shown | Medium | FAIL |
| TC-14 | Charts | View charts with date range filter | Movements in range | Chart renders data for selected period | Medium | PASS |
| TC-15 | Export | Export movements as PDF | Movements exist | PDF downloaded with correct data | Medium | PASS |
| TC-16 | Export | Export with no data in selected range | No movements in range | Informative message, no file generated | Low | FAIL |
| TC-17 | Budget | Set monthly budget for a category | User authenticated | Budget saved and visible in dashboard | Medium | PASS |
| TC-18 | Budget | Trigger budget exceeded alert | Budget set, expenses exceed limit | Alert shown with category and amount | High | PASS |
| TC-19 | Profile | Edit username | User authenticated | New name saved and displayed | Low | PASS |
| TC-20 | Session | Logout clears session and token | User logged in | Token cleared, redirect to login | High | PASS |
Authentication / Route protection
TC-06
/dashboard in the browserUser is redirected to login with a 401 response
Dashboard renders fully without any authentication
Movements / Form validation
TC-09
Validation error on amount field, form does not submit
Form submits with empty amount, inserting an invalid record in the DB
Balance / Empty state
TC-13
"No movements registered yet" message guides the user
Page renders with blank charts and zeroed values, no guidance provided
Export / Edge case
TC-16
"No data available for the selected range" message shown
An empty PDF is generated and downloaded with no content