Reminders App QA
Overview
Section titled “Overview”The Reminders app (/business/apps/reminders) lets users create scheduled reminders with 7 frequency options, assign recipients, link to target resources (documents, invoices, projects, or custom), and review execution logs. Reminders can be toggled active/inactive and deleted.
Supported frequencies: once, daily, weekly, monthly, quarterly, half_yearly, yearly
Supported target types: document, invoice, project, custom
Routes under test:
| Route | Purpose |
|---|---|
/business/apps/reminders | Reminder list with type filter and toggle |
/business/apps/reminders/new | Create a new reminder |
/business/apps/reminders/[id] | View reminder details, fire history, toggle, delete |
/business/apps/reminders/logs | Overview log table for all reminders |
Reminder List
Section titled “Reminder List”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| RM-001 | Reminder list renders | User has reminders | 1. Navigate to /business/apps/reminders | Each reminder shown as a card with title, frequency badge, target type badge (if set), next fire date, last fired date, and Active/Inactive toggle button | P0 |
| RM-002 | Count badge | User has reminders | 1. Navigate to /business/apps/reminders | Badge next to “Reminders” heading shows the correct count | P1 |
| RM-003 | Filter by target type — Documents | Reminders with target_type “document” exist | 1. Select “Documents” from the filter dropdown | Only document-type reminders displayed; URL updates with ?type=document | P0 |
| RM-004 | Filter by target type — Invoices | Invoice reminders exist | 1. Select “Invoices” | Only invoice reminders displayed | P1 |
| RM-005 | Filter by target type — Projects | Project reminders exist | 1. Select “Projects” | Only project reminders displayed | P1 |
| RM-006 | Filter by target type — Custom | Custom reminders exist | 1. Select “Custom” | Only custom reminders displayed | P1 |
| RM-007 | Filter by target type — All | A filter is active | 1. Select “All” | All reminders displayed; type param removed | P1 |
| RM-008 | Toggle active to inactive | Reminder is currently active | 1. Click the “Active” button on a reminder | Reminder toggles to inactive; toast “Reminder paused” shown; button changes to “Inactive” | P0 |
| RM-009 | Toggle inactive to active | Reminder is currently inactive | 1. Click the “Inactive” button on a reminder | Reminder activates; toast “Reminder activated” shown; button changes to “Active” | P0 |
| RM-010 | Empty reminder list | No reminders exist | 1. Navigate to /business/apps/reminders | ”No reminders found. Create one to get started.” message displayed | P1 |
| RM-011 | Reminder card navigates to detail | Reminders exist | 1. Click on a reminder card (not the toggle button) | Navigates to /business/apps/reminders/[id] | P0 |
| RM-012 | Logs button navigates | User is on reminder list | 1. Click “Logs” button | Navigates to /business/apps/reminders/logs | P1 |
| RM-013 | New Reminder button navigates | User is on reminder list | 1. Click “New Reminder” button | Navigates to /business/apps/reminders/new | P1 |
Create Reminder
Section titled “Create Reminder”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| RM-020 | Create a once-frequency reminder | User is authenticated | 1. Navigate to /business/apps/reminders/new 2. Enter title “Review contract” 3. Select frequency “Once” 4. Set a start date 5. Enter recipient IDs 6. Click “Create Reminder” | Redirected to /business/apps/reminders; new reminder appears in list | P0 |
| RM-021 | Create a daily reminder | User is authenticated | 1. Enter title 2. Select frequency “Daily” 3. Set start date 4. Add recipients 5. Create | Reminder created with frequency = daily | P0 |
| RM-022 | Create a weekly reminder with day of week | User is authenticated | 1. Select frequency “Weekly” 2. Verify “Day of Week” dropdown appears 3. Select “Wednesday” 4. Create | Reminder created with frequency = weekly and day_of_week = 3 | P0 |
| RM-023 | Create a monthly reminder with day of month | User is authenticated | 1. Select frequency “Monthly” 2. Verify “Day of Month” input appears 3. Enter “15” 4. Create | Reminder created with frequency = monthly and day_of_month = 15 | P0 |
| RM-024 | Create a quarterly reminder | User is authenticated | 1. Select frequency “Quarterly” 2. Create | Reminder created with frequency = quarterly | P1 |
| RM-025 | Create a half-yearly reminder | User is authenticated | 1. Select frequency “Half Yearly” 2. Create | Reminder created with frequency = half_yearly | P1 |
| RM-026 | Create a yearly reminder | User is authenticated | 1. Select frequency “Yearly” 2. Create | Reminder created with frequency = yearly | P1 |
| RM-027 | Set optional end date | User is on create form | 1. Set an end date in addition to start date 2. Create | Reminder created with ends_at set | P1 |
| RM-028 | Set optional message | User is on create form | 1. Enter a message in the message textarea 2. Create | Reminder created with message stored | P1 |
| RM-029 | Set target type and target ID | User is on create form | 1. Select target type “Document” 2. Verify Target ID field appears 3. Enter a UUID 4. Create | Reminder created with target_type = document and target_id set | P1 |
| RM-030 | Target ID hidden when no target type | User is on create form | 1. Leave target type as “None” | Target ID field is not rendered | P2 |
| RM-031 | Comma-separated recipients | User is on create form | 1. Enter “user-1, user-2, user-3” in the recipients field | Hidden inputs created for each recipient ID | P0 |
| RM-032 | Validation — empty title | User is on create form | 1. Leave title blank 2. Click “Create Reminder” | Validation error on title field | P0 |
| RM-033 | Validation — no frequency selected | User is on create form | 1. Enter title but skip frequency 2. Click “Create Reminder” | Validation error on frequency field | P0 |
| RM-034 | Validation — no start date | User is on create form | 1. Enter title and frequency but skip start date 2. Create | Validation error on starts_at field | P1 |
| RM-035 | Cancel returns to list | User is on create form | 1. Click “Cancel” | Navigates to /business/apps/reminders | P2 |
| RM-036 | Day of week hidden for non-weekly | User is on create form | 1. Select frequency “Daily" | "Day of Week” dropdown is not displayed | P2 |
| RM-037 | Day of month hidden for non-monthly | User is on create form | 1. Select frequency “Weekly" | "Day of Month” input is not displayed | P2 |
Reminder Detail
Section titled “Reminder Detail”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| RM-040 | Detail page loads | Reminder exists | 1. Navigate to /business/apps/reminders/[id] | Page shows title, Active/Inactive badge, message (if set), frequency badge, target info, start/end dates, next fire date, last fired date, day of week/month (if applicable), and recipients list | P0 |
| RM-041 | Toggle active from detail | Reminder is active | 1. Click “Pause” button | Reminder becomes inactive; toast “Reminder paused” shown | P0 |
| RM-042 | Toggle inactive from detail | Reminder is inactive | 1. Click “Activate” button | Reminder becomes active; toast “Reminder activated” shown | P0 |
| RM-043 | Delete reminder from detail | Reminder detail is open | 1. Click “Delete” button 2. Confirm in the browser dialog | Redirected to /business/apps/reminders; reminder no longer in list | P0 |
| RM-044 | Recipients display | Reminder has recipients | 1. Navigate to detail | Each recipient user ID displayed as a badge | P1 |
| RM-045 | No recipients message | Reminder has no recipients | 1. Navigate to detail | ”No recipients” text displayed | P1 |
| RM-046 | Fire history table — with logs | Reminder has been fired | 1. Navigate to detail | ”Fire History” section shows table with Fired At and Recipients Notified columns | P0 |
| RM-047 | Fire history — empty | Reminder has never fired | 1. Navigate to detail | ”No fire history yet.” message displayed | P1 |
| RM-048 | Non-owner cannot access | Reminder belongs to another user | 1. Navigate to detail as different user | 401 or 404 error returned | P1 |
| RM-049 | Day of week displays correctly | Reminder is weekly with day_of_week set | 1. Navigate to detail | ”Day of Week” shows the correct day name (e.g., “Wednesday”) | P2 |
| RM-050 | Day of month displays correctly | Reminder is monthly with day_of_month set | 1. Navigate to detail | ”Day of Month” shows the correct number | P2 |
Execution Logs
Section titled “Execution Logs”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| RM-060 | Logs page loads | User has reminders | 1. Navigate to /business/apps/reminders/logs | Table displays all reminders with columns: Reminder (title), Frequency (badge), Status (Active/Inactive badge), Last Fired, Next Fire, and View link | P0 |
| RM-061 | View link navigates to detail | Logs page is displayed | 1. Click “View” on a reminder row | Navigates to /business/apps/reminders/[id] | P0 |
| RM-062 | Empty logs page | No reminders exist | 1. Navigate to /business/apps/reminders/logs | ”No reminders found.” message displayed | P1 |
| RM-063 | Last fired shows “Never” for unfired | Reminder has never fired | 1. Navigate to logs page | Last Fired column shows “Never” for that reminder | P1 |
| RM-064 | Back navigation | User is on logs page | 1. Click back arrow | Navigates to /business/apps/reminders | P2 |