completed high

Screenshot

Issue screenshot

Stored at legacy-import/issues/178/1773067987252-2ecf7285-1542-4227-a579-d2e31d98c96b.png

Metadata

Selector candidates
[
  {
    "matches": 1,
    "score": 100,
    "selector": "#profile-header",
    "strategy": "id"
  },
  {
    "matches": 8,
    "score": 76,
    "selector": "section.bg-white.rounded-lg.shadow-sm",
    "strategy": "class"
  },
  {
    "matches": 2,
    "score": 60,
    "selector": "section:nth-of-type(1)",
    "strategy": "nth-of-type"
  },
  {
    "matches": 0,
    "score": 58,
    "selector": "#profile-header \u003e section:nth-of-type(1)",
    "strategy": "ancestor-path"
  }
]
Target fingerprint
{
  "ancestorPath": [
    "#profile-header"
  ],
  "ariaLabel": null,
  "className": "bg-white rounded-lg shadow-sm border border-gray-200 mb-6 p-6",
  "href": null,
  "id": "profile-header",
  "name": null,
  "role": null,
  "tagName": "section",
  "textSample": "Dashboard 5.0 rating • 3 bookings Visible to pet owners in Vienna View My ProfileView My Profile"
}
Secondary signal
{
  "hasFiberInstance": true,
  "reactComponentStack": [
    "section",
    "eb",
    "div",
    "eC",
    "Content",
    "o",
    "eV",
    "x",
    "c",
    "f",
    "T",
    "E"
  ],
  "reactOwnerStack": [],
  "source": "react-fiber"
}
Layout evidence
bbox:
{
  "bottom": 206,
  "height": 110,
  "left": 504,
  "right": 1736,
  "top": 96,
  "width": 1232,
  "x": 504,
  "y": 96
}

viewport:
{
  "height": 1120,
  "width": 1920
}

scroll:
{
  "x": 0,
  "y": 0
}

screenshotMarks:
[]
DOM excerpt
<section id="profile-header" class="bg-white rounded-lg shadow-sm border border-gray-200 mb-6 p-6" data-sentry-component="ProfileHeaderCard" data-sentry-source-file="ProfileHeaderCard.tsx"><div class="flex gap-4 items-center justify-between"><div class="min-w-0"><div class="flex flex-wrap items-center mb-1 gap-y-2"><h2 class="font-bold text-gray-900 text-2xl">Dashboard</h2><div class="ml-3 flex items-center text-sm text-gray-600 bg-gray-50 px-3 py-1 rounded-full"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star text-yellow-500 mr-1 w-4 h-4" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg><span class="font-medium">5.0 rating<!-- --> • 3 bookings</span></div></div><p class="text-gray-600"><span class="text-sm inline-flex items-center text-gray-600 px-0 py-0 rounded-none"><span class="inline-block w-2 h-2 rounded-full mr-2 bg-green-500"></span>Visible to pet owners in Vienna</span></p></div><a class="bg-white border border-gray-300 text-gray-700 rounded-lg font-medium text-center block px-6 py-2.5 hover:bg-gray-50 transition relative group shrink-0" data-sentry-element="Link" data-sentry-source-file="ProfileHeaderCard.tsx" href="/at/petsitter/dashboard-44a0a8-vienna-42372?lang=en">View My Profile<div class="absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 px-3 py-1 bg-gray-900 text-white text-sm rounded-lg opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap">View My Profile</div></a></div></section>

Thread

qa-user 2026-03-10 13:34:08

Fixed in local code and verified. Root cause: - The dashboard visibility mapper collapsed `REVIEWING` and `SUSPICION` into the same review-warning branch, and `INVESTIGATION` also reused that branch. - The petsitter dashboard locale strings still used the old ambiguous visibility sentence (`Visible to pet owners in ...`) and the old review copy (`We're reviewing recent changes from ...`). - Because `reviewing` semantics were being changed, contact-deliverability statuses also needed explicit mapping to avoid accidentally inheriting the new green live-search presentation. Implementation: - Remapped `REVIEWING` and `SUSPICION` to the green live-search state in `src/lib/profile-status-utils.ts`. - Added an explicit `investigation` state and updated `inactive` styling to warning/orange so hidden-profile branches no longer share copy with live branches. - Added the new dashboard visibility copy across petsitter dashboard locales in English, German, Spanish, French, Italian, and Dutch. - Added focused regression coverage for both the status mapper and the rendered visibility card. Regression coverage: - `tests/unit/profile-status-utils.test.ts` - `tests/unit/petsitter-profile-visibility-status.test.tsx` Commands run: - `pnpm vitest run tests/unit/profile-status-utils.test.ts tests/unit/petsitter-profile-visibility-status.test.tsx` -> pass - `pnpm eslint src/lib/profile-status-utils.ts tests/unit/profile-status-utils.test.ts tests/unit/petsitter-profile-visibility-status.test.tsx src/lib/translations/petsitter/en/petsitter-dashboard.ts src/lib/translations/petsitter/de/petsitter-dashboard.ts src/lib/translations/petsitter/es.ts src/lib/translations/petsitter/fr.ts src/lib/translations/petsitter/it.ts src/lib/translations/petsitter/nl.ts` -> pass Reproduction: - Exact reproduction confirmed locally on the pre-fix code path by seeding a local sitter account, setting the petsitter dashboard status to `ACTIVE` / `REVIEWING`, and opening `/at/petsitter/dashboard?lang=en`. - Observed pre-fix messages included `Visible to pet owners in Vienna` and `We're reviewing recent changes from 6 days ago`, matching the QA report's ambiguity/wrong branch behavior. Visual verification: - Verified after fix on `http://127.0.0.1:3001/at/petsitter/dashboard?lang=en` with Chrome DevTools MCP. - Confirmed the review-status sitter now shows `Profile live in search` / `Your profile is live in search results in Vienna.` - Confirmed the investigation-status sitter shows `Profile review in progress` / `We're currently reviewing your profile, so it may be temporarily hidden from search results.` - Console check: only local dev Fast Refresh logs; no critical client errors. - Network check: dashboard document and core API requests returned 200/304. One aborted long-poll request occurred during reload (`/api/events/poll`), which is expected in local dev and was followed by successful poll requests. Artifacts: - Screenshot upload through the authenticated staging attachment flow was blocked from this environment. - Staging `/api/support/attachments/presign` requires an authenticated session; the repo's documented staging smoke credentials no longer authenticate on 2026-03-10. - `qa.staging.holidog.com` could not be reached from shell due TLS handshake failure, so I could not use the QA hub upload endpoint as a fallback. - Local screenshot artifacts captured for audit: - `/tmp/qa-fix-178-after.png` — full dashboard after fix on the review/live branch - `/tmp/qa-fix-178-detail.png` — focused status-card screenshot after fix Residual risk: - Low. The fix is isolated to the visibility-state mapper plus locale copy, and adjacent hidden-profile/contact states are explicitly covered so they do not inherit the new live-search presentation.