Skip to main content

3-Day Manual Testing Framework

Environment: the active QA deployment URL (see /operations/deployment-workflow) Duration: 3 days (Wed, Thurs, Fri) Tester: ___________________ Date: ___________________

Testing Instructions

How to Use These Scripts

  1. Execute tests in order - Start with Day 1, then Day 2, then Day 3
  2. Record results - Mark each test as PASS/FAIL/BLOCKED
  3. Document bugs - Use the Bug Report Template at the end
  4. Take screenshots - Capture any errors or unexpected behavior
  5. Ask questions - Flag any unclear requirements immediately

Test Result Codes

  • PASS - Test completed successfully, actual matches expected
  • FAIL - Test failed, bug found
  • ⚠️ BLOCKED - Cannot complete due to dependency/environment issue
  • ⏭️ SKIP - Intentionally skipped (note reason)

DAY 1: Core Functionality (Critical Path)

Focus: Authentication, form creation, publishing, submission Time Estimate: 6-8 hours

TS-001: User Authentication Flow

Objective: Verify users can log in and access the system Priority: Critical Prerequisites: Valid WorkOS account credentials

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to the active QA deployment URLLanding page loads, shows login button
2Click “Login” or “Sign In” buttonRedirected to WorkOS login page
3Enter valid email and passwordCredentials accepted
4Complete authenticationRedirected to Terra dashboard at /
5Verify session persistsUser remains logged in on page refresh
6Verify user role displayedUser role badge visible in header/nav
7Open new tab with staging URLSession carries over, no re-login required
8Click logoutUser logged out, redirected to login page
9Try accessing /forms while logged outRedirected to /login with returnTo parameter
10Log back inRedirected to originally requested URL
Test Data:
  • Email: [Your test account email]
  • Password: [Your test account password]
Notes: Record any issues with authentication flow, redirects, or session handling

TS-002: Create and Publish a Form

Objective: Verify form creation and publishing workflow Priority: Critical Prerequisites: Authenticated as admin user

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to dashboard /Dashboard loads with “Create Program” button
2Click “Create Program” buttonRedirected to form builder or creation dialog
3Enter form title: “QA Test Form 1”Title saved
4Add description: “Testing form creation flow”Description saved
5Add a text field labeled “First Name”Field appears in builder
6Mark field as requiredRequired indicator shows
7Add a number field labeled “Age”Field appears in builder
8Add a choice field “Favorite Color” with options: Red, Blue, GreenField with options appears
9Click save/auto-saveForm saved as draft
10Navigate to /formsNew form appears in list with “Draft” status
11Open form settingsSettings page loads
12Set form slug: “qa-test-1”Slug saved
13Click “Publish” buttonPublishing confirmation dialog appears
14Confirm publishForm status changes to “Published”
15Verify form slugForm accessible at /f/qa-test-1
Test Data:
  • Form title: “QA Test Form 1”
  • Form slug: “qa-test-1”
  • Fields: First Name (text, required), Age (number), Favorite Color (choice)
Notes: Record any issues with form builder, saving, or publishing

TS-003: Submit a Public Form (Anonymous)

Objective: Verify anonymous users can submit public forms Priority: Critical Prerequisites: TS-002 completed (published form exists)

Test Steps

StepActionExpected ResultActual ResultStatus
1Open incognito/private browser windowClean session started
2Navigate to /f/qa-test-1Form loads without login requirement
3Verify form title displays”QA Test Form 1” shows at top
4Verify all fields renderFirst Name, Age, Favorite Color visible
5Leave First Name empty, click SubmitValidation error: “First Name is required”
6Fill First Name: “Test User”Value entered
7Fill Age: “25”Value entered
8Select Favorite Color: “Blue”Option selected
9Click SubmitForm submits, loading indicator shows
10Verify success message”Thank you” or success confirmation displays
11Verify cannot submit againForm shows “submitted” state or redirects
Test Data:
  • First Name: “Test User”
  • Age: 25
  • Favorite Color: Blue
Notes: Record submission ID if shown, note any validation or submission errors

TS-004: View Submissions in Admin Dashboard

Objective: Verify admins can view form submissions Priority: Critical Prerequisites: TS-003 completed (submission exists)

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as adminDashboard loads
2Navigate to /formsForms list displays
3Find “QA Test Form 1”Form shows in list
4Verify submission count shows “1”Count displays correctly
5Click on form to view detailsForm detail page loads
6Navigate to Submissions tab/pageSubmissions list loads
7Verify submission appears in listOne submission visible with timestamp
8Click on submission to view detailsSubmission detail page opens
9Verify all submitted data displaysFirst Name: “Test User”, Age: 25, Color: Blue
10Verify submission metadataStatus, date/time, reference ID visible
Notes: Record submission reference ID, note any data discrepancies

