Add invite and promo landing pages - #27
Conversation
|
Fixes RealUnitCH/intern#3 Store badges and Play Store install referrer added on /invite and /promo. |
5d539ce to
ed37087
Compare
4d79bc0 to
7b307aa
Compare
EN: Escape reflected referral codes at the crawler HTML text sinks and use a function replacer so a \$ in the code is never a backreference; treat a plain-text "Cannot GET" 404 as unavailable (read the body as text, not JSON); render the promo action text verbatim (do not trim the displayed value); drop the Android debug-keystore fingerprint from the production Digital Asset Links; widen the English visual matrix to tablet and mobile with regenerated baselines. DE: Reflektierte Referral-Codes an den Crawler-HTML-Textstellen escapen und per Funktions-Replacer einsetzen (ein \$ im Code ist nie mehr eine Backreference); einen Klartext-404 "Cannot GET" als unavailable behandeln (Body als Text statt JSON lesen); Promo-Aktionstext 1:1 anzeigen (Anzeige nicht trimmen); den Android-Debug-Keystore-Fingerprint aus den Prod-assetlinks entfernen; die englische Visual-Matrix auf Tablet und Mobile erweitern (Baselines neu erzeugt). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U4wDi8T8yUes9MfXPzqHcU
EN: Extend the loading/invalid/unavailable English invite and promo views to tablet-chromium and mobile-safari (completing the language x device x state matrix) and add the regenerated baselines. DE: Die englischen loading/invalid/unavailable-Views fuer Invite und Promo auf tablet-chromium und mobile-safari erweitern (Matrix Sprache x Geraet x Zustand vollstaendig) und die neu erzeugten Baselines ergaenzen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U4wDi8T8yUes9MfXPzqHcU
|
EN: DE: DetailsTwo independent review lanes (cross-model), run to zero findings over 3 passes:
Tests: vitest 147/147 with 100% coverage on all four metrics; the docker Playwright visual gate reports 140/140 view×project baselines and all visual tests pass. CI at the final head: Quality green, Visual regression green. Mergeable: MERGEABLE; no open review threads. |
|
Superseded by #30, identical content on a branch with clean, signed, tool-neutral commits (git-konventionen). Closing so the replacement is the single open PR. |
Summary / Zusammenfassung
EN. Invite and promo landing pages on realunit.app (Offerte Entwurf 3, point 3): public lookup, store badges, copy, Universal Links / App Links, Play Install Referrer. Language × device × state visuals are covered; no further permutations.
DE. Einladungs- und Promo-Landings auf realunit.app (Offerte Entwurf 3, Ziff. 3): öffentlicher Lookup, Store-Badges, Kopieren, Universal Links / App Links, Play Install Referrer. Sprache × Gerät × Zustand visuell abgedeckt; keine weiteren Permutationen.
Scope, measurements, blockers
Scope
/invite/{code}personal greeting from public lookup;/promo/{code}campaign text (promo Aktionstext 1:1).GET /v1/realunit/referral/code/:codeconsumes backendinviterName/inviteeName(CORS onrealunit.app). NestJS unmountedCannot GETis unavailable, not invalid..well-known/). Extra AASA alias/apple-app-site-associationas HTTP 200 (www included).7F:8B:14:54:E2:91:E9:DB:56:21:69:0A:64:23:7C:34:80:78:C6:5B:B4:86:31:CA:02:9D:14:20:E6:3C:7B:40(O=DFX AG,CN=Konstantin Ullrich).tests/site.spec.mjs+tests/behavior.spec.mjs+tests/visual.spec.mjs. Visual matrix intests/pages.mjs(invite/promo × ok/loading/invalid/unavailable/spent/missing-code/fallback × DE/EN × desktop/tablet/iOS/Android as applicable). Baselines viae2e:docker:updateonly.Measured 2026-08-30 (clean checkout of current PR head
4d79bc0)npm run checkon native hostcheck-site6 HTML / 54 refs; vitest 144/144; 100% lines/statements/branches/functionsnpm run e2e:docker:update(approved baseline refresh)webkit-2311)npm run e2e:dockerafter refreshcheck-visual112/112 view × project baselines presentOpen blockers
realunit.appAASA, assetlinks and/invite/*stop 404ing.Related: RealUnitCH/intern#3 (do not auto-close).