completed high

Screenshot

Issue screenshot

Stored at legacy-import/issues/179/1773068345080-3c270105-16f2-4940-b0f8-88908ef8bbea.png

Metadata

Selector candidates
[
  {
    "matches": 1,
    "score": 100,
    "selector": "#action-required-section",
    "strategy": "id"
  },
  {
    "matches": 2,
    "score": 76,
    "selector": "section.bg-amber-50.border.border-amber-100",
    "strategy": "class"
  },
  {
    "matches": 2,
    "score": 60,
    "selector": "section:nth-of-type(2)",
    "strategy": "nth-of-type"
  },
  {
    "matches": 0,
    "score": 58,
    "selector": "#action-required-section \u003e section:nth-of-type(2)",
    "strategy": "ancestor-path"
  }
]
Target fingerprint
{
  "ancestorPath": [
    "#action-required-section"
  ],
  "ariaLabel": null,
  "className": "bg-amber-50 border border-amber-100 rounded-xl p-6 mb-8",
  "href": null,
  "id": "action-required-section",
  "name": null,
  "role": null,
  "tagName": "section",
  "textSample": "Action Required 7 items New booking request MAE sent you a booking request. Respond to confirm your availability. Pet Bo"
}
Secondary signal
{
  "hasFiberInstance": true,
  "reactComponentStack": [
    "section",
    "div",
    "eC",
    "Content",
    "o",
    "eV",
    "x",
    "c",
    "f",
    "T",
    "E",
    "j"
  ],
  "reactOwnerStack": [],
  "source": "react-fiber"
}
Layout evidence
bbox:
{
  "bottom": 774,
  "height": 544,
  "left": 504,
  "right": 1736,
  "top": 230,
  "width": 1232,
  "x": 504,
  "y": 230
}

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

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