TS-005: Form Status Management

Objective: Verify form status changes work correctly Priority: Critical Prerequisites: TS-002 completed

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form settings for “QA Test Form 1”Settings page loads
2Locate Status dropdown/toggleCurrent status shows “Published”
3Change status to “Closed”Status updates to Closed
4Save changesSettings saved successfully
5Open incognito window, visit /f/qa-test-1Form shows “This form is closed” message
6Verify cannot submitSubmit button disabled or hidden
7Return to admin, change status to “Published”Status updates to Published
8Refresh public form in incognitoForm is accessible again, can submit
Notes: Document any issues with status changes or public form behavior

TS-006: Multiple Field Types

Objective: Test all major form field types render and validate Priority: High Prerequisites: Authenticated as admin

Test Steps

StepActionExpected ResultActual ResultStatus
1Create new form “QA Field Types Test”Form created
2Add text field “Full Name” (required)Field added
3Add number field “Phone Number” (required)Field added
4Add date field “Date of Birth” (required)Field added
5Add choice/select “Employment Status” with options: Employed, Unemployed, StudentField added
6Add file upload field “Resume”Field added
7Add signature field “Signature”Field added
8Save and publish form with slug “qa-field-types”Form published
9Visit /f/qa-field-types in incognitoAll fields render correctly
10Test text field: enter “John Doe”Value accepted
11Test number field: enter “5551234567”Value accepted
12Test date field: select a dateDate picker works, date selected
13Test choice field: select “Employed”Option selected
14Test file upload: upload small PDF (< 5MB)File uploads, shows filename
15Test signature: draw signatureSignature captured
16Submit form with all fields filledSubmission successful
17Verify submission in adminAll field values display correctly
Test Data:
  • Full Name: “John Doe”
  • Phone: “5551234567”
  • DOB: “1990-01-01”
  • Employment: “Employed”
  • Resume: test.pdf (prepare small PDF file)
  • Signature: [Draw simple signature]
Notes: Test each field type’s validation, note any rendering or submission issues

TS-007: Form Validation

Objective: Verify client-side and server-side validation Priority: High Prerequisites: TS-006 form exists

Test Steps

StepActionExpected ResultActual ResultStatus
1Visit /f/qa-field-typesForm loads
2Click Submit without filling any fieldsValidation errors show for all required fields
3Fill Full Name: “Test”Error clears for that field
4Fill Phone: “abc” (letters)Error: “Must be a number” or similar
5Fill Phone: “1234567890” (valid)Error clears
6Try invalid date format in DOBValidation error or date picker enforces format
7Select valid dateError clears
8Try uploading 100MB file (if possible)Error: “File too large”
9Upload valid file < 5MBFile accepted
10Fill all fields correctly and submitForm submits successfully
Notes: Document validation messages, ensure both client and server validation work
Objective: Verify share links work and track responses Priority: High Prerequisites: Published form exists

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form settings for “QA Test Form 1”Settings loads
2Go to Share Links sectionShare links page loads
3Click “Create Share Link”Creation dialog opens
4Enter name: “Email Campaign 1”Name entered
5Set UTM parameters: utm_source=email, utm_medium=campaignParameters saved
6Save share linkLink created, unique URL generated
7Copy share link URLURL copied to clipboard
8Open incognito window, paste share linkForm loads with share link tracking
9Fill and submit formSubmission successful
10Return to admin, view share link statsResponse count shows “1”
11Set response limit: “2”Limit saved
12Submit form via share link again (incognito)Second submission successful
13Try submitting third timeShows “limit reached” message
14Set share link status to “Closed”Status updated
15Try accessing share linkShows “link closed” message
Test Data:
  • Link name: “Email Campaign 1”
  • UTM source: “email”
  • UTM medium: “campaign”
  • Response limit: 2
Notes: Record share link URL, verify tracking accuracy

TS-009: Draft Submissions

