AI Documents - QA Test Plan
Overview
Section titled “Overview”The AI Documents app allows users to generate documents using AI models (OpenAI, Claude, Gemini), manage reusable prompt templates, and view document summaries. Routes are under /business/apps/aidocs/.
Supported AI Models
Section titled “Supported AI Models”gpt-4o(default),gpt-4o-mini,gpt-4-turbo,gpt-3.5-turboclaude-sonnet-4-20250514,claude-haiku-4-5-20251001gemini-2.5-pro,gemini-2.5-flash
Template Categories
Section titled “Template Categories”contract, proposal, report, letter, email, policy, other
1. Dashboard / Landing Page
Section titled “1. Dashboard / Landing Page”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| AD-001 | Dashboard loads with nav cards | User is logged in | Navigate to /business/apps/aidocs | Page shows Generate, Templates, and Summaries nav cards with correct counts | P0 |
| AD-002 | Recent documents list renders | At least one document exists | Navigate to dashboard | Documents list displays title, truncated prompt (80 chars), model badge, and formatted date | P0 |
| AD-003 | Empty state shown when no documents | No documents exist for user | Navigate to dashboard | ”No documents generated yet” message and CTA button to Generate page | P1 |
| AD-004 | Template count badge is accurate | 3 templates exist | Navigate to dashboard | Templates card shows “3 templates” | P1 |
| AD-005 | Document links navigate correctly | Documents exist | Click on a document row | Navigates to /business/apps/aidocs/{id} | P0 |
| AD-006 | Unauthenticated user sees empty state | User is not logged in | Navigate to dashboard | Returns empty documents and templates arrays; no server error | P1 |
2. Generate Document
Section titled “2. Generate Document”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| AD-010 | Generate page loads with form | User is logged in | Navigate to /business/apps/aidocs/generate | Form renders with Title, Template selector (if templates exist), Prompt, and AI Model fields | P0 |
| AD-011 | Generate document with valid input | User is logged in | 1. Enter title “Q1 Report” 2. Enter prompt “Write a summary…” 3. Select gpt-4o model 4. Click “Generate Document” | Document is saved and user is redirected to /business/apps/aidocs/{id} | P0 |
| AD-012 | Validation fails on empty title | User is logged in | Leave title empty, fill prompt, submit | Title field shows validation error; form is not submitted | P0 |
| AD-013 | Validation fails on empty prompt | User is logged in | Fill title, leave prompt empty, submit | Prompt field shows validation error; form is not submitted | P0 |
| AD-014 | Default model is used when none selected | User is logged in | Fill title and prompt without changing model, submit | Document is saved with model gpt-4o | P1 |
| AD-015 | All AI models appear in dropdown | User is logged in | Click the AI Model dropdown | All 8 models are listed: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo, claude-sonnet-4-20250514, claude-haiku-4-5-20251001, gemini-2.5-pro, gemini-2.5-flash | P0 |
| AD-016 | Select OpenAI model and generate | User is logged in | Select gpt-4-turbo, fill required fields, submit | Document is created with model badge showing gpt-4-turbo | P0 |
| AD-017 | Select Claude model and generate | User is logged in | Select claude-sonnet-4-20250514, fill required fields, submit | Document is created with model badge showing claude-sonnet-4-20250514 | P0 |
| AD-018 | Select Gemini model and generate | User is logged in | Select gemini-2.5-pro, fill required fields, submit | Document is created with model badge showing gemini-2.5-pro | P0 |
| AD-019 | Template selector pre-fills prompt | At least one template exists | 1. Open Generate page 2. Select a template from dropdown | Prompt field is filled with the template’s prompt_template; model is updated if the template has one | P0 |
| AD-020 | Template selector shows “None” option | Templates exist | Click Template dropdown | First option is “None (custom prompt)“ | P1 |
| AD-021 | Cancel button returns to dashboard | User is on Generate page | Click “Cancel” | Navigates back to /business/apps/aidocs | P2 |
| AD-022 | Submit button shows loading state | User is logged in | Fill form and click submit | Button text changes to “Generating…” with spinner; button is disabled | P1 |
| AD-023 | Server error displays toast | Server returns 500 | Submit valid form (simulated server error) | Toast notification displays error message | P1 |
3. Document Detail / Preview
Section titled “3. Document Detail / Preview”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| AD-030 | Document detail page loads | Document exists | Navigate to /business/apps/aidocs/{id} | Page displays title, model badge, metadata (model, tokens used, created date), prompt section, and generated response | P0 |
| AD-031 | Delete document | Document exists | Click “Delete” button | Document is deleted; user is redirected to /business/apps/aidocs | P0 |
| AD-032 | Delete failure shows toast | Server error on delete | Click “Delete” (simulated failure) | Toast shows error message; user stays on page | P1 |
| AD-033 | 404 for non-existent document | No document with given ID | Navigate to /business/apps/aidocs/invalid-id | 404 error page is shown | P1 |
| AD-034 | Generated content renders in pre block | Document has response content | View document detail | Response text is displayed in a <pre> block with whitespace-pre-wrap | P2 |
4. Templates CRUD
Section titled “4. Templates CRUD”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| AD-040 | Templates list page loads | User is logged in | Navigate to /business/apps/aidocs/templates | Page shows template count badge and list of templates with name, category badge, and model | P0 |
| AD-041 | Create template via dialog | User is logged in | 1. Click “New Template” 2. Fill name, prompt template, select category and model 3. Click “Create Template” | Template is created; dialog closes; success toast appears; list refreshes | P0 |
| AD-042 | Create template validation - name required | User is logged in | Open dialog, leave name empty, submit | Validation error on name field | P0 |
| AD-043 | Create template validation - prompt required | User is logged in | Open dialog, fill name, leave prompt empty, submit | Validation error on prompt_template field | P0 |
| AD-044 | All template categories available | User is logged in | Open create dialog, click Category dropdown | All 7 categories listed: contract, proposal, report, letter, email, policy, other | P1 |
| AD-045 | All AI models available in template | User is logged in | Open create dialog, click Model dropdown | All 8 AI models are listed | P1 |
| AD-046 | Delete template | At least one template exists | Click trash icon on a template row | Template is deleted; success toast appears; list refreshes | P0 |
| AD-047 | Empty state when no templates | No templates exist | Navigate to templates page | ”No templates created yet” message with CTA button | P1 |
| AD-048 | Cancel closes create dialog | Dialog is open | Click “Cancel” in the dialog | Dialog closes; no template is created | P2 |
5. Summaries
Section titled “5. Summaries”| ID | Description | Preconditions | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| AD-050 | Summaries page loads | User is logged in | Navigate to /business/apps/aidocs/summaries | Page displays summary count badge and list of summaries | P0 |
| AD-051 | Summary row displays correct data | Summaries exist | View summaries list | Each row shows truncated document ID, model badge, date, summary text (truncated at 200 chars), and tokens used | P1 |
| AD-052 | Empty state when no summaries | No summaries exist | Navigate to summaries page | ”No summaries generated yet” message with explanation text | P1 |
| AD-053 | Tokens used shown when > 0 | Summary has tokens_used > 0 | View summary row | ”X tokens used” text is displayed | P2 |
| AD-054 | Tokens used hidden when 0 | Summary has tokens_used = 0 | View summary row | No tokens text is displayed | P2 |