iDARMS Website — Forms and Auth Handoffs Acceptance Tests¶
Test series: WEB-09A, WEB-10, WEB-11
Objective: Validate public-site form validation and submit behaviour for Contact and Objection (via the site /api/contact proxy), plus the How to Register → Ratepayer Portal registration handoff.
Execution ownership¶
Recommended owners: Communications/web content owner; Customer Service observer; UX/visual reviewer
Prerequisites: Approved website build/URL; desktop Chrome at 1440×900; approved UAT fixtures only (see below); ability to open a new browser tab for the portal handoff; sandbox contact backend reachable (https://iprssandbox.cisstaging.com/api/web/contact).
Execution control
Use approved UAT contact/objection data only. Mask personal information in notes. This module does not embed screenshots — record Pass/Fail and tester notes only. Contact and Objection POST to the Next.js route /api/contact, which proxies to the sandbox web contact API. On success the UI shows a success message and clears the form; on failure it shows an error and keeps field values. Do not mark “message received / actioned by ops” as PASS unless Customer Service confirms receipt outside this module. recaptcha_token is sent as an empty string (no widget on the marketing site).
Feature overview¶
The public website does not host a login or registration form. This module covers:
- Start Registration handoff (
WEB-09A) —/HowtoRegister→ Ratepayer Portal/auth/registerin a new tab; account creation continues under RPP-AUTH-05. - Contact form (
WEB-10) —/Contact_usrequired/invalid/valid submit workflows forSend Message. - Objection / difficulties form (
WEB-11) —/HowtoRegisterrequired/invalid/valid submit workflows forSubmit Objection.
Approved UAT fixtures (non-production)¶
| Field | Value |
|---|---|
| Full name | QA Tester |
| Email (valid) | qa-tester@internal.local |
| Email (invalid — custom rule) | qa-tester@invalid (no dot in domain; may still satisfy HTML5) |
| Phone (valid digits) | 233241234567 (digit-only; passes /^\+?[1-9]\d{1,14}$/; NumberInput cannot type +) |
| Company | UAT Internal |
| Property ID | PROP-UAT-0001 |
| Message / description | This is controlled UAT placeholder feedback for the public website contact workflow. No personal data. |
| Password (portal only) | Password123! — Ratepayer Portal cases only; not used on the marketing site |
Contact field matrix (/Contact_us)¶
| Label | Required | Client rules | Notes |
|---|---|---|---|
| Full Name * | Yes | Non-empty trim | Error: Full Name is required |
| Email Address * | Yes | Non-empty; /^[^\s@]+@[^\s@]+\.[^\s@]+$/ |
Also type="email". Custom: Invalid email address |
| Phone Number * | Yes | Non-empty; /^\+?[1-9]\d{1,14}$/ |
Uses NumberInput (type="number") — cannot enter +; use digit-only fixture (WEB-FORM-02) |
| Company / Organization | No | None | Use UAT Internal |
| Inquiry Type * | Yes | One of: General Inquiry, Sales, Support, Partnership, Project Discussion, Other | Error: Inquiry Type is required |
| Message * | Yes | Non-empty; ≥ 10 characters | Error: Message is required / Message must be at least 10 characters |
Objection field matrix (/HowtoRegister)¶
| Label | Required | Client rules | Notes |
|---|---|---|---|
| Full Name * | Yes | Non-empty | |
| Email Address * | Yes | Same email regex as Contact | |
| Phone Number * | Yes | Same E.164-style rule as Contact | Digit-only fixture; NumberInput cannot enter + (WEB-FORM-02) |
| Property ID * | Yes | Non-empty trim | Error: Property ID is required |
| Objection Category * | Yes | Must select a real category | Property Valuation, Billing Dispute, Service Quality, Technical Issue, Other |
| Detailed Description * | Yes | ≥ 10 characters |
Auth entry points (not local forms)¶
| CTA | Where | Expected destination | UAT case |
|---|---|---|---|
LOGIN/REGISTER |
Dual header (all pages) | Portal root https://ratepayer.idarms.cisstaging.com/ (target="_blank") |
WEB-08 / WEB-09; auth under RPP |
Register Now!!! |
Home hero | Portal root (same host) | WEB-09 |
| Floating Register Now | FAQ chat companion (after hero scroll) | Portal root (same host) | Note with chrome; not a separate form case |
Start Registration |
/HowtoRegister empowering card |
https://ratepayer.idarms.cisstaging.com/auth/register |
WEB-09A → RPP-AUTH-05 |
Track Now / Login to Access |
/HowtoRegister cards |
Not wired in current build | WEB-FORM-04 |
Coverage summary¶
| Test ID | Feature | Scenario | Priority |
|---|---|---|---|
| WEB-09A | Auth handoff | How to Register → portal registration | Critical |
| WEB-10 | Forms | Contact form validation | High |
| WEB-11 | Forms | Objection form validation | High |
Implementation observations requiring UAT confirmation¶
| Observation from implementation | Required validation |
|---|---|
Contact/Objection submit via POST /api/contact → sandbox iprssandbox.cisstaging.com/api/web/contact; success UI messages then clear fields; failure shows an error banner. |
Confirmed under WEB-10 / WEB-11 (PASS). Ops inbox confirmation remains out of band. |
Phone is required on both forms but uses NumberInput (type="number"), so + cannot be typed while the regex allows an optional +. |
Use digit-only phone fixture; blank phone must show Phone Number is required (WEB-FORM-02). |
recaptcha_token is always "" (no reCAPTCHA widget). |
Note only; do not fail solely for missing widget unless product requires it. |
| Track Now / Login to Access CTAs are unwired. | Fail only if cycle scope requires those destinations (WEB-FORM-04). |
Header LOGIN/REGISTER opens portal root, not /auth/register. |
By design for login entry; registration path is Start Registration → /auth/register (WEB-FORM-05). |
WEB-09A — How to Register → portal registration handoff¶
Feature overview¶
On /HowtoRegister, Start Registration opens the Ratepayer Portal registration page in a new tab. Website UAT proves the handoff URL and new-tab behaviour only; account creation, OTP/email verification, and login belong to Ratepayer Portal Authentication (RPP-AUTH-05–RPP-AUTH-16).
Preconditions
/HowtoRegisteravailable at 1440×900.- Ability to open and inspect a new browser tab (mask session cookies).
| Field | Value |
|---|---|
| Priority | Critical |
| Test action | On the empowering cards, click Start Registration. Confirm a new browser tab opens to the Ratepayer Portal registration page. Do not complete portal registration in this case — hand off to RPP-AUTH-05. |
| Expected result | Destination is exactly https://ratepayer.idarms.cisstaging.com/auth/register (or the approved cycle-equivalent host with path /auth/register). Link uses target="_blank" and rel="noreferrer". HowtoRegister page remains open in the original tab. |
| Execution result | PASS |
| Evidence reference | None (image evidence removed; results recorded in tester notes) |
| Defect reference | None |
Test scenarios
| Scenario | Test steps | Expected result | Pass/Fail | Remarks |
|---|---|---|---|---|
| Start Registration new-tab handoff | 1. Open /HowtoRegister at 1440×900.2. Locate Start Registration. 3. Click once. 4. Inspect the new tab URL and original tab. |
New tab opens https://ratepayer.idarms.cisstaging.com/auth/register; marketing tab remains open; link uses target="_blank" and rel="noreferrer". |
PASS |
Confirmed URL. Continue account creation under RPP-AUTH-05. |
| Unwired companion CTAs | 1. Observe Track Now and Login to Access. | Record as known gap if destinations are required by cycle scope; otherwise note as out of scope. | PASS |
Noted known gap WEB-FORM-04; out of scope for this handoff case. |
Scope boundary
Website UAT proves the handoff URL and new-tab behaviour only. Portal account creation and login are Ratepayer Portal Authentication cases.
Tester notes
Manual cycle 2026-08-03. Desktop Chrome. Start Registration → https://ratepayer.idarms.cisstaging.com/auth/register in new tab; HowtoRegister remained open. No image attached — PASS.
WEB-10 — Contact form validation¶
Feature overview¶
The Contact form on /Contact_us validates required fields (including phone) and email format client-side, then POSTs to /api/contact. Success shows Your message has been sent successfully. and clears the form; failure shows an error message.
Preconditions
/Contact_usavailable with an empty form.- Approved fixtures from the table above (include digit-only phone).
- Sandbox contact API reachable from the website host.
| Field | Value |
|---|---|
| Priority | High |
| Test action | Empty → required blanks (including phone) → invalid email (qa-tester@invalid) → filled fixtures with phone 233241234567 → submit. |
| Expected result | Required errors: Full Name, Email, Phone Number, Inquiry Type, Message. Invalid email: Invalid email address. Valid submit shows success message, clears fields, and returns HTTP success from /api/contact (proxy to sandbox). |
| Execution result | PASS |
| Evidence reference | None (image evidence removed; results recorded in tester notes) |
| Defect reference | None (phone via NumberInput — digit-only fixture WEB-FORM-02) |
Test scenarios
| Scenario | Test steps | Expected result | Pass/Fail | Remarks |
|---|---|---|---|---|
| Required blanks | 1. Open empty form → evidence contact_default.png.2. Click Send Message with all fields empty. |
Red field errors for Name, Email, Phone, Inquiry Type, Message; form does not clear. | PASS |
Phone required. |
| Invalid email | 1. Fill Name, Phone (233241234567), Inquiry Type (Support), Message (≥10 chars).2. Enter qa-tester@invalid.3. Submit. |
Custom error Invalid email address (or documented HTML5 tooltip). |
PASS |
|
| Controlled submit | 1. Fill valid fixtures (Name QA Tester, email qa-tester@internal.local, phone 233241234567, company UAT Internal, Inquiry Type, placeholder message).2. Capture filled state → contact_filled.png.3. Click Send Message. |
Success text Your message has been sent successfully.; fields clear; Network shows POST /api/contact → success. |
PASS |
Ops receipt out of band. |
Tester notes
Manual cycle 2026-08-10. Contact form working end-to-end via /api/contact with success UI — PASS.
WEB-11 — How to Register objection form¶
Feature overview¶
The objection / difficulties form on /HowtoRegister validates Name, Email, Phone, Property ID, Category, and Description client-side, then POSTs to /api/contact. Success shows Your objection has been submitted successfully. and clears the form; failure shows an error message.
Preconditions
/HowtoRegisteravailable with the objection form visible.- Approved fixtures including phone
233241234567,PROP-UAT-0001, and category Billing Dispute (or another real option). - Sandbox contact API reachable from the website host.
| Field | Value |
|---|---|
| Priority | High |
| Test action | Default → required errors (including phone + Property ID) → invalid email → filled → submit. |
| Expected result | Required errors for Name, Email, Phone, Property ID, Category, Description. Valid submit shows success message, clears fields, and returns HTTP success from /api/contact. |
| Execution result | PASS |
| Evidence reference | None (image evidence removed; results recorded in tester notes) |
| Defect reference | None (phone via NumberInput — digit-only fixture WEB-FORM-02) |
Test scenarios
| Scenario | Test steps | Expected result | Pass/Fail | Remarks |
|---|---|---|---|---|
| Required blanks | 1. Open empty objection form → objection_default.png.2. Click Submit Objection with required fields empty. |
Errors for Name, Email, Phone, Property ID, Category, Description; form does not clear. | PASS |
Phone and Property ID required. |
| Invalid email | 1. Fill Name, Phone, Property ID, Category, Description (≥10 chars). 2. Enter qa-tester@invalid.3. Submit. |
Custom Invalid email address (or documented HTML5 error). |
PASS |
|
| Controlled submit | 1. Fill Name QA Tester, email qa-tester@internal.local, phone 233241234567, Property ID PROP-UAT-0001, Category Billing Dispute, placeholder description.2. Capture filled → objection_filled.png.3. Click Submit Objection. |
Success text Your objection has been submitted successfully.; fields clear; Network shows POST /api/contact → success. |
PASS |
Ops receipt out of band. |
Tester notes
Manual cycle 2026-08-10. Objection form working end-to-end via /api/contact with success UI — PASS.