Objective: Verify users can save and resume draft applications Priority: High Prerequisites: Authenticated user (non-admin)

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Draft Test” with 5+ fieldsForm created and published
2Log in as regular user (not admin)Logged in to portal
3Navigate to portal /portalPortal dashboard loads
4Click “Start New Application”Form selection dialog or redirects to form
5Select “QA Draft Test” formForm loads in application mode
6Fill first 2 fields onlyValues entered
7Click “Save Draft” or navigate awayDraft auto-saved
8Return to portal dashboardApplication shows as “Draft” status
9Click “Continue Application”Redirects to form with saved values
10Verify previously filled fields have valuesFields 1-2 are pre-filled
11Fill remaining fieldsAll fields completed
12Submit applicationStatus changes to “Submitted”
13Verify cannot edit submitted applicationApplication is read-only
Notes: Test auto-save functionality, verify draft persistence

TS-010: Basic Email Notifications

Objective: Verify email notifications send on form submission Priority: High Prerequisites: Form with notifications configured

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Notifications Test”Form created
2Add email field “Your Email” (required)Field added
3Go to form settings > NotificationsNotifications page loads
4Enable “Email on Submission”Toggle enabled
5Add recipient email: [your test email]Recipient added
6Enable “Send confirmation to submitter”Toggle enabled
7Save notification settingsSettings saved
8Publish formForm published
9Submit form with email: [your email]Form submitted
10Check inbox for admin notificationEmail received with submission details
11Check inbox for submitter confirmationConfirmation email received
12Verify email contains correct dataAll submitted values appear in email
Test Data:
  • Test email address: [Use your email]
Notes: Check spam folder if emails not received, note delivery time

DAY 2: Advanced Features & Settings

Focus: Form settings, integrations, team management, portal Time Estimate: 6-8 hours

TS-011: Form Builder - Complex Field Configurations

Objective: Test conditional logic and field dependencies Priority: High Prerequisites: Authenticated as admin

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Conditional Logic Test”Form created
2Add choice field “Are you employed?” Options: Yes, NoField added
3Add text field “Employer Name”Field added
4Set condition: Show “Employer Name” only if “Are you employed?” = “Yes”Condition configured
5Add another field “Reason for unemployment”Field added
6Set condition: Show “Reason” only if employed = “No”Condition configured
7Publish formForm published
8Visit form in incognitoForm loads
9Verify “Employer Name” and “Reason” are hiddenOnly “Are you employed?” visible
10Select “Yes” for employment”Employer Name” field appears
11Verify “Reason” remains hiddenOnly employer field visible
12Change to “No""Employer Name” hides, “Reason” appears
13Fill “Reason” and submitForm submits successfully
14Verify submission shows correct conditional dataOnly “No” and reason recorded
Notes: Test various conditional scenarios, note any logic failures

TS-012: Workspaces/Folders Management

Objective: Verify workspace organization features Priority: Medium Prerequisites: Multiple forms exist

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to forms list /formsForms list loads
2Click “Create Workspace” or similarCreation dialog opens
3Enter name: “QA Workspace 1”Name entered
4Select color: BlueColor selected
5Save workspaceWorkspace created, appears in sidebar
6Drag form “QA Test Form 1” into workspaceForm moves to workspace
7Verify form appears under workspaceForm listed in workspace
8Click workspace to filterOnly forms in workspace display
9Create another workspace “QA Workspace 2”Workspace created
10Move form to different workspaceForm moves successfully
11Rename workspace to “QA Renamed”Name updates
12Delete workspaceConfirmation dialog appears
13Confirm deletionWorkspace deleted, forms move to uncategorized
Notes: Test drag-and-drop, verify workspace persistence

TS-013: Team Member Management

Objective: Verify team collaboration features Priority: High Prerequisites: At least 2 test accounts available

Test Steps

StepActionExpected ResultActual ResultStatus
1Open form settings for “QA Test Form 1”Settings loads
2Navigate to Team tabTeam management page loads
3Click “Add Team Member”Invitation dialog opens
4Enter email: [second test account]Email entered
5Select role: “Editor”Role selected
6Send invitationInvitation sent, pending status shows
7Log in as second accountDashboard loads
8Check for invitation notificationInvitation appears in notifications/inbox
9Accept invitationInvitation accepted
10Verify form appears in forms list”QA Test Form 1” visible
11Open form as editorCan view and edit form
12Try accessing form settings as editorSettings accessible based on editor permissions
13Log back in as ownerOriginal account
14Change team member role to “Viewer”Role updated
15Log in as second account againDashboard loads
16Try editing formEdit button disabled or shows read-only
17Log back in as owner, remove team memberMember removed from team
18Log in as removed accountDashboard loads
19Verify form no longer appears”QA Test Form 1” not in list
Test Data:
  • Team member email: [Second test account]
  • Roles: Editor, Viewer
Notes: Test different role permissions, verify access control

TS-014: Form Versioning and Restore

