Skip to content

QA Testing Plan: E-Signatures

This document covers QA test cases for the E-Signatures business app located at /business/apps/esignatures. The app supports creating signature requests with document and signer references, tracking request statuses (pending, signed, declined, cancelled, expired), and managing sent/received tabs.

RoutePurpose
/business/apps/esignaturesList view with Sent/Received tabs
/business/apps/esignatures/newCreate signature request form (superforms + createRequestSchema)
/business/apps/esignatures/[id]Request detail with cancel action
RouteActionMethodKey Fields
/business/apps/esignatures/newcreatePOSTdocument_id, signer_id, message (optional), expires_at (optional)
/business/apps/esignatures/[id]cancelPOST(none — uses route param id)

Test IDDescriptionPreconditionsStepsExpected ResultPriority
ESIG-001List page loads with sent and received requestsUser is logged in with existing requests1. Navigate to /business/apps/esignaturesPage renders with Sent tab active by default. Both sentRequests and receivedRequests data are loaded.P0
ESIG-002Sent tab displays correct countUser has sent requests1. View the Sent tabTab label shows “Sent ({count})” matching actual sent requests count.P1
ESIG-003Received tab displays correct countUser has received requests1. Click “Received” tabTab label shows “Received ({count})” matching actual received requests count.P1
ESIG-004Switch between Sent and Received tabsUser is logged in1. Click “Received” tab 2. Click “Sent” tabTab content toggles correctly. Active tab has primary styling.P0
ESIG-005Sent request links navigate to detailUser has sent requests1. Click a request in the Sent listNavigates to /business/apps/esignatures/{id}.P1
ESIG-006Received request links navigate to sign pageUser has received requests1. Click a request in the Received listNavigates to /sign/{id}.P1
ESIG-007Empty state for sent requestsUser has no sent requests1. View Sent tabEmpty state “No signature requests sent yet.” is shown with CTA “Send your first request”.P1
ESIG-008Empty state for received requestsUser has no received requests1. View Received tabEmpty state “No signature requests received.” is shown.P1
ESIG-009Unauthenticated user gets empty arraysUser is not logged in1. Navigate to /business/apps/esignaturesPage loads with empty sentRequests and receivedRequests. No crash.P1
ESIG-010Status badges render correct variantsRequests with various statuses exist1. View request listsigned = default, pending = secondary, declined/cancelled/expired = destructive, other = outline.P2
ESIG-011Message preview shown for received requestsReceived request has a message field1. View Received tabMessage text is shown in italics beneath the request info.P2
Test IDDescriptionPreconditionsStepsExpected ResultPriority
ESIG-020Create request with required fieldsUser is logged in, has valid document and signer IDs1. Navigate to /business/apps/esignatures/new 2. Fill document_id and signer_id 3. SubmitRequest is created. User is redirected to /business/apps/esignatures/{new_id}.P0
ESIG-021Create request with optional messageUser is logged in1. Fill required fields + message 2. SubmitRequest is created with message persisted.P1
ESIG-022Create request with optional expires_atUser is logged in1. Fill required fields + expires_at 2. SubmitRequest is created with expiration date persisted.P1
ESIG-023Validation: empty document_id rejectedUser is logged in1. Leave document_id blank 2. SubmitForm returns 400 with error “Document is required”.P0
ESIG-024Validation: empty signer_id rejectedUser is logged in1. Leave signer_id blank 2. SubmitForm returns 400 with error “Signer is required”.P0
ESIG-025Server error returns message to formUser is logged in, service throws1. Trigger server error during creationForm returns 500 with error message via sveltekit-superforms message.P1
ESIG-026Unauthenticated create returns 401User is not logged in1. POST to ?/createReturns 401 fail.P0
Test IDDescriptionPreconditionsStepsExpected ResultPriority
ESIG-030Load request detail pageUser is logged in, request exists1. Navigate to /business/apps/esignatures/{id}Request detail data loads successfully.P0
ESIG-031404 for non-existent requestUser is logged in1. Navigate to /business/apps/esignatures/{invalid_id}404 error “Signature request not found” is returned.P0
ESIG-032Cancel a pending requestUser is logged in, request is pending1. Submit the cancel actionRequest is cancelled. User is redirected to /business/apps/esignatures.P0
ESIG-033Cancel action requires authenticationUser is not logged in1. POST to ?/cancelReturns 401 fail.P1
ESIG-034Cancel action handles server errorUser is logged in, service throws1. Trigger server error during cancellationReturns 500 with error message.P1
Test IDDescriptionPreconditionsStepsExpected ResultPriority
ESIG-040Signer can view received request detailUser is a signer on a request1. Navigate to /sign/{id} from received tabSigning page loads with document details.P0
ESIG-041Signer completes signingUser is on the signing page1. Complete the signing actionRequest status updates to “signed”. Audit trail is created.P0
ESIG-042Signer declines requestUser is on the signing page1. Decline the signature requestRequest status updates to “declined”.P1
ESIG-043Expired request cannot be signedRequest has passed expires_at1. Attempt to sign an expired requestAction is blocked. Status shows “expired”.P1