Skip to content

Domains - QA Test Plan

The Custom Domains app lets users connect their own domains to biolinks and shortlinks. It handles DNS verification, SSL certificate provisioning, and target app routing. Routes are under /business/apps/domains/.

  • pending — DNS records not yet verified
  • verified — DNS CNAME record confirmed
  • failed — DNS verification failed
  • provisioning — SSL certificate being issued
  • active — SSL certificate active
  • failed — SSL provisioning failed
  • biolinks — Route to Bio Links
  • shortlinks — Route to Short Links
  • Empty/Any — No specific target

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-001Domains page loadsUser is logged inNavigate to /business/apps/domainsPage shows header, “Add Domain” button, Settings nav card, and domain listP0
DM-002Domain list displays correctlyDomains existView domain listEach row shows domain name, target app (if set), default star icon (if default), verification status badge, and SSL status badgeP0
DM-003Verification status badges renderDomains with various statusesView listVerified = green with check icon, Pending = yellow with clock icon, Failed = red with X iconP1
DM-004SSL status badges renderDomains with various SSL statesView listActive = green, Provisioning = yellow, Failed = redP1
DM-005Default domain shows star iconA domain is set as defaultView listStar icon appears next to default domain nameP1
DM-006Empty state when no domainsNo domains existView page”No custom domains yet” message shownP1
DM-007Domain row links to detailDomains existClick on a domain rowNavigates to /business/apps/domains/{id}P0
DM-008Settings nav card links correctlyUser is logged inClick “Settings” cardNavigates to /business/apps/domains/settingsP2

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-010Toggle add domain formUser is logged inClick “Add Domain” buttonForm card appears with Domain input, Target App dropdown, and Add buttonP0
DM-011Add domain with valid inputUser is logged in1. Enter “links.mybrand.com” 2. Select target app “Bio Links” 3. Click “Add”Domain is added; success toast “Domain added!”; form closes; list refreshesP0
DM-012Add domain without target appUser is logged inEnter domain, leave target as “Any”, submitDomain added with no specific target appP1
DM-013Add domain - domain requiredUser is logged inLeave domain field empty, click “Add”Validation error on domain fieldP0
DM-014Add domain with biolinks targetUser is logged inEnter domain, select “Bio Links”, submitDomain created with target_app: "biolinks"P0
DM-015Add domain with shortlinks targetUser is logged inEnter domain, select “Short Links”, submitDomain created with target_app: "shortlinks"P0
DM-016Add domain shows loading stateUser submits formObserve Add buttonSpinner appears; button disabled during requestP2
DM-017Add domain server error shows toastServer returns error (e.g., duplicate domain)Submit form (simulated error)Error toast with server error messageP1

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-020Detail page loads for ownerDomain exists, user is ownerNavigate to /business/apps/domains/{id}Page shows domain name, target app, DNS setup instructions, CNAME value with copy button, verification status, SSL status, and action buttonsP0
DM-021DNS instructions display CNAME valueDomain loadedView DNS Setup sectionCNAME record value shown in monospace code block with copy buttonP0
DM-022Copy CNAME value to clipboardDetail page loadedClick copy button next to CNAME valueValue copied to clipboard; success toast “Copied to clipboard!”P1
DM-023Verification and SSL statuses displayDomain loadedView Status sectionVerification status and SSL status shown in two-column grid with colored badgesP0
DM-024Default domain indicatorDomain is set as defaultView detail pageStar icon with “Default domain” text displayedP1

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-030Trigger DNS verificationDomain existsClick “Verify Now” buttonVerification check initiated; success toast; status may update to verified or remain pendingP0
DM-031Verification success updates statusDNS records are correctly configuredClick “Verify Now”Verification status changes to verified with green badgeP0
DM-032Verification failure shows statusDNS records are misconfiguredClick “Verify Now”Verification status remains pending or changes to failedP1
DM-033SSL provisioning after verificationDomain just verifiedObserve SSL statusSSL status transitions to provisioning and eventually activeP1

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-040Set domain as defaultDomain is not defaultClick “Set as Default” buttonDomain becomes default; success toast; star indicator appearsP0
DM-041Set as Default hidden for default domainDomain is already defaultView action buttons”Set as Default” button is not renderedP1
DM-042Remove domain with confirmationDomain existsClick “Remove Domain” button, confirm browser dialogDomain is deleted; user redirected to /business/apps/domainsP0
DM-043Cancel remove domainRemove confirmation shownClick cancel in browser confirm dialogDomain remains; user stays on detail pageP2
DM-044Remove domain server errorServer error on removalClick “Remove Domain” (simulated failure)500 error returned with error messageP1

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-050Unauthenticated user gets empty dataUser not logged inNavigate to domains listEmpty domains array returned; no server errorP1
DM-051Non-owner gets 403 on detailLogged in as different userNavigate to another user’s domain403 error thrownP0
DM-052Non-existent domain returns 404Invalid domain IDNavigate to /business/apps/domains/nonexistent404 “Domain not found” errorP1
DM-053Unauthenticated user gets 401 on actionsNot logged inSubmit verify/set-default/remove action401 error thrownP0

IDDescriptionPreconditionsStepsExpected ResultPriority
DM-060Settings page loadsUser is logged inNavigate to /business/apps/domains/settingsPage renders with header and “Domain settings coming soon” placeholderP2
DM-061Back button navigates to domains listUser is on settings pageClick back arrowNavigates to /business/apps/domainsP2