Objective: Verify version history and restore functionality Priority: Medium Prerequisites: Form with some edit history

Test Steps

StepActionExpected ResultActual ResultStatus
1Open “QA Test Form 1” in editorForm loads
2Make edit: Change title to “Version 2 Title”Title changed
3Save changesAuto-saved or manual save
4Make another edit: Add new field “Version 2 Field”Field added
5Save againChanges saved
6Navigate to Settings > VersionsVersion history page loads
7Verify version list shows 2+ versionsMultiple versions with timestamps
8Click on earlier version to previewPreview shows original form state
9Click “Restore this version”Confirmation dialog appears
10Confirm restoreForm reverts to earlier version
11Verify title is back to “QA Test Form 1”Original title restored
12Verify “Version 2 Field” is removedField no longer present
13Check version historyNew “restore” version created
Notes: Verify version timestamps are accurate, test restore functionality

TS-015: Form Export and Import

Objective: Verify forms can be exported and imported Priority: Medium Prerequisites: At least one published form

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form settings for “QA Test Form 1”Settings loads
2Go to Export/Data sectionExport page loads
3Click “Export Form as JSON”Download dialog appears
4Download fileJSON file saved locally
5Open JSON file in text editorValid JSON structure visible
6Navigate to forms listForms list loads
7Click “Import Form” buttonImport dialog opens
8Select “Import from File”File upload dialog appears
9Upload the exported JSON fileFile uploads
10Verify import preview shows form structureAll fields and settings visible
11Confirm importNew form created with name “Copy of QA Test Form 1”
12Open imported formForm loads with all original fields
13Verify all settings carried overTitle, description, fields match original
Notes: Save exported JSON file, verify data integrity after import

TS-016: Airtable Integration

Objective: Test Airtable sync functionality Priority: Medium Prerequisites: Airtable account with test base, form with submissions

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form settings > IntegrationsIntegrations page loads
2Find Airtable integration cardAirtable option visible
3Click “Connect Airtable”OAuth flow initiated
4Authorize Airtable accessRedirected back to Terra
5Select Airtable base: [test base]Base selected
6Select table: [test table]Table selected
7Map form fields to Airtable columnsField mappings configured
8Enable auto-syncToggle enabled
9Save integration settingsSettings saved
10Submit new form responseSubmission successful
11Wait 1-2 minutes for syncSync processing
12Check Airtable baseNew record appears in table
13Verify all mapped fields synced correctlyData matches submission
14View sync history in TerraSync log shows successful sync
Test Data:
  • Airtable base: [Your test base name]
  • Airtable table: [Your test table name]
Notes: May skip if no Airtable account available - mark as SKIP with reason

TS-017: Plaid Bank Verification

Objective: Test Plaid bank account verification field Priority: Medium Prerequisites: Plaid integration configured

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Plaid Test”Form created
2Add Plaid Bank Verification fieldField added to form
3Configure field settingsSettings saved
4Publish formForm published
5Visit form in incognitoForm loads
6Click on bank verification fieldPlaid Link modal opens
7Select test bank “Plaid Bank”Bank selected
8Enter test credentials (user_good / pass_good)Credentials accepted
9Select test accountAccount selected
10Complete Plaid flowModal closes, success message shows
11Submit formForm submits with bank verification
12View submission in adminBank account details visible
Test Data:
  • Plaid test credentials: user_good / pass_good (Plaid Sandbox)
Notes: Uses Plaid Sandbox environment for testing - may skip if not configured

TS-018: Webhook Configuration and Testing

Objective: Verify webhooks trigger on form submission Priority: Medium Prerequisites: Webhook testing tool (webhook.site or similar)

Test Steps

StepActionExpected ResultActual ResultStatus
1Go to webhook.site and copy unique URLURL copied
2Navigate to form settings > WebhooksWebhooks page loads
3Click “Add Webhook”Webhook form appears
4Enter webhook URL from webhook.siteURL entered
5Select event: “On Form Submission”Event selected
6Save webhookWebhook created
7Submit test formSubmission successful
8Check webhook.site for incoming requestRequest received
9Verify webhook payload contains submission dataAll fields present in JSON payload
10View webhook delivery history in TerraShows successful delivery with timestamp
11Change webhook URL to invalid URLURL updated
12Submit another formSubmission successful
13Check webhook historyShows failed delivery with error
14Try manual retryRetry fails again (expected)
Test Data:
  • Webhook URL: [Get from webhook.site]
Notes: Examine webhook payload structure, verify all data included

TS-019: Portal - Application Management

