Skip to main content

NetPad QA Testing Framework

Document Information​

FieldValue
Version1.0
Last UpdatedJanuary 2026
OwnerQA Team
StatusActive

Table of Contents​

  1. Introduction
  2. Testing Environments
  3. Test Case Structure
  4. Bug Reporting Guidelines
  5. User Journeys
  6. Field Type Testing Matrix
  7. Workflow Node Testing Matrix
  8. Testing Checklist Templates

Introduction​

Purpose​

This document provides the QA team with structured guidelines for testing NetPad's features. It ensures consistent, thorough testing across all platform capabilities.

Scope​

NetPad has four core pillars that require testing:

PillarComponentsPriority
FormsForm builder, 30+ field types, conditional logic, multi-page, themingCritical
WorkflowsWorkflow editor, 25+ node types, triggers, execution engineCritical
Data ManagementData browser, connections, import/exportHigh
AI/ConversationalConversational forms, RAG, AI form generationMedium

Testing Principles​

  1. Test as a real user β€” Follow the journey a customer would take
  2. Document everything β€” Screenshots, screen recordings, exact steps
  3. Test edge cases β€” Empty inputs, special characters, large files, slow connections
  4. Test across browsers β€” Chrome, Firefox, Safari, Edge
  5. Test responsive design β€” Desktop, tablet, mobile viewports

Testing Environments​

Environment URLs​

EnvironmentURLPurpose
Productionhttps://app.netpad.ioFinal verification only
Staginghttps://staging.netpad.ioPrimary testing environment
Developmenthttps://dev.netpad.ioEarly feature testing
Localhttp://localhost:3000Developer testing

Test Accounts​

RoleEmailPasswordUse For
Ownerowner@test.netpad.io[See 1Password]Full admin testing
Adminadmin@test.netpad.io[See 1Password]Admin feature testing
Membermember@test.netpad.io[See 1Password]Standard user testing
Viewerviewer@test.netpad.io[See 1Password]Read-only testing

Test Data Guidelines​

  • Never use real customer data for testing
  • Use clearly fake data: "Test User", "test@example.com", "555-0100"
  • Prefix test records with [TEST] for easy cleanup
  • Clean up test data after completing test cycles

Test Case Structure​

Every test case follows this standard format:

Test Case Template​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ TEST CASE: [TC-XXX-000] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Title: [Descriptive name of what's being tested] β”‚
β”‚ Module: [Forms | Workflows | Data | AI | Auth | Other] β”‚
β”‚ Priority: [P0-Critical | P1-High | P2-Medium | P3-Low] β”‚
β”‚ Estimated Time: [X minutes] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ PRECONDITIONS β”‚
β”‚ β€’ [What must be true before starting] β”‚
β”‚ β€’ [Required setup, data, or state] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ TEST STEPS β”‚
β”‚ β”‚
β”‚ Step 1: [Action] β”‚
β”‚ β†’ Expected: [What should happen] β”‚
β”‚ β†’ Actual: _______ [Fill during testing] β”‚
β”‚ β†’ Status: ☐ Pass ☐ Fail ☐ Blocked β”‚
β”‚ β”‚
β”‚ Step 2: [Action] β”‚
β”‚ β†’ Expected: [What should happen] β”‚
β”‚ β†’ Actual: _______ β”‚
β”‚ β†’ Status: ☐ Pass ☐ Fail ☐ Blocked β”‚
β”‚ β”‚
β”‚ [Continue for all steps...] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ POSTCONDITIONS β”‚
β”‚ β€’ [Expected state after test completes] β”‚
β”‚ β€’ [Any cleanup required] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ TEST RESULT β”‚
β”‚ Overall Status: ☐ Pass ☐ Fail ☐ Blocked ☐ Skipped β”‚
β”‚ Tester: _______________________ β”‚
β”‚ Date: _______________________ β”‚
β”‚ Environment: _______________________ β”‚
β”‚ Browser: _______________________ β”‚
β”‚ Notes: _______________________ β”‚
β”‚ Bug IDs: _______________________ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Priority Definitions​

PriorityDefinitionExamples
P0 - CriticalCore functionality that blocks all usersLogin, form submission, data saving
P1 - HighImportant features used frequentlyForm builder, workflow editor, publishing
P2 - MediumFeatures used regularly but have workaroundsTheming, import/export, analytics
P3 - LowNice-to-have features, edge casesKeyboard shortcuts, minor UI polish

Bug Reporting Guidelines​

Bug Report Template​

When a test fails, create a bug report with this information:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ BUG REPORT: [BUG-000] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Title: [Short, descriptive summary] β”‚
β”‚ Severity: [Critical | Major | Minor | Trivial] β”‚
β”‚ Module: [Forms | Workflows | Data | AI | Auth | Other] β”‚
β”‚ Found In: [Test Case ID, e.g., TC-FRM-001] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ENVIRONMENT β”‚
β”‚ β€’ URL: [exact URL where bug occurred] β”‚
β”‚ β€’ Browser: [Chrome 120, Firefox 121, Safari 17, etc.] β”‚
β”‚ β€’ OS: [macOS 14.2, Windows 11, etc.] β”‚
β”‚ β€’ Screen Size: [1920x1080, mobile, etc.] β”‚
β”‚ β€’ Account: [which test account was used] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ STEPS TO REPRODUCE β”‚
β”‚ 1. [First step] β”‚
β”‚ 2. [Second step] β”‚
β”‚ 3. [Continue until bug appears] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ EXPECTED RESULT β”‚
β”‚ [What should have happened] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ACTUAL RESULT β”‚
β”‚ [What actually happened] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ATTACHMENTS β”‚
β”‚ β€’ Screenshot: [filename or link] β”‚
β”‚ β€’ Screen Recording: [filename or link] β”‚
β”‚ β€’ Console Errors: [paste any browser console errors] β”‚
β”‚ β€’ Network Errors: [paste any failed API calls] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ADDITIONAL CONTEXT β”‚
β”‚ β€’ Reproducibility: [Always | Sometimes | Rarely | Once] β”‚
β”‚ β€’ Workaround: [Is there a way to work around this?] β”‚
β”‚ β€’ Related Bugs: [Any similar bugs?] β”‚
β”‚ β€’ Notes: [Any other relevant information] β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Severity Definitions​

SeverityDefinitionResponse Time
CriticalSystem unusable, data loss, security issueImmediate
MajorFeature broken, no workaround, blocks workflow24 hours
MinorFeature impaired but workaround existsNext sprint
TrivialCosmetic issue, typo, minor UI glitchBacklog

How to Capture Evidence​

Screenshots:

  • Use full-page screenshots when possible
  • Highlight the problem area with a red box/arrow
  • Include the URL bar in the screenshot
  • Name files descriptively: bug-form-validation-error-2026-01-20.png

Screen Recordings:

  • Record the full reproduction steps
  • Keep under 2 minutes if possible
  • Use tools: Loom, CleanShot X, or built-in OS recording
  • Narrate what you're doing (optional but helpful)

Console Errors:

  • Open DevTools (F12 or Cmd+Option+I)
  • Go to Console tab
  • Filter by Errors
  • Copy the full error message including stack trace

Network Errors:

  • Open DevTools β†’ Network tab
  • Reproduce the bug
  • Look for red (failed) requests
  • Right-click β†’ Copy β†’ Copy as cURL (for API issues)

User Journeys​

Journey Map Overview​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ NETPAD USER JOURNEY MAP β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Signup │───▢│ Create │───▢│ Build │───▢│ Publish β”‚ β”‚
β”‚ β”‚ Login β”‚ β”‚ Org β”‚ β”‚ Form β”‚ β”‚ Form β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β–Ό β–Ό β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ β”‚ Build β”‚ β”‚ View β”‚ β”‚
β”‚ β”‚ β”‚ Workflow β”‚ β”‚ Data β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ β–Ό β–Ό β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Invite β”‚ β”‚ Test β”‚ β”‚
β”‚ β”‚ Team β”‚ β”‚ Workflow β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

UJ-001: New User Onboarding​

Journey Description: A new user signs up, creates their first organization, and explores the dashboard.

Personas: First-time user, Developer, IT Manager

Priority: P0 - Critical


TC-ONB-001: Email Signup Flow​

FieldValue
ModuleAuthentication
PriorityP0 - Critical
Estimated Time5 minutes

Preconditions:

  • User has not signed up before
  • User has access to email for verification

Test Steps:

StepActionExpected ResultStatus
1Navigate to https://app.netpad.ioLanding page loads, "Get Started" button visible☐
2Click "Get Started" or "Sign Up"Signup form appears with email, password fields☐
3Enter valid email: testuser+[timestamp]@example.comEmail field accepts input☐
4Enter password: TestPass123!Password field shows dots, strength indicator shows "Strong"☐
5Click "Create Account"Loading indicator appears, then redirects to verification page☐
6Check email inboxVerification email received within 2 minutes☐
7Click verification link in emailBrowser opens, shows "Email Verified" success message☐
8Observe redirectAutomatically redirected to onboarding or dashboard☐

Edge Cases to Test:

  • Invalid email format (missing @, no domain)
  • Weak password (less than 8 chars, no special chars)
  • Already registered email
  • Expired verification link (wait 24+ hours)
  • Clicking verification link twice

TC-ONB-002: Organization Creation​

FieldValue
ModuleOrganizations
PriorityP0 - Critical
Estimated Time3 minutes

Preconditions:

  • User is logged in
  • User has no existing organizations (new account)

Test Steps:

StepActionExpected ResultStatus
1Observe onboarding flow"Create Your Organization" step appears☐
2Enter organization name: [TEST] My CompanyName field accepts input☐
3Enter slug: test-my-companySlug auto-generates from name or accepts custom input☐
4Select industry (optional)Dropdown shows industry options☐
5Click "Create Organization"Loading indicator, then success message☐
6Observe dashboardDashboard loads with organization name in header☐
7Check sidebar navigationProjects, Forms, Workflows, Data sections visible☐

Edge Cases to Test:

  • Organization name with special characters
  • Duplicate organization slug
  • Very long organization name (100+ characters)
  • Empty organization name (validation)

TC-ONB-003: First Project Creation​

FieldValue
ModuleProjects
PriorityP1 - High
Estimated Time2 minutes

Preconditions:

  • User is logged in
  • Organization exists
  • No projects exist yet

Test Steps:

StepActionExpected ResultStatus
1Click "Projects" in sidebarProjects list page loads (empty state)☐
2Click "Create Project" buttonProject creation modal/form appears☐
3Enter project name: [TEST] DevelopmentName field accepts input☐
4Enter description: Testing environmentDescription field accepts input☐
5Click "Create"Project created, redirected to project view☐
6Verify project appears in sidebarProject name visible in navigation☐

UJ-002: Form Builder Journey​

Journey Description: User creates a form from scratch using the visual form builder, adds various field types, configures validation and conditional logic, then previews and saves.

Personas: Developer, IT Manager, Business User

Priority: P0 - Critical


TC-FRM-001: Create New Form (Blank)​

FieldValue
ModuleForms
PriorityP0 - Critical
Estimated Time5 minutes

Preconditions:

  • User is logged in
  • Organization and Project exist
  • User is in a Project context

Test Steps:

StepActionExpected ResultStatus
1Click "Forms" in sidebarForms list page loads☐
2Click "Create Form" buttonForm creation options appear☐
3Select "Blank Form" optionForm builder opens with empty canvas☐
4Enter form name: [TEST] Contact FormName field in header accepts input☐
5Observe form builder UILeft panel shows field types, center shows canvas, right shows properties☐
6Click "Save"Form saved, success toast appears☐
7Refresh pageForm reloads with saved name☐

TC-FRM-002: Add Basic Field Types​

FieldValue
ModuleForms
PriorityP0 - Critical
Estimated Time10 minutes

Preconditions:

  • Blank form is open in form builder

Test Steps:

StepActionExpected ResultStatus
1Drag "Short Text" field to canvasField appears on canvas with default label☐
2Click on the fieldProperties panel shows field settings☐
3Change label to Full NameLabel updates on canvas in real-time☐
4Change path to full_namePath field accepts valid input☐
5Toggle "Required" onRequired indicator (*) appears on field☐
6Add placeholder: Enter your full namePlaceholder shows in field preview☐
7Drag "Email" field to canvasEmail field appears below first field☐
8Configure email field (label: Email Address, path: email)Field configured correctly☐
9Drag "Long Text" field to canvasLong text (textarea) field appears☐
10Configure (label: Message, path: message)Field configured correctly☐
11Click "Save"All fields saved☐
12Click "Preview"Preview modal shows form with all 3 fields☐

TC-FRM-003: Add Selection Field Types​

FieldValue
ModuleForms
PriorityP1 - High
Estimated Time10 minutes

Preconditions:

  • Form is open in form builder

Test Steps:

StepActionExpected ResultStatus
1Drag "Dropdown" field to canvasDropdown field appears☐
2Set label: DepartmentLabel updates☐
3Click "Add Option"New option row appears☐
4Add options: Sales, Engineering, Marketing, SupportAll options added and visible☐
5Preview formDropdown shows all 4 options☐
6Drag "Radio" field to canvasRadio button group appears☐
7Set label: PriorityLabel updates☐
8Add options: Low, Medium, High, CriticalRadio options visible☐
9Drag "Checkbox" field to canvasCheckbox group appears☐
10Set label: InterestsLabel updates☐
11Add options: Product Updates, Newsletter, EventsCheckbox options visible☐
12Set "Allow multiple" to trueMultiple selection enabled☐
13Save and PreviewAll selection fields work correctly☐

TC-FRM-004: Configure Conditional Logic​

FieldValue
ModuleForms
PriorityP1 - High
Estimated Time15 minutes

Preconditions:

  • Form exists with a dropdown field (e.g., "Department")

Test Steps:

StepActionExpected ResultStatus
1Add new Short Text field: Manager NameField added☐
2Click on "Manager Name" fieldProperties panel opens☐
3Scroll to "Conditional Logic" sectionConditional logic options visible☐
4Toggle "Enable Conditional Logic" onCondition builder appears☐
5Set action: Show this fieldAction selected☐
6Set condition: Department equals EngineeringCondition configured☐
7Save formForm saved☐
8Open PreviewPreview modal opens☐
9Verify "Manager Name" is hidden initiallyField not visible☐
10Select "Engineering" from Department dropdown"Manager Name" field appears☐
11Select "Sales" from Department dropdown"Manager Name" field hides☐
12Test with all department optionsField shows only for Engineering☐

Edge Cases to Test:

  • Multiple conditions (AND logic)
  • Multiple conditions (OR logic)
  • Nested conditions (condition depends on conditional field)
  • Condition on required field (validation behavior)

TC-FRM-005: Configure Field Validation​

FieldValue
ModuleForms
PriorityP1 - High
Estimated Time10 minutes

Preconditions:

  • Form is open in form builder with at least one text field

Test Steps:

StepActionExpected ResultStatus
1Add Number field: AgeNumber field added☐
2Open field propertiesProperties panel shows☐
3Set minimum value: 18Minimum configured☐
4Set maximum value: 120Maximum configured☐
5Set custom error message: Age must be between 18 and 120Message saved☐
6Add Short Text field: UsernameText field added☐
7Set minimum length: 3Min length configured☐
8Set maximum length: 20Max length configured☐
9Set pattern: ^[a-zA-Z0-9_]+$Regex pattern configured☐
10Save and PreviewPreview opens☐
11Enter age: 15, try to submitValidation error shows☐
12Enter age: 25, try to submitValidation passes☐
13Enter username: ab, try to submit"Too short" error shows☐
14Enter username: user@name, try to submitPattern error shows☐
15Enter username: valid_user, try to submitValidation passes☐

TC-FRM-006: Create Form from Template​

FieldValue
ModuleForms
PriorityP1 - High
Estimated Time5 minutes

Preconditions:

  • User is logged in with organization/project

Test Steps:

StepActionExpected ResultStatus
1Navigate to Forms β†’ Create FormCreation options appear☐
2Select "Use Template"Template gallery opens☐
3Browse template categoriesCategories visible: Business, Events, Feedback, etc.☐
4Click on "IT Support Request" templateTemplate preview shows☐
5Review template fieldsAll fields listed with descriptions☐
6Click "Use This Template"Form builder opens with template fields☐
7Verify all fields loaded5+ fields from template present☐
8Verify conditional logic loadedTemplate conditions working☐
9Customize form name: [TEST] IT SupportName changed☐
10Save formForm saved successfully☐

TC-FRM-007: Multi-Page Form Configuration​

FieldValue
ModuleForms
PriorityP2 - Medium
Estimated Time15 minutes

Preconditions:

  • Form with 6+ fields exists

Test Steps:

StepActionExpected ResultStatus
1Open form in builderForm builder loads☐
2Click "Form Settings" or gear iconSettings panel opens☐
3Enable "Multi-Page Form"Page configuration options appear☐
4Click "Add Page"Second page created☐
5Set Page 1 title: Personal InformationTitle saved☐
6Set Page 2 title: Contact DetailsTitle saved☐
7Drag fields to assign to pagesFields organized by page☐
8Save and PreviewMulti-page preview opens☐
9Fill Page 1 fieldsFields accept input☐
10Click "Next"Page 2 loads☐
11Click "Previous"Page 1 loads with data preserved☐
12Complete all pages and submitSubmission successful☐

UJ-003: Form Publishing & Submission​

Journey Description: User publishes a form, shares it with end-users, and receives submissions.

Personas: Form Creator, End User (submitter)

Priority: P0 - Critical


TC-PUB-001: Publish Form​

FieldValue
ModuleForms / Publishing
PriorityP0 - Critical
Estimated Time5 minutes

Preconditions:

  • Form exists with at least 2 fields
  • Form is saved

Test Steps:

StepActionExpected ResultStatus
1Open form in builderForm loads☐
2Click "Publish" buttonPublishing modal/panel opens☐
3Review publishing optionsStandalone URL, Embed Code visible☐
4Toggle "Published" to ONForm status changes to published☐
5Copy standalone URLURL copied to clipboard☐
6Open URL in new incognito windowPublic form loads without login☐
7Verify form displays correctlyAll fields visible and functional☐
8Verify branding/theme appliedForm matches configured theme☐

TC-PUB-002: Form Submission (End User)​

FieldValue
ModuleForms / Submission
PriorityP0 - Critical
Estimated Time5 minutes

Preconditions:

  • Form is published
  • Testing in incognito/logged-out state

Test Steps:

StepActionExpected ResultStatus
1Navigate to published form URLForm loads☐
2Fill in required field: Name = John TestField accepts input☐
3Fill in required field: Email = john@test.comField accepts input☐
4Fill in optional fieldsFields accept input☐
5Click "Submit" buttonLoading indicator appears☐
6Observe success stateSuccess message displays☐
7Verify redirect (if configured)Redirects to thank you page or URL☐
8Try to submit againEither allowed or "already submitted" based on config☐

Edge Cases to Test:

  • Submit with missing required field
  • Submit with invalid email format
  • Submit with file upload (if applicable)
  • Submit on slow connection (throttle network)
  • Submit and immediately close browser (data loss?)

TC-PUB-003: View Submissions (Admin)​

FieldValue
ModuleData Management
PriorityP0 - Critical
Estimated Time5 minutes

Preconditions:

  • Form has at least 1 submission
  • User is logged in as form owner/admin

Test Steps:

StepActionExpected ResultStatus
1Navigate to form in dashboardForm overview shows☐
2Click "Submissions" or "Data" tabSubmissions list loads☐
3Verify submission from TC-PUB-002 appearsSubmission visible in list☐
4Click on submission rowSubmission detail view opens☐
5Verify all submitted data showsName, email, all fields present☐
6Verify timestamp is correctSubmission time within expected range☐
7Test export to CSVCSV downloads with correct data☐
8Test export to JSONJSON downloads with correct structure☐

UJ-004: Workflow Builder Journey​

Journey Description: User creates an automated workflow triggered by form submission that sends notifications and saves data.

Personas: Developer, IT Manager

Priority: P0 - Critical


TC-WFL-001: Create Form-to-Email Workflow​

FieldValue
ModuleWorkflows
PriorityP0 - Critical
Estimated Time15 minutes

Preconditions:

  • Published form exists with submissions enabled
  • User is logged in

Test Steps:

StepActionExpected ResultStatus
1Navigate to WorkflowsWorkflow list page loads☐
2Click "Create Workflow"Workflow creation options appear☐
3Select "Blank Workflow"Workflow editor opens with empty canvas☐
4Enter workflow name: [TEST] Contact Form NotificationsName saved☐
5Drag "Form Trigger" node to canvasTrigger node appears☐
6Click on trigger nodeProperties panel opens☐
7Select form: [TEST] Contact FormForm connected to trigger☐
8Drag "Send Email" node to canvasEmail node appears☐
9Connect trigger output to email inputEdge drawn between nodes☐
10Click on email nodeEmail properties panel opens☐
11Set "To": admin@test.comRecipient configured☐
12Set "Subject": New Contact: {{trigger.data.name}}Subject with template variable☐
13Set "Body": Email: {{trigger.data.email}}\nMessage: {{trigger.data.message}}Body with template variables☐
14Click "Save"Workflow saved☐
15Toggle "Active" to ONWorkflow activated☐

TC-WFL-002: Test Workflow Execution​

FieldValue
ModuleWorkflows
PriorityP0 - Critical
Estimated Time10 minutes

Preconditions:

  • Workflow from TC-WFL-001 is active
  • Email service is configured

Test Steps:

StepActionExpected ResultStatus
1Open published form in new windowForm loads☐
2Submit form with test dataSubmission successful☐
3Return to workflow in dashboardWorkflow page loads☐
4Click "Execution History" or "Logs"Execution log opens☐
5Verify new execution appearsExecution logged with timestamp☐
6Click on executionExecution detail shows☐
7Verify trigger data capturedForm submission data visible☐
8Verify email node executedEmail node shows "Success"☐
9Check email inbox (admin@test.com)Email received with correct data☐
10Verify template variables replacedSubject and body show actual values, not {{}}☐

TC-WFL-003: Conditional Workflow Logic​

FieldValue
ModuleWorkflows
PriorityP1 - High
Estimated Time20 minutes

Preconditions:

  • Form exists with "Priority" field (Low/Medium/High/Critical options)

Test Steps:

StepActionExpected ResultStatus
1Create new workflowWorkflow editor opens☐
2Add Form Trigger β†’ connect to formTrigger configured☐
3Drag "Condition" node to canvasCondition node appears☐
4Connect trigger to conditionEdge created☐
5Configure condition: trigger.data.priority equals CriticalCondition set☐
6Add two "Send Email" nodesTwo email nodes on canvas☐
7Connect condition "True" output β†’ first email (urgent@team.com)Edge created☐
8Connect condition "False" output β†’ second email (support@team.com)Edge created☐
9Save and activate workflowWorkflow active☐
10Submit form with Priority = "Critical"Submission successful☐
11Verify urgent@team.com received emailEmail received☐
12Verify support@team.com did NOT receive emailNo email☐
13Submit form with Priority = "Low"Submission successful☐
14Verify support@team.com received emailEmail received☐
15Verify urgent@team.com did NOT receive emailNo email☐

UJ-005: Data Management Journey​

Journey Description: User connects a MongoDB database, browses data, and manages connections securely.

Personas: Developer, Database Admin

Priority: P1 - High


TC-DAT-001: Add MongoDB Connection​

FieldValue
ModuleData Management
PriorityP1 - High
Estimated Time10 minutes

Preconditions:

  • User has MongoDB Atlas connection string
  • User is logged in as Admin or Owner

Test Steps:

StepActionExpected ResultStatus
1Navigate to Settings β†’ Connection VaultConnection vault page loads☐
2Click "Add Connection"Connection form opens☐
3Enter connection name: [TEST] Atlas DevName accepted☐
4Paste MongoDB connection stringString accepted (hidden/masked)☐
5Click "Test Connection"Connection test runs☐
6Verify "Connection Successful" messageSuccess message appears☐
7Click "Save"Connection saved☐
8Verify connection appears in listConnection visible with status☐
9Verify connection string is maskedString shows as mongodb+srv://***☐

Edge Cases to Test:

  • Invalid connection string format
  • Valid format but wrong credentials
  • Connection timeout (unreachable server)
  • Connection with special characters in password

TC-DAT-002: Browse MongoDB Data​

FieldValue
ModuleData Management
PriorityP1 - High
Estimated Time10 minutes

Preconditions:

  • MongoDB connection is configured
  • Database has at least one collection with data

Test Steps:

StepActionExpected ResultStatus
1Navigate to Data BrowserData browser loads☐
2Select connection from dropdownDatabases list loads☐
3Expand databaseCollections list appears☐
4Click on collectionDocuments load in table view☐
5Verify document data displaysFields and values visible☐
6Click on a document rowDocument detail view opens☐
7Verify nested objects displayNested data expandable/visible☐
8Use filter: {"status": "active"}Filtered results show☐
9Use sort: {"createdAt": -1}Results sorted descending☐
10Paginate through resultsPagination works correctly☐

UJ-006: AI & Conversational Forms Journey​

Journey Description: User creates an AI-powered conversational form and tests the chat-based data collection experience.

Personas: Developer, Product Manager

Priority: P2 - Medium


TC-AI-001: Generate Form with AI​

FieldValue
ModuleAI
PriorityP2 - Medium
Estimated Time10 minutes

Preconditions:

  • User is logged in
  • AI features are enabled for the account

Test Steps:

StepActionExpected ResultStatus
1Navigate to Forms β†’ Create FormCreation options appear☐
2Select "Generate with AI"AI generation interface opens☐
3Enter prompt: Create a job application form with personal info, work history, and resume uploadPrompt accepted☐
4Click "Generate"Loading indicator, AI processing☐
5Wait for generation (may take 10-30 seconds)Form fields generated☐
6Review generated fieldsRelevant fields present (name, email, experience, file upload)☐
7Verify field types are appropriateEmail field for email, file upload for resume, etc.☐
8Click "Use This Form" or "Accept"Form loaded into builder☐
9Customize if neededFields editable☐
10Save formForm saved☐

TC-AI-002: Conversational Form Experience​

FieldValue
ModuleConversational Forms
PriorityP2 - Medium
Estimated Time15 minutes

Preconditions:

  • Conversational form template exists
  • AI service is configured

Test Steps:

StepActionExpected ResultStatus
1Navigate to form with conversational modeForm loads☐
2Click "Preview as Conversational"Chat interface opens☐
3Observe initial AI greetingAI introduces itself and purpose☐
4Type: Hi, I need help with a software issueAI responds and asks clarifying question☐
5Answer AI's questionAI acknowledges and asks next question☐
6Continue conversation until all data collectedAI guides through all required fields☐
7Verify AI summarizes collected informationSummary presented☐
8Confirm submissionSubmission successful☐
9View submission in data browserAll fields populated from conversation☐

Edge Cases to Test:

  • User provides incomplete information
  • User goes off-topic
  • User provides conflicting information
  • User asks to change previous answer

UJ-007: Team Collaboration Journey​

Journey Description: Organization owner invites team members with different roles and verifies permission boundaries.

Personas: Organization Owner, Team Admin, Team Member

Priority: P1 - High


TC-TEAM-001: Invite Team Member​

FieldValue
ModuleTeam Management
PriorityP1 - High
Estimated Time10 minutes

Preconditions:

  • User is logged in as Organization Owner
  • Have access to a second email for the invitee

Test Steps:

StepActionExpected ResultStatus
1Navigate to Settings β†’ TeamTeam management page loads☐
2Click "Invite Member"Invitation form opens☐
3Enter email: newmember@test.comEmail accepted☐
4Select role: MemberRole selected☐
5Click "Send Invitation"Invitation sent, success message☐
6Verify pending invitation appears in listInvitation shown with "Pending" status☐
7Check invitee's email inboxInvitation email received☐
8Click invitation link (as invitee)Invitation acceptance page loads☐
9Create account or sign in (as invitee)Account created/linked☐
10Verify invitee sees organizationOrganization appears in invitee's dashboard☐
11Verify invitee has Member permissionsCan view but not delete forms☐

TC-TEAM-002: Role-Based Access Control​

FieldValue
ModulePermissions
PriorityP1 - High
Estimated Time15 minutes

Preconditions:

  • Team has members with different roles (Owner, Admin, Member, Viewer)

Test Steps:

StepActionExpected ResultStatus
1Log in as ViewerDashboard loads☐
2Navigate to FormsForms list visible☐
3Try to create new form"Create" button disabled or hidden☐
4Try to edit existing form"Edit" button disabled or hidden☐
5Verify can view form submissionsSubmissions readable☐
6Log in as MemberDashboard loads☐
7Create new formForm created successfully☐
8Try to delete form created by OwnerDelete fails or button hidden☐
9Log in as AdminDashboard loads☐
10Delete form created by MemberDelete successful☐
11Navigate to Team settingsTeam settings accessible☐
12Log in as OwnerDashboard loads☐
13Access Billing settingsBilling accessible (Admin cannot)☐

Field Type Testing Matrix​

Use this matrix to ensure all 30+ field types are tested:

Field TypeAdd to FormConfigureValidateSubmitView DataNotes
Short Text☐☐☐☐☐
Long Text☐☐☐☐☐
Email☐☐☐☐☐
Phone☐☐☐☐☐
URL☐☐☐☐☐
Number☐☐☐☐☐
Currency☐☐☐☐☐
Percentage☐☐☐☐☐
Date☐☐☐☐☐
Time☐☐☐☐☐
DateTime☐☐☐☐☐
Dropdown☐☐☐☐☐
Radio☐☐☐☐☐
Checkbox☐☐☐☐☐
Toggle☐☐☐☐☐
Rating☐☐☐☐☐
Slider☐☐☐☐☐
File Upload☐☐☐☐☐
Image Upload☐☐☐☐☐
Signature☐☐☐☐☐
Rich Text☐☐☐☐☐
Hidden☐☐☐☐☐
Computed☐☐☐☐☐
Address☐☐☐☐☐
Name (composite)☐☐☐☐☐
Matrix☐☐☐☐☐
Ranking☐☐☐☐☐
NPS☐☐☐☐☐
Legal/Consent☐☐☐☐☐
Section Header☐☐☐☐☐
Divider☐☐☐☐☐

Workflow Node Testing Matrix​

Node TypeAdd to CanvasConfigureConnectExecuteView LogsNotes
Triggers
Form Trigger☐☐☐☐☐
Webhook Trigger☐☐☐☐☐
Schedule Trigger☐☐☐☐☐
Manual Trigger☐☐☐☐☐
Logic
Condition☐☐☐☐☐
Switch☐☐☐☐☐
Loop☐☐☐☐☐
Delay☐☐☐☐☐
Data
Transform☐☐☐☐☐
Filter☐☐☐☐☐
Aggregate☐☐☐☐☐
Set Variable☐☐☐☐☐
MongoDB
Find☐☐☐☐☐
Insert☐☐☐☐☐
Update☐☐☐☐☐
Delete☐☐☐☐☐
Aggregate☐☐☐☐☐
Actions
Send Email☐☐☐☐☐
HTTP Request☐☐☐☐☐
Slack Message☐☐☐☐☐
AI
AI Generate☐☐☐☐☐
AI Classify☐☐☐☐☐
AI Extract☐☐☐☐☐

Testing Checklist Templates​

Pre-Release Checklist​

Use this checklist before any production release:

Critical Path (Must Pass):

  • User can sign up and create organization
  • User can create form with basic fields
  • User can publish form
  • End user can submit form
  • Admin can view submissions
  • Workflow triggers on form submission
  • Email notifications send correctly

Regression (Should Pass):

  • All 30+ field types render correctly
  • Conditional logic shows/hides fields
  • Validation errors display properly
  • Multi-page forms navigate correctly
  • File uploads complete successfully
  • Form themes apply correctly
  • Mobile responsive layout works

Integration (Should Pass):

  • MongoDB connections work
  • Webhook triggers fire
  • Scheduled workflows run
  • Slack integration sends messages
  • CSV/JSON export works

Browser Compatibility Checklist​

BrowserVersionFormsWorkflowsDataAI
ChromeLatest☐☐☐☐
ChromeLatest-1☐☐☐☐
FirefoxLatest☐☐☐☐
SafariLatest☐☐☐☐
EdgeLatest☐☐☐☐
Mobile SafariiOS 17☐☐☐☐
Mobile ChromeAndroid 14☐☐☐☐

Performance Checklist​

ScenarioTargetActualStatus
Form builder load time< 3s___s☐
Form preview load time< 2s___s☐
Form submission time< 1s___s☐
Workflow editor load time< 3s___s☐
Data browser query (1000 docs)< 2s___s☐
Dashboard initial load< 3s___s☐

Appendix​

Glossary​

TermDefinition
FormA collection of fields used to collect data from users
FieldAn individual input element in a form (text, dropdown, etc.)
WorkflowAn automated sequence of actions triggered by events
NodeA single step in a workflow (trigger, action, condition)
EdgeA connection between two nodes in a workflow
SubmissionData entered by a user when completing a form
Conditional LogicRules that show/hide fields based on other field values
TemplateA pre-built form or workflow configuration

Contact & Escalation​

RoleNameContactEscalate When
QA Lead[Name][email]Test blockers, environment issues
Dev Lead[Name][email]Critical bugs, technical questions
Product[Name][email]Requirements unclear, feature questions

Document generated for NetPad QA Team