AgentSkillsCN

functional-test

在浏览器中对所有仪表板路由进行系统性的功能测试,并将缺陷记录到报告文件中。

SKILL.md
--- frontmatter
name: functional-test
description: Systematic functional testing of all dashboard routes in the browser, logging bugs to a report file.
argument-hint: '[scope: full | quick | route-name]'

Dashboard Functional Testing

A systematic process for testing all dashboard routes and interactive elements in the browser, documenting bugs and unexpected behaviors for later fixing.

When to Use This Skill

  • After implementing new features or major changes
  • Before a release or milestone
  • When the user reports "something is broken" without specifics
  • For regression testing after refactoring

Prerequisites

  1. App Running: Development server running (npm run dev)
  2. Authenticated: Have login credentials ready or ability to register
  3. Browser Tool: You will use browser_subagent to test the app

Phase 1: Setup

Goal: Prepare environment and create bug report file.

  1. Check server: Navigate to http://localhost:5173. If error, run:

    bash
    cd /Users/michal/Documents/MyApps/WalkWithMe && npm run dev
    
  2. Login or Register:

    • Use existing account OR register new (e.g., tester@walkwithme.test)
    • ⚠️ If login/register fails → log as Bug #1, STOP
  3. Complete profile if required to access dashboard

  4. Create bug report at project root: DASHBOARD_BUGS.md

    markdown
    # Dashboard Bug Report
    
    > Generated: [current date]
    > Tester: AI Agent
    
    ---
    

Phase 2: Route Testing

Goal: Test each route systematically, logging bugs immediately.

Test Workflow (per route)

  1. Navigate to route
  2. Check browser console for errors
  3. Run tests from table below
  4. Log bugs immediately when found
  5. Continue to next route

Stop Conditions

  • ✅ All 10 routes tested → write summary, finish
  • 🛑 Critical blocker → write summary, finish
  • ⚠️ 10+ bugs found → write summary, pause for fixes

Route 1: Dashboard Home (/dashboard)

TestPass Criteria
Page loadsNo crash, no blank screen
Welcome messageShows user's name
Stat cards4 cards render (Dogs, Walks, Time, Events)
Dogs sectionShows dogs OR "add your first dog"
Sidebar navEach link navigates correctly
WeatherData loads OR graceful error message

Route 2: Dogs (/dashboard/dogs)

TestPass Criteria
Page loadsDog list OR empty state
Add dogButton → form → fill name/breed → submit → appears
Edit dogEdit button → prefills → change → save → updated
Delete dogDelete → confirm → removed
ValidationEmpty submit → error messages

Note: Create a dog first if none exist to test edit/delete.


Route 3: Profile (/dashboard/profile)

TestPass Criteria
Page loadsNo crash
User infoName, email, role visible
Dogs sectionCount/previews OR "no dogs"
Manage linkNavigates to /dashboard/dogs

Route 4: Settings (/dashboard/settings)

TestPass Criteria
Form loadsFields have current values
Edit nameChange → save → feedback → refresh → persisted
Language togglePL↔EN → UI text changes
Email fieldRead-only (not editable)

Route 5: Friends (/dashboard/friends)

TestPass Criteria
Tabs visible"Friends", "Received", "Sent"
Tab switchingClick each → content changes
Empty stateShows message, not blank

Note: Mark accept/reject/unfriend as SKIPPED if no data.


Route 6: Discover (/dashboard/discover)

TestPass Criteria
Page loadsUser cards OR "no users"
SearchType → list filters
Add friendButton → modal with message field

Route 7: Chat (/dashboard/chat)

TestPass Criteria
Page loadsConversation list OR empty state
Open chatClick conversation → thread opens
Send messageType → send → appears in thread

Note: Mark as SKIPPED if no conversations exist.


Route 8: Meetings (/dashboard/meetings)

TestPass Criteria
Tabs visible"Upcoming", "Past", "Invitations"
Create meetingButton → modal → fill → submit → listed
View detailsClick meeting → details page
Location mapMap renders (not blank)

Route 9: Map (/dashboard/map)

TestPass Criteria
Map loadsTiles render, not blank
Pan/zoomCan interact
LocationPermission prompt OR location OR error

Route 10: Walks (/dashboard/walks)

TestPass Criteria
Page loadsHistory OR empty state
Start walkButton → tracking UI
End walkEnd → summary

Phase 3: Bug Reporting

Goal: Document bugs in a consistent format.

Bug Entry Format

Append each bug to DASHBOARD_BUGS.md:

markdown
## Bug #[N]: [Short title]

**Route**: `/dashboard/[page]`  
**Severity**: Critical | High | Medium | Low  
**Issue**: [1-2 sentences]  
**Expected**: [What should happen]  
**Console**: [Error or "None"]  
**Fix hint**: [Suggestion for fixing]

Severity Scale

LevelDescription
CriticalCrash, data loss, can't proceed
HighFeature broken, can work around
MediumWorks but poor UX
LowCosmetic, typo

Phase 4: Summary Report

Goal: Summarize findings at the top of the report.

After testing, prepend to DASHBOARD_BUGS.md:

markdown
## Test Summary

| Metric        | Value                         |
| ------------- | ----------------------------- |
| Routes Tested | X/10                          |
| Critical      | X                             |
| High          | X                             |
| Medium        | X                             |
| Low           | X                             |
| Skipped       | X                             |
| Status        | Stable / Needs Fixes / Broken |

### Priority Fixes

1. Bug #X - [reason]
2. Bug #X - [reason]
3. Bug #X - [reason]

---

Scope Variants

full (default)

Test all 10 routes with all tests.

quick

Test only routes 1-4 (Dashboard, Dogs, Profile, Settings) - core functionality.

[route-name]

Test a specific route only (e.g., meetings, chat).


Out of Scope

Do NOT test:

  • Real-time sync between two users
  • Email notifications sending
  • External API failures (weather down)
  • Pixel-perfect visuals (use visual-audit skill)
  • Mobile responsiveness (desktop only)

Quick Route Reference

#RouteKey Tests
1/dashboardStats, sidebar
2/dashboard/dogsCRUD
3/dashboard/profileInfo display
4/dashboard/settingsEdit profile
5/dashboard/friendsTabs
6/dashboard/discoverSearch, add
7/dashboard/chatMessages
8/dashboard/meetingsCreate flow
9/dashboard/mapMap loads
10/dashboard/walksStart/end