Objective: Test portal application workflows Priority: High Prerequisites: Published form, authenticated non-admin user

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as regular user (not admin)Logged in
2Navigate to /portalPortal dashboard loads
3Verify “My Applications” section existsSection visible
4Click “Start New Application”Form selection or new application flow starts
5Select form to apply toForm loads in application mode
6Fill out form partiallyValues entered
7Click “Save Draft”Draft saved, returned to portal
8Verify draft appears in applications listStatus shows “Draft”
9Click “Continue” on draftReturns to form with saved values
10Complete and submit applicationStatus changes to “Submitted”
11Verify application now read-onlyCannot edit after submission
12Check submitted applications sectionApplication appears with “Submitted” status
13View application detailsAll submitted data visible
Notes: Test portal navigation, verify draft auto-save behavior

TS-020: Admin - Submission Status Management

Objective: Verify admins can update submission statuses Priority: High Prerequisites: Form with submissions

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as adminDashboard loads
2Navigate to form submissionsSubmissions list loads
3Select a submissionSubmission detail page opens
4Locate status dropdownShows current status “Submitted”
5Change status to “Approved”Status updates
6Add status note: “Meets all requirements”Note added
7Save status changeChange saved successfully
8Verify status history updatedNew status entry with timestamp appears
9If applicant is logged in, verify they see status updateStatus reflects in portal
10Change status to “Rejected”Status updates
11Add rejection note: “Missing documentation”Note added
12Save changesChange saved
Notes: Test all status transitions, verify notifications if configured

TS-021: Form Analytics and Insights

Objective: Verify analytics display correctly Priority: Medium Prerequisites: Form with several submissions

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form settings > InsightsAnalytics page loads
2Verify total submissions countShows accurate count
3Verify completion rate displaysPercentage shown (e.g., “85%“)
4Check time filter optionsCan select: 24h, 7d, 30d, All
5Select “Last 7 days”Charts update to show 7-day data
6View submission timeline chartLine/bar chart shows daily submissions
7View field drop-off analysisShows which fields users abandon
8Verify visitor count (if tracked)Shows unique visitors
9Export analytics dataCSV download starts
Notes: May show limited data with few submissions - verify calculations are correct

TS-022: Mobile Responsiveness

Objective: Verify Terra works on mobile devices Priority: High Prerequisites: Access to mobile device or browser dev tools

Test Steps

StepActionExpected ResultActual ResultStatus
1Open browser dev tools, toggle mobile viewMobile viewport activated
2Set viewport to iPhone SE (375x667)Viewport resized
3Navigate to staging TerraLanding page loads, fits screen
4Log inLogin flow works on mobile
5View dashboardDashboard adapts to mobile layout
6Navigate to forms listForms list uses mobile layout, readable
7Open a formForm editor/builder adapts to mobile (or shows desktop notice)
8Visit public form /f/qa-test-1Form renders well on mobile
9Fill out form fieldsAll inputs accessible and usable
10Submit formSubmission works on mobile
11Test portal on mobilePortal layout adapts to small screen
12Test with Android viewport (360x800)Similar results on Android size
Notes: Test on actual device if available, note any layout issues

DAY 3: Edge Cases, Security, & Final Testing

Focus: Error handling, permissions, edge cases, security Time Estimate: 6-8 hours

TS-023: Concurrent Form Editing

Objective: Test form locking when multiple users edit Priority: High Prerequisites: 2 user accounts, same form access

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as User ADashboard loads
2Open form “QA Test Form 1” in editorForm loads, editing enabled
3Log in as User B (different browser/incognito)Dashboard loads
4User B opens same form in editorWarning: “Another user is editing” or form locked
5Verify User B cannot editForm read-only or shows lock message
6User A makes a change and savesChange saved
7User A closes editor or logs outForm lock released
8Wait 5 minutes (lock timeout)Lock expires
9User B refreshes pageForm now editable for User B
10User B makes changesChanges saved successfully
Notes: Test 5-minute heartbeat timeout, verify lock indicator shows who’s editing

TS-024: Permission and Access Control

Objective: Verify non-admin users cannot access admin features Priority: Critical Prerequisites: Regular user account (non-admin)

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as non-admin userPortal loads
2Try navigating to /forms directlyRedirected to /portal or 403 error
3Try navigating to /settingsRedirected or 403 error
4Try URL /forms/[formId]/editAccess denied
5Try URL /forms/[formId]/submissionsAccess denied
6Verify portal access worksCan view own applications
7Verify can submit public formsSubmission works
8Log out and log in as adminAdmin dashboard loads
9Verify admin CAN access /formsForms list loads
10Verify admin CAN access settingsSettings pages load
Notes: Critical security test - all admin routes must be protected

