Implemented fix locally on 2026-03-10. Root cause: the petsitter dashboard live model duplicated sitter-action requests into both buckets. Fix: strict pending requests now populate only the Pending Requests section, while quote/reservation requests that need sitter action remain in Action Required. Verification: - regression test added and passing: tests/unit/petsitter-dashboard/build-live-model.test.ts - browser retest done in DevTools on the local action-heavy debug preset - confirmed visual split: 2 request cards in Action Required, 1 request card in Pending Requests
Standalone QA Hub
Issue #75
/at/petsitter/dashboard · 2026-03-10 10:15:42
completed
critical
Screenshot
Stored at legacy-import/issues/192/1773075319102-c0e09bb6-90d3-4949-ad08-ebcff8a1bfdc.png
Metadata
Selector candidates
[
{
"matches": 1,
"score": 76,
"selector": "div.bg-white.rounded-xl.shadow-md",
"strategy": "class"
},
{
"matches": 1,
"score": 74,
"selector": "#action-center \u003e div:nth-of-type(1)",
"strategy": "scoped-parent-id"
},
{
"matches": 247,
"score": 60,
"selector": "div:nth-of-type(1)",
"strategy": "nth-of-type"
},
{
"matches": 2,
"score": 58,
"selector": "#action-center \u003e div \u003e div:nth-of-type(1)",
"strategy": "ancestor-path"
}
]
Target fingerprint
{
"ancestorPath": [
"#action-center",
"div"
],
"ariaLabel": null,
"className": "bg-white rounded-xl shadow-md border-2 border-[#7FBCE6] p-6",
"href": null,
"id": null,
"name": null,
"role": null,
"tagName": "div",
"textSample": "Pending Requests (Requires decision) 1 total MAE (Visits) Aug 3 - Aug 3, 2026 3d left Accept Decline Keeping your calend"
}
Secondary signal
{
"hasFiberInstance": true,
"reactComponentStack": [
"div",
"section",
"eC",
"Content",
"c",
"eV",
"x",
"f",
"T",
"E",
"j",
"u"
],
"reactOwnerStack": [],
"source": "react-fiber"
}
Layout evidence
bbox:
{
"bottom": 1350,
"height": 606,
"left": 504,
"right": 1108,
"top": 744,
"width": 604,
"x": 504,
"y": 744
}
viewport:
{
"height": 1112,
"width": 1920
}
scroll:
{
"x": 0,
"y": 0
}
screenshotMarks:
[]
DOM excerpt
<div class="bg-white rounded-xl shadow-md border-2 border-[#7FBCE6] p-6"><div class="flex items-center justify-between mb-5"><div class="flex items-center"><h3 class="text-lg font-bold text-gray-900">Pending Requests</h3><span class="ml-2 text-xs text-gray-500 font-medium">(<!-- -->Requires decision<!-- -->)</span></div><span class="bg-red-500 text-white text-xs font-bold px-3 py-1.5 rounded-full">1 total</span></div><div class="space-y-4"><div class="border-l-4 rounded-lg p-4 shadow-sm hover:shadow-lg hover:scale-[1.01] transition-all duration-200 cursor-pointer group border-l-[#7FBCE6] bg-blue-50"><div class="flex items-start justify-between mb-3"><div class="flex items-start"><div class="w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-sm mr-3 flex-shrink-0"><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-5 h-5 text-[#7FBCE6]" aria-hidden="true" data-sentry-element="Calendar" data-sentry-component="renderRequestIcon" 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></div><div><h4 class="font-bold text-gray-900 text-base">MAE (Visits)</h4><p class="text-sm text-gray-600 mt-1 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-calendar w-3.5 h-3.5 mr-1" aria-hidden="true"><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>Aug 3 - Aug 3, 2026</p></div></div><span class="text-xs font-bold text-white bg-[#7FBCE6] px-2.5 py-1.5 rounded-lg flex items-center gap-1 shadow-sm"><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-clock w-3 h-3" aria-hidden="true"><path d="M12 6v6l4 2"></path><circle cx="12" cy="12" r="10"></circle></svg>3d left</span></div><div class="flex space-x-3 mt-4 mb-2"><button type="button" class="flex-1 px-4 py-3 bg-[#7FBCE6] text-white rounded-lg text-sm font-bold hover:bg-[#5FA5D1] shadow-md hover:shadow-lg transition-all disabled:opacity-60 disabled:cursor-not-allowed">Accept</button><button type="button" class="flex-1 px-4 py-3 bg-white border border-gray-200 text-gray-600 rounded-lg text-sm font-semibold hover:bg-gray-50 transition-all disabled:opacity-60 disabled:cursor-not-allowed">Decline</button></div><p class="text-xs text-[#7FBCE6] text-center mb-2 font-medium">Keeping your calendar accurate helps you avoid cancellations and stay higher in search.</p><div class="text-center"><a class="text-sm text-gray-500 hover:text-gray-700 inline-flex items-center" href="/at/petsitter/bookings/132665">View details<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-arrow-right ml-1 w-3 h-3" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></div></div><div class="mt-4 text-center"><a class="text-sm text-[#7FBCE6] hover:text-[#5FA5D1] font-medium" data-sentry-element="Link" data-sentry-source-file="PetsitterDashboardV2Desktop.tsx" href="/at/petsitter/bookings">View all requests</a></div></div>
Thread
qa-user
2026-03-10 10:24:28
qa-user
2026-03-10 10:24:28
Desktop viewport screenshot from DevTools retest. This shows the corrected split with Action Required containing sitter-action request cards and Pending Requests showing only the pending request card.
qa-192-action-heavy-top.png
qa-user
2026-03-10 10:24:28
Full-page screenshot from DevTools retest for issue 192.
qa-192-action-heavy-full.png