πŸ§ͺ Wedding Loco β€” Pair Test Plan

Live pair-programming QA for the Wedding Loco platform β€” the Ceremony chapel and Reception DJ apps couples run on the venue screens. Two testers β€” the agent (AS Dev) and Mike β€” execute the same steps with their own shows and performances, compare results, and file GitHub issues for every mismatch. Shared protocol and the other brands live on the FunFirst test plan index.

Environments & data A Β· Show Designer B Β· Performance console C Β· Screens & preview D Β· Sites, routing & isolation E Β· Hardening Results & issue log

Environments & test data

ThingValue
Launch siteweddingloco.com β€” standalone static site (wedding-elegant: neon pink + champagne gold; www 308s to apex)
Couple appapp.weddingloco.com β€” the ceremony/reception app (set lists, Console, Designer, Player). / β†’ /wedding-loco hub; clean segments /ceremony and /reception
Backend ⚠Verify live: the app bundle currently reads Convex deployment happy-otter-123, while project docs say the Wedding shows live on surroundshow (upbeat-capybara-284). D1 pins which deployment actually holds the wedding data β€” reconcile docs or env after the session.
Seederseed.weddingShows (run it on the deployment D1 proves the app reads)
Seeded showsWedding Ceremony β€” Chapel (22 scenes) Β· Wedding Reception β€” DJ (26 scenes), each with a template performance
Test data markerCreate only PairTest <who> …-titled shows/performances. Never re-cue the seeded template shows β€” cue copies.

Config data β€” the two setlist locos

Wedding CeremonyWedding Reception
Slugwedding-ceremony (clean: /ceremony)wedding-reception (clean: /reception)
Modesetlistsetlist
Nominal teamsBride vs GroomBride vs Groom
Round card12 rounds β€” Intro, Photo, Theme, Aisle, SpeechΓ—4, Aisle, Dance, Photo, Outro (none scored)14 rounds β€” Set, Intro, Dance, Set, Speech, Dance, Set, Game, Set, Speech, Game, Set, Dance, Outro (none scored)
Walk order (walls)Arrival β†’ First Look β†’ Theme Moment β†’ Processional β†’ Vows β†’ Readings β†’ Ring Exchange β†’ Pronouncement β†’ Recessional β†’ Chapel First Dance β†’ Flower Wall Photos β†’ Send to ReceptionCocktail Hour β†’ Grand Entrance β†’ First Dance β†’ Dinner Mix β†’ Toasts β†’ Parent Dances β†’ Dance Floor Open β†’ Shoe Game β†’ Peak Mix β†’ Cake Cutting β†’ Bouquet and Garter β†’ Late Mix β†’ Last Dance β†’ Sparkler Send-off
Theme packs (Theme round)Romantic Flowers, Elvis, Lady Elvis, MARRY-OKE, Enchanted Forest, Vintage Vegas Neon, Candlelight, Under the Sea, Van Goghβ€”

Flow A Β· Show Designer