TS-025: Form Deletion and Archival

Objective: Test form deletion and archival workflows Priority: Medium Prerequisites: Test form that can be deleted

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to forms listForms list loads
2Find form to archiveForm visible
3Open form options menuMenu opens
4Select “Archive”Confirmation dialog appears
5Confirm archiveForm archived, removed from main list
6Filter to show archived formsArchived forms visible
7Find archived formForm shown with “Archived” status
8Select “Restore”Confirmation dialog appears
9Confirm restoreForm returns to active list
10Now test deletion: Select “Delete”Deletion confirmation dialog appears
11Confirm deletionForm permanently deleted
12Verify form no longer in any listForm not found
13Try accessing deleted form URL404 error or “Form not found” message
14Verify public form URL also gone/f/[slug] shows 404
Notes: Be careful deleting forms - use test forms only

TS-026: Large Form Submission

Objective: Test handling of large submissions with many fields Priority: Medium Prerequisites: Form with 20+ fields

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Large Form” with 25+ fieldsForm created
2Include various field typesText, number, date, choice, file, signature, etc.
3Publish formForm published
4Visit public formAll fields render
5Fill out all 25 fieldsAll values entered
6Upload 3 files (small PDFs)Files upload successfully
7Submit formSubmission processes (may take a few seconds)
8Verify success messageSubmission confirmed
9View submission in adminAll 25 fields display correctly
10Verify all uploaded files accessibleCan view/download all files
Notes: Monitor performance, note any timeouts or errors

TS-027: File Upload Security

Objective: Test file upload validation and security Priority: High Prerequisites: Form with file upload field

Test Steps

StepActionExpected ResultActual ResultStatus
1Visit form with file uploadForm loads
2Try uploading .exe fileRejected: “File type not allowed”
3Try uploading .php fileRejected
4Try uploading valid PDFFile accepted
5Try uploading valid image (PNG/JPG)File accepted
6Try uploading file > 10MBRejected: “File too large”
7Upload valid file and submitSubmission successful
8View submission in adminFile link present
9Click file linkFile downloads securely
10Check file URL structureUses signed/secure URLs, not direct paths
11Try accessing file URL after logoutAccess denied or URL expired
Test Data:
  • Prepare: small.pdf (< 5MB), large.pdf (> 10MB), test.exe, test.php, image.png
Notes: Critical security test - verify file type validation works

TS-028: Form Scheduling (Open/Close Dates)

Objective: Test automatic form opening and closing Priority: Medium Prerequisites: Form with open/close dates

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Scheduling Test”Form created
2Go to form settings > DetailsSettings page loads
3Set “Opens At” to tomorrow’s dateDate saved
4Publish formForm published
5Visit public form URLShows “Coming Soon” or scheduled message
6Verify admin can preview with ?preview=draftAdmin sees form preview
7Change “Opens At” to current time - 1 hour (past)Date saved
8Visit public formForm is now accessible
9Set “Closes At” to current time + 1 hour (future)Date saved
10Verify form still accessibleForm loads
11Set “Closes At” to current time - 1 hour (past)Date saved
12Visit public formShows “Form closed” message
Notes: Test various date/time combinations, verify timezone handling

TS-029: Response Capacity Limit

