Mobile verification screenshot: the mobile profile-completion card no longer includes Preview & Launch / Vorschau & Start and no /petsitter/profile completion CTA is present.
qa-fix-193-detail.png
Standalone QA Hub
/at/petsitter/dashboard ยท 2026-03-10 13:11:41
Stored at legacy-import/issues/193/1773075926227-382d12b5-335b-40ba-8c03-31a0a2c47556.png
[
{
"matches": 1,
"score": 100,
"selector": "#profile-completion",
"strategy": "id"
},
{
"matches": 5,
"score": 76,
"selector": "section.bg-white.rounded-xl.shadow-sm",
"strategy": "class"
},
{
"matches": 2,
"score": 60,
"selector": "section:nth-of-type(7)",
"strategy": "nth-of-type"
},
{
"matches": 0,
"score": 58,
"selector": "#profile-completion \u003e section:nth-of-type(7)",
"strategy": "ancestor-path"
}
]
{
"ancestorPath": [
"#profile-completion"
],
"ariaLabel": null,
"className": "bg-white rounded-xl shadow-sm border border-gray-200 p-8 mb-6",
"href": null,
"id": "profile-completion",
"name": null,
"role": null,
"tagName": "section",
"textSample": "Complete Your Profile A complete profile increases trust and booking chances. Profile Completion 20% Photos Add photos t"
}
{
"hasFiberInstance": true,
"reactComponentStack": [
"section",
"div",
"eC",
"Content",
"c",
"eV",
"x",
"f",
"T",
"E",
"j",
"u"
],
"reactOwnerStack": [],
"source": "react-fiber"
}
bbox:
{
"bottom": 880,
"height": 1166,
"left": 504,
"right": 1736,
"top": -286,
"width": 1232,
"x": 504,
"y": -286
}
viewport:
{
"height": 1112,
"width": 1920
}
scroll:
{
"x": 0,
"y": 0
}
screenshotMarks:
[]
<section id="profile-completion" class="bg-white rounded-xl shadow-sm border border-gray-200 p-8 mb-6"><div class="flex items-start justify-between mb-6"><div class="flex-1"><h3 class="text-xl font-bold text-gray-900 mb-2">Complete Your Profile</h3><p class="text-gray-600">A complete profile increases trust and booking chances.</p></div></div><div class="mb-6"><div class="flex items-center justify-between mb-2"><span class="text-sm font-semibold text-gray-900">Profile Completion</span><span class="text-sm font-bold text-[#7FBCE6]">20%</span></div><div class="w-full bg-gray-200 rounded-full h-3"><div class="bg-[#7FBCE6] h-3 rounded-full transition-all duration-500" style="width: 20%;"></div></div></div><div class="space-y-3"><div class="flex items-start p-4 rounded-lg border bg-green-50 border-green-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-green-500"><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-check text-white text-xs w-3.5 h-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></div><div class="ml-4 flex-1"><div class="flex items-center justify-between mb-2"><h4 class="font-semibold text-gray-900 text-sm">Photos</h4></div><p class="text-xs text-gray-600">Add photos to your profile</p></div></div><div class="flex items-start p-4 rounded-lg border bg-green-50 border-green-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-green-500"><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-check text-white text-xs w-3.5 h-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></div><div class="ml-4 flex-1"><div class="flex items-center justify-between mb-2"><h4 class="font-semibold text-gray-900 text-sm">Your Address</h4></div><p class="text-xs text-gray-600">Where you provide services</p></div></div><div class="flex items-start p-4 rounded-lg border bg-gray-50 border-gray-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-gray-300"><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-circle text-gray-500 text-xs w-3 h-3" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle></svg></div><div class="ml-4 flex-1"><div class="flex items-center justify-between mb-2"><h4 class="font-semibold text-gray-900 text-sm">Services & Pricing</h4><a class="px-3 py-1.5 bg-[#7FBCE6] text-white rounded-lg text-xs font-medium hover:bg-[#5FA5D1] transition" href="/at/petsitter/services">Complete</a></div><p class="text-xs text-gray-600">What you offer and your rates</p></div></div><div class="flex items-start p-4 rounded-lg border bg-gray-50 border-gray-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-gray-300"><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-circle text-gray-500 text-xs w-3 h-3" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle></svg></div><div class="ml-4 flex-1"><div class="flex items-center justify-between mb-2"><h4 class="font-semibold text-gray-900 text-sm">Your Story</h4><a class="px-3 py-1.5 bg-[#7FBCE6] text-white rounded-lg text-xs font-medium hover:bg-[#5FA5D1] transition" href="/at/petsitter/basic">Complete</a></div><p class="text-xs text-gray-600">Tell pet owners about yourself</p></div></div><div class="flex items-start p-4 rounded-lg border bg-gray-50 border-gray-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-gray-300"><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-circle text-gray-500 text-xs w-3 h-3" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle></svg></div><div class="ml-4 flex-1"><div class="flex items-center justify-between mb-2"><h4 class="font-semibold text-gray-900 text-sm">Personal Information</h4><a class="px-3 py-1.5 bg-[#7FBCE6] text-white rounded-lg text-xs font-medium hover:bg-[#5FA5D1] transition" href="/at/petsitter/basic">Complete</a></div><p class="text-xs text-gray-600">Your basic details</p></div></div><div class="flex items-start p-4 rounded-lg border bg-gray-50 border-gray-200"><div class="w-6 h-6 rounded-full flex items-center justify-center flex-shrink-0 mt-0.5 bg-gray-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 2
Mobile verification screenshot: the mobile profile-completion card no longer includes Preview & Launch / Vorschau & Start and no /petsitter/profile completion CTA is present.
qa-fix-193-detail.png
Fixed in local code and verified. Root cause: - The petsitter dashboard V2 profile-completion model was built from the full onboarding step list, so it still included the non-user-action "preview" step and linked to /petsitter/profile. Implementation: - Excluded the preview step from dashboard profile-completion items by introducing a dedicated profile-completion step list and using it in the petsitter dashboard server model. Regression coverage: - tests/unit/petsitter-dashboard/build-server-model.test.ts - omits the preview step from profile completion progress and checklist items - updated route-link assertions to ensure no preview item is exposed Commands run: - pnpm exec vitest run tests/unit/petsitter-dashboard/build-server-model.test.ts -> pass - pnpm exec vitest run tests/unit/petsitter-dashboard/build-links.test.ts -> pass - pnpm exec eslint 'src/features/petsitter-dashboard/application/build-server-model.ts' 'src/lib/onboarding/petsitter-steps.ts' 'tests/unit/petsitter-dashboard/build-server-model.test.ts' -> pass with pre-existing no-explicit-any warnings in build-server-model.ts Visual verification: - Reproduced on staging at /at/petsitter/dashboard?debug=true&debugDashboardPreset=new-sitter&pen=true before the fix: the checklist showed "Vorschau & Start" with CTA to /at/petsitter/profile. - Verified after the fix on local at http://localhost:3002/at/petsitter/dashboard?debug=true&debugDashboardPreset=new-sitter&pen=true with Chrome DevTools MCP: the profile-completion section no longer shows Preview & Launch / Vorschau & Start and no CTA to /petsitter/profile remains. - Checked console: no critical client errors after reload; only normal dev/HMR noise earlier. - Checked network: dashboard document and core dashboard APIs returned 200 after reload. Artifacts: - Attached screenshot: desktop after-fix dashboard showing the profile-completion section without the preview item. Reproduction result: - exact reproduction confirmed on staging before the fix Residual risk: - Low. The change is limited to the dashboard V2 profile-completion model. Onboarding step 10 still exists for the actual activation flow, so risk is mainly any other consumer that intentionally wants the full onboarding step list.
qa-fix-193-after.png