The Biolinks app (/business/apps/biolinks) lets users create link-in-bio pages with customizable blocks, themes, and preview capabilities. Each page has a title, slug, description, status, blocks (links, text, etc.), and a theme.
Routes under test:
| Route | Purpose |
|---|
/business/apps/biolinks | Dashboard with stats and recent pages |
/business/apps/biolinks/pages | Page list with search and status filters |
/business/apps/biolinks/pages/new | Create a new bio page |
/business/apps/biolinks/pages/[id] | Page editor (settings, blocks, theme, danger zone) |
/business/apps/biolinks/pages/[id]/preview | Full-page preview |
/business/apps/biolinks/settings | Biolinks settings (placeholder) |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-001 | Dashboard loads stats cards | User has at least one bio page | 1. Navigate to /business/apps/biolinks | Three stat cards display: Pages, Views, Clicks with correct counts | P0 |
| BL-002 | Recent pages list | User has bio pages | 1. Navigate to /business/apps/biolinks | Up to 5 most recent pages are shown with title, slug, status badge, and creation date | P0 |
| BL-003 | Empty dashboard state | User has no bio pages | 1. Navigate to /business/apps/biolinks | Stats section hidden or shows zeroes; “No pages yet” message displayed | P1 |
| BL-004 | New Page button navigates | User is on dashboard | 1. Click “New Page” button | Navigates to /business/apps/biolinks/pages/new | P1 |
| BL-005 | Quick nav cards work | User is on dashboard | 1. Click “Pages” quick-nav card 2. Click “Settings” quick-nav card | Each navigates to the correct sub-page | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-010 | Page list renders all pages | User has multiple bio pages | 1. Navigate to /business/apps/biolinks/pages | All pages displayed with title, slug, status badge, creation date, and delete icon | P0 |
| BL-011 | Search filter | User has pages with distinct titles | 1. Type a page title into the search field 2. Submit | URL updates with ?search=...; only matching pages are displayed | P0 |
| BL-012 | Status filter — Active | User has both active and inactive pages | 1. Click “Active” filter button | URL updates with ?status=active; only active pages displayed | P0 |
| BL-013 | Status filter — Inactive | User has inactive pages | 1. Click “Inactive” filter button | Only inactive pages displayed | P1 |
| BL-014 | Status filter — All | User has filtered results showing | 1. Click “All” filter button | All pages displayed; status param removed from URL | P1 |
| BL-015 | Delete page from list | User has at least one page | 1. Click the trash icon on a page row 2. Confirm deletion in the dialog | Page is removed from the list; success toast shows "PageTitle" deleted | P0 |
| BL-016 | Cancel delete dialog | Delete dialog is open | 1. Click “Cancel” button | Dialog closes; page is not deleted | P1 |
| BL-017 | Empty page list | No pages match current filters | 1. Apply a filter that matches nothing | ”No pages found.” message with “Create your first page” button displayed | P1 |
| BL-018 | Page count badge | Pages exist | 1. Navigate to /business/apps/biolinks/pages | Badge next to “Pages” heading shows the correct count | P2 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-020 | Create page with valid data | User is authenticated | 1. Navigate to /business/apps/biolinks/pages/new 2. Enter title “My Page” 3. Verify slug auto-generates as “my-page” 4. Optionally enter a description 5. Click “Create Page” | Redirected to /business/apps/biolinks/pages; new page appears in list | P0 |
| BL-021 | Auto-slug generation | User is on new page form | 1. Type “Hello World 123” in the Title field | Slug field auto-populates with “hello-world-123” | P0 |
| BL-022 | Validation — empty title | User is on new page form | 1. Leave title blank 2. Click “Create Page” | Validation error displayed on the title field; form does not submit | P0 |
| BL-023 | Validation — invalid slug | User is on new page form | 1. Enter title 2. Manually set slug to “INVALID SLUG!” 3. Click “Create Page” | Validation error displayed on the slug field | P1 |
| BL-024 | Cancel returns to list | User is on new page form | 1. Click “Cancel” button | Navigates back to /business/apps/biolinks/pages | P2 |
| BL-025 | Submit loading state | User is on new page form | 1. Fill in valid data 2. Click “Create Page” | Button shows spinner and “Creating…” text; button is disabled during submission | P2 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-030 | Page editor loads | Bio page exists | 1. Navigate to /business/apps/biolinks/pages/[id] | Page title, status badge, and all sections (Page Settings, Blocks, Theme, Danger Zone) are displayed | P0 |
| BL-031 | Update page settings | Page editor is open | 1. Change the title 2. Change the slug 3. Change status from Active to Inactive 4. Click “Save Changes” | Success toast “Page updated!” shown; page data refreshes with new values | P0 |
| BL-032 | Toggle preview | Page editor is open | 1. Click “Preview” button | Preview section appears inline; button text changes to “Hide Preview” | P1 |
| BL-033 | Hide preview | Preview is visible | 1. Click “Hide Preview” button | Preview section is hidden; button text reverts to “Preview” | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-040 | Add a new block | Page editor is open | 1. Use the BlockEditor to add a block of a given type | Success toast “Block added”; block count increments; new block appears in the list | P0 |
| BL-041 | Update a block | Block exists on the page | 1. Edit the block title or content 2. Save the block | Success toast “Block updated”; block reflects changes | P0 |
| BL-042 | Delete a block | Block exists on the page | 1. Delete the block via the BlockEditor | Success toast “Block deleted”; block is removed from the list | P0 |
| BL-043 | Reorder blocks | Page has 2+ blocks | 1. Drag or reorder blocks via the BlockEditor | Block order updates; no error toast displayed | P1 |
| BL-044 | Toggle block active state | Block exists on the page | 1. Toggle the is_active switch on a block | Block active state updates without error | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-050 | Update background color | Page editor is open | 1. Change the Background Color picker 2. Click “Save Theme” | Success toast “Theme updated!”; background value persists on reload | P0 |
| BL-051 | Update button style | Page editor is open | 1. Select a different button style (Rounded, Pill, Square, Outline, Shadow) 2. Click “Save Theme” | Button style changes persist | P1 |
| BL-052 | Update button colors | Page editor is open | 1. Change Button Color and Button Text Color 2. Click “Save Theme” | Colors persist on reload | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-060 | Delete page from editor | Page editor is open | 1. Click “Delete Page” in the danger zone 2. Confirm in the dialog | Redirected to /business/apps/biolinks/pages; page no longer in list | P0 |
| BL-061 | Cancel delete from editor | Delete dialog is open | 1. Click “Cancel” | Dialog closes; page is not deleted | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-070 | Full preview page loads | Bio page exists | 1. Navigate to /business/apps/biolinks/pages/[id]/preview | Preview renders with toolbar showing page title, “Back to Editor” button, and the PagePreview component | P1 |
| BL-071 | Back to editor link works | User is on preview page | 1. Click “Back to Editor” | Navigates to /business/apps/biolinks/pages/[id] | P2 |
| BL-072 | Non-owner cannot access | User does not own the page | 1. Navigate to /business/apps/biolinks/pages/[id]/preview as a different user | 403 Forbidden error is returned | P1 |
| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|
| BL-080 | Settings page loads | User is authenticated | 1. Navigate to /business/apps/biolinks/settings | Page renders placeholder message about upcoming settings for default themes, custom domains, and analytics | P2 |