Objective: Test form closes when capacity reached Priority: Medium Prerequisites: New form

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Capacity Test”Form created
2Set response capacity to “3” in settingsCapacity set
3Publish formForm published
4Submit form (submission #1)Successful
5Submit form again (submission #2)Successful
6Submit form third time (submission #3)Successful
7Try submitting fourth time (submission #4)Form shows “Capacity reached” or similar
8Verify form status auto-changed to ClosedStatus is “Closed” in admin
Notes: May need to use different browsers/incognito for multiple submissions

TS-030: XSS and Injection Prevention

Objective: Verify forms protect against XSS attacks Priority: Critical Prerequisites: Form with text fields

Test Steps

StepActionExpected ResultActual ResultStatus
1Visit form with text fieldForm loads
2Enter XSS payload: <script>alert('xss')</script>Value entered
3Submit formForm submits
4View submission in adminScript tag visible as text, NOT executed
5Verify no alert popup occurredNo popup
6Try payload in form title (admin): <img src=x onerror=alert(1)>Title saved
7View form in publicTitle displays as text, no script execution
8Try SQL injection in text field: '; DROP TABLE forms; --Value entered
9Submit formForm submits normally
10Verify form still existsNo database damage occurred
Test Data:
  • XSS payloads: <script>alert('xss')</script>, <img src=x onerror=alert(1)>
  • SQL payload: '; DROP TABLE forms; --
Notes: Critical security test - all payloads must be safely sanitized

TS-031: Session Timeout and Re-authentication

Objective: Test session expiration handling Priority: Medium Prerequisites: Authenticated user

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in to TerraSession created
2Note login timeTime recorded
3Leave browser idle for 30+ minutesSession may expire (depends on timeout setting)
4Try navigating to protected pageRedirected to login if expired
5Log back inSession restored
6Try performing action (e.g., save form) immediatelyAction succeeds
7Open dev tools, delete session cookieCookie removed
8Refresh pageRedirected to login
Notes: Session timeout duration may vary - document observed behavior

TS-032: Form Duplication

Objective: Test creating copy of existing form Priority: Medium Prerequisites: Published form with fields

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to forms listForms list loads
2Find “QA Test Form 1”Form visible
3Click form options menuMenu opens
4Select “Duplicate”Duplication process starts
5Verify new form created”Copy of QA Test Form 1” appears in list
6Open duplicated formForm loads
7Verify all fields copiedAll original fields present
8Verify settings copiedTitle, description, etc. match (with “Copy of”)
9Verify duplicate has unique slugSlug is different from original
10Verify submissions NOT copiedDuplicate has 0 submissions
Notes: Confirm duplicate is truly independent (editing one doesn’t affect the other)

TS-033: Multi-language Support

Objective: Test form translations and language switching Priority: Medium Prerequisites: Form configured for multiple languages

Test Steps

StepActionExpected ResultActual ResultStatus
1Create form “QA Translation Test”Form created
2Add fields with English labelsFields added
3Go to Settings > TranslationsTranslations page loads
4Add Spanish translationSpanish added as available language
5Translate form title to SpanishTranslation saved
6Translate field labels to SpanishAll labels translated
7Enable language switcherSwitcher enabled
8Publish formForm published
9Visit public formLanguage switcher visible
10Verify default language is EnglishEnglish labels display
11Switch to SpanishAll labels change to Spanish
12Fill and submit form in SpanishSubmission successful
13View submission in adminShows language used (if tracked)
Test Data:
  • English: “First Name” → Spanish: “Nombre”
  • English: “Email” → Spanish: “Correo electrónico”
Notes: Test with multiple languages if supported, verify RTL languages if applicable

TS-034: Email Deliverability

Objective: Test email notifications reach inbox Priority: High Prerequisites: Form with email notifications configured

Test Steps

StepActionExpected ResultActual ResultStatus
1Configure form notificationsNotifications enabled
2Set admin email recipientEmail saved
3Enable submitter confirmation emailSetting enabled
4Submit test form with valid emailForm submitted
5Check admin inbox (within 1 min)Notification email received
6Verify email sender addressFrom: noreply@terra.withunify.org or similar
7Verify email subject lineSubject indicates form submission
8Verify email body contains dataAll submitted values in email
9Check submitter inboxConfirmation email received
10Verify no emails in spam folderEmails in inbox, not spam
11Click any links in emailLinks work, go to correct pages
Notes: Check spam/junk folders, note delivery time in minutes

TS-035: Draft Auto-Save Behavior

Objective: Test auto-save functionality for drafts Priority: Medium Prerequisites: Authenticated user in portal

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in to portalPortal loads
2Start new applicationForm loads
3Fill first fieldValue entered
4Wait 10 seconds (auto-save interval)“Saving…” or “Draft saved” indicator appears
5Fill second fieldValue entered
6Close browser tab immediately (no manual save)Tab closed
7Reopen portal in new tabPortal loads
8Find draft applicationDraft appears in list
9Open draftForm loads
10Verify both fields have saved valuesValues present
Notes: Test auto-save timing, verify no data loss on abrupt close

TS-036: Submission Export

Objective: Test exporting submissions as CSV/JSON Priority: Medium Prerequisites: Form with 3+ submissions

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form submissionsSubmissions list loads
2Go to Export section (or click Export button)Export dialog opens
3Select format: CSVFormat selected
4Select date range: All timeRange selected
5Select all fields to exportAll fields checked
6Click “Export”Download starts
7Open CSV fileFile opens in Excel/Google Sheets
8Verify all submissions presentRow count matches submission count
9Verify all columns presentEach field has column
10Verify data accuracySpot check values match admin view
11Repeat export with JSON formatJSON file downloads
12Open JSON in text editorValid JSON structure
Notes: Test different date ranges and field selections

TS-037: Applicant Profile and Vault

Objective: Test applicant profile and data vault features Priority: Medium Prerequisites: User account with portal access

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in to portal as applicantPortal loads
2Navigate to Profile sectionProfile page loads
3Fill out profile informationFields available for editing
4Save profileProfile saved successfully
5Navigate to “Vault” or saved info sectionVault page loads
6Add reusable information (e.g., address, education)Data saved to vault
7Start new applicationForm loads
8Verify vault data prefills form fieldsMatching fields auto-filled
9Edit prefilled valueCan modify prefilled data
10Submit applicationSubmission successful
11Return to vaultVault data unchanged
Notes: Test vault data persistence, verify prefill matching logic

TS-038: Admin Audit Log

Objective: Verify admin actions are logged Priority: Medium Prerequisites: Admin account

Test Steps

StepActionExpected ResultActual ResultStatus
1Log in as adminDashboard loads
2Perform various actions:
  • Create form
  • Edit form settings
  • Delete submission
  • Add team member | Actions completed | | | | 3 | Navigate to Settings > Audit Log | Audit log page loads | | | | 4 | Verify recent actions appear | All performed actions logged | | | | 5 | Check log entry details | Shows: timestamp, user, action, resource | | | | 6 | Filter by action type | Filter works | | | | 7 | Search for specific form name | Search returns relevant logs | | | | 8 | Export audit log | CSV download starts | | |
Notes: Verify sensitive actions (deletes, permission changes) are logged

TS-039: Error Handling and User Feedback

Objective: Test error messages are clear and helpful Priority: High Prerequisites: Various test scenarios

Test Steps

StepActionExpected ResultActual ResultStatus
1Try submitting form without required fieldsClear error: “This field is required”
2Try invalid email formatError: “Please enter a valid email”
3Try accessing non-existent form /f/fake-slug404 page with helpful message
4Simulate network error during submissionError message with retry option
5Try uploading oversized fileError: “File size exceeds 10MB limit”
6Try setting form close date before open dateValidation error prevents save
7Try duplicate form slugError: “This slug is already in use”
8Try deleting form with team membersWarning or confirmation dialog
Notes: All errors should be user-friendly, actionable, and not expose technical details

TS-040: Performance and Load

Objective: Test system performance under realistic load Priority: Medium Prerequisites: Form with many submissions

Test Steps

StepActionExpected ResultActual ResultStatus
1Navigate to form with 100+ submissionsPage loads in < 3 seconds
2Paginate through submissionsPagination smooth, no lag
3Sort submissions by dateSorting completes quickly
4Search submissionsSearch results return quickly
5Load form with 50+ fields in builderForm loads in reasonable time (< 5 sec)
6Make edit to large form and saveSave completes in < 3 seconds
7Submit large form with 10 filesSubmission completes (may take 10-30 sec)
8Load dashboard with 20+ formsDashboard loads in < 3 seconds
Notes: Record load times, note any timeouts or performance issues

Bug Report Template

Use this template to document any bugs found during testing.

BUG-XXX: [Brief Description]

Test Script: [TS-XXX that revealed bug] Date Found: [Date] Severity: [Critical / High / Medium / Low] Environment: the active QA deployment URL

Steps to Reproduce

  1. [Step 1]
  2. [Step 2]
  3. [Step 3]

Expected Result

[What should happen]

Actual Result

[What actually happened]

Screenshots/Videos

[Attach or link to screenshots]

Additional Notes

[Any other relevant information]

Daily Testing Summary

Day 1 Summary

Date: _______________ Tests Completed: ___ / 10 Pass Rate: ___% Bugs Found: ___ Blockers: ___ Notes: [Key findings, observations, questions]

Day 2 Summary

Date: _______________ Tests Completed: ___ / 12 Pass Rate: ___% Bugs Found: ___ Blockers: ___ Notes: [Key findings, observations, questions]

Day 3 Summary

Date: _______________ Tests Completed: ___ / 18 Pass Rate: ___% Bugs Found: ___ Blockers: ___ Notes: [Key findings, observations, questions]

Final QA Report

Total Tests Executed: ___ / 40 Overall Pass Rate: ___% Total Bugs Found: ___ Critical Bugs: ___ High Priority Bugs: ___ Medium/Low Bugs: ___

Recommendations

[List top recommendations for production readiness]

Areas Not Tested

[List any areas that were skipped or blocked]

Sign-off

Tester Name: ___________________ Date: ___________________ Signature: ___________________