FUNNEL TEST-DATA PLAN Fictional furniture-repair enquiry example plus reusable case template STATUS: PLANNING ONLY. NO CASE HAS BEEN RUN. These are editorial requirements, not observed CFAI behavior or product features. Use invented details only. No customer exports, credentials or real private records. Fixture addresses under funnel.example are reserved documentation examples, not working inboxes. Their use does not disable notifications or other side effects. Before an actual check, verify the permitted environment, destinations and outbound behavior. Record any substitution with a controlled test address if required. Do not weaken production validation to accept an example fixture. ENVIRONMENT RECORD — COMPLETE BEFORE A PERMITTED RUN Page and version: Environment and exact permitted destination: Person responsible for the environment: Allowed actions and existing authority: Outbound email/notification/other-workflow behavior verified: Controlled record destination and access: Input substitutions and reason: Agreed test-record cleanup method: Date and tester: Open dependencies: FICTIONAL REQUIREMENTS Reply email: required, correctly formed address in this example. Service: Chair repair / Table repair / Not sure. Required choice. Description: required short explanation. Timing: This month / Next month / Not sure. Optional. Saved message: Enquiry saved for review. Show only after save. An enquiry is not a booking, quote or evidence of email delivery. Repeat rule: repeated activation of one attempt produces one enquiry. A later distinct enquiry may produce another record using the same email. This rule must be adapted, implemented and verified for the actual project. Each case has its own baseline. Counts refer only to controlled case records. Case IDs belong in test notes; no hidden form field is assumed. CASE F01 Case type: normal Starting count: 0 case records Setup: No earlier record for this case. Reply email: case.normal@funnel.example Service: Chair repair Description: Loose front leg on wooden chair. Timing: This month Action: Activate submission once. Expected state: 1 new enquiry preserving all input values; Enquiry saved for review shown only after save. Expected case count: 0 -> 1 Evidence to collect: Visitor result plus values and count at the intended controlled record destination. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: CASE F02 Case type: unknown Starting count: 0 case records Setup: No earlier record for this case. Reply email: case.unknown@funnel.example Service: Not sure Description: Need help deciding whether a stool can be repaired. Timing: Not sure Action: Activate submission once. Expected state: 1 new enquiry preserving both Not sure choices; no invented service or timing; saved-for-review message. Expected case count: 0 -> 1 Evidence to collect: Visitor result plus saved choices and case count at the intended destination. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: CASE F03 Case type: invalid Starting count: 0 case records Setup: No earlier record for this case. Email deliberately lacks @. Reply email: case.invalid.funnel.example Service: Chair repair Description: Loose front leg on wooden chair. Timing: This month Action: Attempt submission once in the permitted environment. Expected state: Email correction message; other entered values remain; no saved confirmation and no new enquiry. Expected case count: 0 -> 0 Evidence to collect: Error text and correction path, preserved values and absence of a new case record. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: CASE F04 Case type: missing_required Starting count: 0 case records Setup: No earlier record for this case. Leave description empty. Reply email: case.missing@funnel.example Service: Chair repair Description: [EMPTY FIELD - do not enter these words] Timing: This month Action: Attempt submission once in the permitted environment. Expected state: Missing-description explanation and correction path; other values remain; no saved confirmation and no new enquiry. Expected case count: 0 -> 0 Evidence to collect: Error text and correction path, preserved values and absence of a new case record. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: CASE F05 Case type: repeated_attempt Starting count: 0 case records Setup: No earlier record for this case. Same attempt is activated twice. Reply email: case.repeat@funnel.example Service: Chair repair Description: Loose front leg on wooden chair. Timing: This month Action: Activate the same submission twice in quick succession in the permitted environment. Expected state: 1 enquiry preserving inputs after the attempt settles; record observed interface behavior separately. Expected case count: 0 -> 1 Evidence to collect: Record count and stored values after settling; interface evidence alone is insufficient. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: CASE F06 Case type: new_request_same_email Starting count: 1 case record Setup: Independently prepare one earlier fictional record: case.return@funnel.example; Chair repair; Loose front leg on wooden chair.; This month. Confirm that baseline. Do not rely on another case. Reply email: case.return@funnel.example Service: Table repair Description: Wobbly table base. Timing: Next month Action: Start a new submission attempt and submit the new table-repair values once. Expected state: 2 total case records: earlier chair enquiry unchanged plus the new table enquiry. Expected case count: 1 -> 2 Evidence to collect: Both records and their distinct values; email equality alone must not suppress the new enquiry under this chosen rule. Actual result: NOT RUN Actual count: Evidence location: NONE — plan only Run date/version/environment: Status: NOT RUN Blocked reason or next action: Cleanup record: BLANK CASE TEMPLATE — COPY FOR EACH NEW CASE Case ID: Case type: Requirement being checked: Starting count and state: Exact setup within this case: Complete fictional inputs: Action: Expected visitor result: Expected stored result and count: Expected later effects, if included: Evidence needed for each result: Actual result: Actual count: Evidence location: Run date/version/environment: Status: NOT RUN / BLOCKED / PASS / FAIL Blocked reason or next action: Cleanup record: REVIEW NOTES For errors, record the affected field, useful correction and preserved input. Include relevant keyboard reachability and visible focus observations. A focused form check is not a complete accessibility or security evaluation. Browser rejection does not prove destination-side validation. Keep observation separate from the planned result. Missing destination access leaves stored-record checks blocked; a visible success message is not a substitute. Make additional cases for actual requirements such as failed saves or interrupted responses. This pack is not an exhaustive test plan or release approval. Article source and current limitations: Use this worksheet with Prepare test cases for a funnel without using real customer data. Reserved names: https://www.rfc-editor.org/rfc/rfc6761.html#section-6.5 Form messages: https://www.w3.org/WAI/tutorials/forms/notifications/ Form validation: https://www.w3.org/WAI/tutorials/forms/validation/ Initial accessibility checks: https://www.w3.org/WAI/test-evaluate/preliminary/ Independent cases: https://playwright.dev/docs/best-practices#make-tests-as-isolated-as-possible CFAI access and workflow: https://www.clickfunnels.ai/agents