A1BothSign in on app.weddingloco.com, open the designer, select Wedding Ceremony β€” Chapel.
Expected: 22 walls render (Arrival β†’ Send to Reception), val-* art/video assets load, durations sensible for a live ceremony (minutes, not seconds), no console errors.
A2AgentOpen Wedding Reception β€” DJ; verify 26 walls and the DJ-night ordering (Cocktail Hour β†’ Sparkler Send-off). MikeSame, plus confirm no ceremony walls (Vows, Rings) appear in the reception show.
Expected: both shows render their own assets; zero ceremony↔reception wall bleed.
A3AgentCreate show PairTest Agent Chapel β€” <date> tagged weddingceremony, left draft. MikeCreate PairTest Mike Chapel β€” <date>.
Expected: show appears in the picker; the preview wall paints nothing for it while draft.
A4BothIn your show, build one theme block: a Theme Moment wall (wrap-around video), a Vows wall (still + soft loop), a Ring Exchange wall, and a Photo overlay scene.
Expected: scenes save in order; Photo registers as overlay-kind; each attaches still/video effects cleanly.
A5AgentTheme-pack swap drill: in the ceremony template's catalog, confirm the nine immersive themes (Elvis, MARRY-OKE, Van Gogh, …) are assignable as Theme-round games β€” do NOT mutate the seeded show; record the picker behavior.
Expected: theme catalog lists all nine; assignment preview works without touching the seeded template (if the UI only allows it by mutating the seeded show, that's a finding).
A6BothDuplicate the Vows scene, rename the copy, delete it, reopen.
Expected: real copy, clean delete, no orphans in list or timeline.

Flow B Β· Performance console (setlist Γ—2)

B1BothOpen the Ceremony performances list; find Wedding Ceremony β€” Template. Open the create-performance modal.
Expected: modal reflects setlist mode; template performance present with the 12-round card.
B2AgentCreate PairTest Agent Ceremony bound to your PairTest Agent Chapel show; walk Arrival β†’ Theme Moment β†’ Processional β†’ Vows with Begin Segment. MikeCreate PairTest Mike Ceremony bound to the seeded Chapel show; walk his first four segments.
Expected: each Begin Segment advances in order; the wall follows every step without refresh; segment titles match the walk order.
B3BothSwitch to the Reception side: create PairTest <who> Reception bound to the seeded Wedding Reception β€” DJ show; verify the 14-round card (Set/Intro/Dance/Set/Speech/Dance/Set/Game/Set/Speech/Game/Set/Dance/Outro, nothing scored).
Expected: round list matches the template contract; scoreboard not prominent (setlist mode).
B4BothWalk the reception: Cocktail Hour β†’ Grand Entrance β†’ First Dance β†’ Toasts β†’ Shoe Game (cue Game Instructions).
Expected: setlist advances cleanly; the game button cues the designed scene by title.
B5AgentThe handoff: end the Ceremony run at Send to Reception, then start the Reception run at Cocktail Hour β€” the product's signature transition.
Expected: both performances coexist (ceremony ended, reception live); the wall switches without stale ceremony visuals; record exact handoff behavior (undocumented).
B6MikeResume test: cue into Reception Peak Mix, close the browser, reopen a minute later.
Expected: console restores the current segment β€” a wedding night outlives any single device. Record exact behavior if it resets.
B7BothReorder drill: move Anniversary Dance / Open Floor Set (the drop-in interludes) into different slots on your performance.
Expected: reordering doesn't break Begin Segment flow or the wall.

Flow C Β· Screens & preview wall

C1BothOpen the preview wall while your Ceremony performance is live; find the wedding row + scene strip.
Expected: chapel walls paint; strip shows the current scene; row marked β€” LIVE.
C2AgentCue the ceremony-specific scenes in sequence: Theme Moment (wrap-around), Processional, Pronouncement, Photo overlay.
Expected: wrap-around walls paint all panels; Photo composites over the wall; player matches.
C3BothOpen one screen full-bleed and the player in a second window (Mike: on the venue TV / his phone). Cue First Dance.
Expected: wall, screen page, and player react together; readable from across a reception hall.
C4AgentDraft gate: set your PairTest show back to draft, bind + go live, cue a scene.
Expected: wall refuses to paint the draft show β€” fallback card only.
C5Agent390px viewport + 1080p pass: wall, player, one screen page.
Expected: usable one-handed on a phone; no overflow at 1080p.

Flow D Β· Sites, routing & isolation

D1AgentDeployment pin (do this first): open app.weddingloco.com, read the Convex URL from the page's client bundle, and check which deployment holds the seeded Chapel/DJ shows (dashboard data browse).
Expected: record the deployment (bundle currently reads happy-otter-123; docs say upbeat-capybara-284). If docs and reality disagree, file the doc/env fix β€” every later step depends on this.
D2AgentRouting sweep on app.weddingloco.com: / serves the wedding hub; /ceremony and /reception serve their apps; legacy /wedding-loco 308s to /; legacy /wedding-ceremony//wedding-reception 308 to the clean segments.
Expected: every redirect preserves the query string; address bar ends on clean URLs.
D3BothLoad weddingloco.com fresh: hero, pink+gold accents, CTA to the app.
Expected: static launch site renders; www 308s to apex; CTA lands on app.weddingloco.com.
D4BothCouple isolation: sign in as yourselves (two accounts) and confirm show/performance pickers only surface your own PairTest data plus the shared seeded templates β€” not each other's drafts mid-edit.
Expected: drafts are private to their creator; template shows shared; any cross-couple leak is a critical finding (real weddings share this deployment).
D5AgentSign out; as a visitor open /ceremony, /reception, and the designer.
Expected: marketing surfaces render; engine surfaces gate to sign-in; no console actions reachable unsigned.

Flow E Β· Hardening

E1AgentRe-run seed.weddingShows on the deployment D1 pinned.
Expected: inserted = 0; Chapel + DJ shows and template performances update in place via sourceKey; no duplicates in the couple-facing pickers.
E2AgentDouble-cue race during a live ceremony segment (Theme Moment vs Processional).
Expected: undocumented β€” record wall behavior (last-write-wins? flicker? stuck overlay?).
E3BothThrottle to Slow 3G, load console + wall.
Expected: loading states render, never blank; normal once data arrives. (Wedding venues have congested Wi-Fi β€” this matters.)

Results & issue log

"Match" = agent and Mike saw the same behavior. Every ⚠/βœ– row needs an issue link: [pair-test FLOW<STEP>][wedding] … in microspaces/linkall, label pair-test.

StepAgentMikeMatchIssueNotes
A122 chapel walls
A226 DJ walls, no bleed
A3draft invisible on wall
A4theme block build
A59 theme packs assignable
A6
B1setlist modal
B2ceremony walk
B314-round card
B4reception walk
B5handoff undocumented
B6resume after close
B7drop-in interludes
C1
C2wrap-around + overlays
C3hall-distance legibility
C4draft gating
C5phone + 1080p
D1⚠ deployment pin β€” do first
D2308s preserve query
D3launch site + CTA
D4couple isolation β€” critical
D5auth gate
E1idempotency on pinned deployment
E2undocumented
E3venue Wi-Fi

Session cleanup