screenshotMarks:
[]
DOM excerpt
<section id="action-required-section" class="bg-amber-50 border border-amber-100 rounded-xl p-6 mb-8"><div class="flex items-center justify-between mb-6"><div class="flex items-center"><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-triangle-alert text-amber-600 text-xl mr-3 w-5 h-5" aria-hidden="true" data-sentry-element="AlertTriangle" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg><h2 class="text-lg font-bold text-gray-900">Action Required</h2></div><span class="bg-amber-100 text-amber-800 text-xs font-bold px-3 py-1 rounded-full">7 items</span></div><div class="space-y-4"><div class="bg-white rounded-lg shadow-sm border border-gray-100 border-l-4 border-l-red-500 p-5 flex flex-col md:flex-row md:items-center justify-between gap-4" data-sentry-component="ActionRequiredCard" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx"><div class="flex-1"><div class="flex items-center gap-2 mb-1"><h3 class="font-bold text-gray-900">New booking request</h3></div><p class="text-sm text-gray-600 mb-2">MAE sent you a booking request. Respond to confirm your availability.</p><div class="flex items-center gap-3 text-sm text-gray-500 mb-2"><div class="flex items-center gap-1.5"><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-calendar w-4 h-4" aria-hidden="true" data-sentry-element="Calendar" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>Pet Boarding • May 13 - Jun 17, 2026</span></div><span class="bg-red-100 text-red-700 text-xs font-semibold px-2 py-0.5 rounded">⏳ 2d left</span></div><div class="flex items-center justify-between md:justify-start gap-4 mt-2 md:mt-0"><span class="font-bold text-gray-900">€1,925</span></div></div><div class="flex flex-col gap-2 md:flex-row md:gap-3"><a class="order-2 md:order-1 px-6 py-2.5 bg-white border border-gray-300 text-gray-700 hover:bg-gray-50 font-semibold rounded-lg transition-colors whitespace-nowrap text-center" data-sentry-element="Link" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx" href="/at/petsitter/bookings/133023">View request</a><button type="button" class="order-1 md:order-2 px-6 py-2.5 bg-[#7FBCE6] hover:bg-[#5FA5D1] text-white font-semibold rounded-lg transition-colors whitespace-nowrap disabled:opacity-60 disabled:cursor-not-allowed">Accept</button></div></div><div class="bg-white rounded-lg shadow-sm border border-gray-100 border-l-4 border-l-red-500 p-5 flex flex-col md:flex-row md:items-center justify-between gap-4" data-sentry-component="ActionRequiredCard" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx"><div class="flex-1"><div class="flex items-center gap-2 mb-1"><h3 class="font-bold text-gray-900">New booking request</h3></div><p class="text-sm text-gray-600 mb-2">MAE sent you a booking request. Respond to confirm your availability.</p><div class="flex items-center gap-3 text-sm text-gray-500 mb-2"><div class="flex items-center gap-1.5"><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-calendar w-4 h-4" aria-hidden="true" data-sentry-element="Calendar" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>Pet Boarding • Jun 24 - Jul 23, 2026</span></div><span class="bg-red-100 text-red-700 text-xs font-semibold px-2 py-0.5 rounded">⏳ 2d left</span></div><div class="flex items-center justify-between md:justify-start gap-4 mt-2 md:mt-0"><span class="font-bold text-gray-900">€1,595</span></div></div><div class="flex flex-col gap-2 md:flex-row md:gap-3"><a class="order-2 md:order-1 px-6 py-2.5 bg-white border border-gray-300 text-gray-700 hover:bg-gray-50 font-semibold rounded-lg transition-colors whitespace-nowrap text-center" data-sentry-element="Link" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx" href="/at/petsitter/bookings/133024">View request</a><button type="button" class="order-1 md:order-2 px-6 py-2.5 bg-[#7FBCE6] hover:bg-[#5FA5D1] text-white font-semibold rounded-lg transition-colors whitespace-nowrap disabled:opacity-60 disabled:cursor-not-allowed">Accept</button></div></div><div class="bg-white rounded-lg shadow-sm border border-gray-100 border-l-4 border-l-[#7FBCE6] p-5 flex flex-col md:flex-row md:items-cente

Thread

qa-user 2026-03-10 13:32:09

Fixed in local code and verified. Root cause: - Request cards were sorted by expiry in the live model, and the Action Required section then re-sorted those cards by urgency. That pushed older requests ahead of newer ones. Implementation: - Sorted petsitter dashboard request cards by request recency first, with expiry left as the fallback tie-breaker. - Removed the client-side urgency reorder so the rendered Action Required section preserves the model order. Regression coverage: - tests/unit/petsitter-dashboard/build-live-model.test.ts - tests/integration/petsitter-dashboard/dashboard.integration.test.tsx Commands run: - npx vitest run tests/unit/petsitter-dashboard/build-live-model.test.ts -> pass - npx vitest run --config vitest.integration.config.ts tests/integration/petsitter-dashboard/dashboard.integration.test.tsx -> pass Reproduction: - Exact reproduction confirmed locally on the real dashboard by seeding two pending requests where older booking 2592 expired sooner than newer booking 2593. Visual verification: - Route: http://localhost:3000/at/petsitter/dashboard - Confirmed booking 2593 (newer dog-walking request) now renders above booking 2592 in both Action Required and Pending Requests. - Console check: no critical runtime errors; only dev-only React/Next informational warnings remained. - Network check: core dashboard requests succeeded, including GET /at/petsitter/dashboard and GET /api/bookings?type=petsitter&view=summary&limit=200. Artifacts: - Attached screenshot: full-page after-fix dashboard showing the corrected request ordering. - Additional detail screenshot attached in the next QA comment. Residual risk: - Low. This change is limited to petsitter dashboard request ordering; message ordering and adjacent dashboard sections remain covered by existing targeted tests.

qa-fix-179-after.png qa-fix-179-after.png
qa-user 2026-03-10 13:32:15

Detail artifact. This viewport screenshot focuses on the Action Required section after the fix. It shows the newer dog-walking request (booking 2593) above the older house-sitting request (booking 2592).

qa-fix-179-detail.png qa-fix-179-detail.png