Open-source marketplace for AI Agent skills. Features: - Next.js 15 web app with i18n (en/fa) - CLI tool for skill installation (npx skillhub) - GitHub crawler/indexer with multi-strategy discovery - Security scanning for all indexed skills - Self-hostable with Docker Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
SkillHub Manual Test Checklist
This checklist covers features NOT covered by automated E2E tests (43 Playwright tests). Complete before production deployment.
Already Automated - SKIP These
The following are covered by E2E tests in apps/web/e2e/*.spec.ts:
| Area | E2E Coverage |
|---|---|
| Homepage | Page load, stats, featured skills, navigation links |
| Browse | Skills list, search input, search filter, platform filter, skill cards, detail navigation |
| Categories | Page load, category list, names, skill counts, navigation |
| Skill Detail | Name, description, platforms, install command, GitHub link |
| i18n | EN default, language switcher, FA switch, RTL, Persian text, context preserve |
| Mobile | Mobile nav, menu toggle, single column, text size, touch targets |
| API | /api/health, /api/stats, /api/categories, /api/skills/*, /api/skills/featured, /api/skills/recent |
To run E2E tests: pnpm --filter @skillhub/web test:e2e
Tester: ________________ Date: ________________ Environment: [ ] Local Docker [ ] Staging [ ] Production
Prerequisites
- All Docker containers running (
docker ps) - Database has data (
docker exec skillhub-db psql -U postgres -d skillhub -c "SELECT COUNT(*) FROM skills;") - Health endpoint OK (
curl http://localhost:3000/api/health) - GitHub OAuth configured (for auth tests)
1. Authentication (GitHub OAuth)
Sign In Flow
| Test | Expected | Pass |
|---|---|---|
| Click "Sign In" in header | Redirects to GitHub OAuth | [ ] |
| Approve on GitHub | Returns to app, user dropdown visible | [ ] |
| User dropdown shows avatar + name | GitHub profile info displayed | [ ] |
| Refresh page while signed in | Session persists | [ ] |
Sign Out Flow
| Test | Expected | Pass |
|---|---|---|
| Click user dropdown → Sign Out | Logged out, "Sign In" button reappears | [ ] |
| Refresh after sign out | Still logged out | [ ] |
2. Favorites System (Auth Required)
API Endpoints
| Test | Expected | Pass |
|---|---|---|
GET /api/favorites (unauthenticated) |
401 Unauthorized | [ ] |
GET /api/favorites (authenticated) |
Returns user's favorites array | [ ] |
POST /api/favorites with {skillId} |
200, skill added | [ ] |
DELETE /api/favorites with {skillId} |
200, skill removed | [ ] |
POST /api/favorites/check with {skillIds} |
Returns favorited status | [ ] |
UI Tests
| Test | Expected | Pass |
|---|---|---|
| Click heart on skill detail (unauthenticated) | Redirects to sign in | [ ] |
| Click heart on skill detail (authenticated) | Heart fills red, added to favorites | [ ] |
| Click filled heart | Heart unfills, removed from favorites | [ ] |
Go to /favorites page |
Shows all favorited skills | [ ] |
| Click heart on favorites page | Skill removed from list | [ ] |
| Empty favorites state | "No favorites" message + Browse button | [ ] |
3. Ratings System (Auth Required)
API Endpoints
| Test | Expected | Pass |
|---|---|---|
GET /api/ratings?skillId=... |
Returns ratings array + summary | [ ] |
POST /api/ratings with {skillId, rating: 5} |
200, rating saved | [ ] |
POST /api/ratings with invalid rating (0 or 6) |
400 error | [ ] |
GET /api/ratings/me?skillId=... (authenticated) |
Returns user's rating | [ ] |
UI Tests
| Test | Expected | Pass |
|---|---|---|
| Click stars (unauthenticated) | Redirects to sign in | [ ] |
| Click stars to rate (authenticated) | Stars fill, rating submitted | [ ] |
| Change rating | New rating saved, average updates | [ ] |
| Refresh page | Rating persists | [ ] |
4. Interactive UI Elements
Browse Page Filters
| Test | Expected | Pass |
|---|---|---|
| Sort dropdown (Stars/Downloads/Recent/Rating) | Results re-sorted, URL updates | [ ] |
| Verified checkbox | Only verified skills shown | [ ] |
| Combined filters (platform + sort + verified) | All filters applied together | [ ] |
| Load More button | Next page loads, more skills appear | [ ] |
Skill Detail - Install Section
| Test | Expected | Pass |
|---|---|---|
| Platform tabs (Claude/Codex/Copilot) | Command changes for each platform | [ ] |
| Copy button | Command copied to clipboard, checkmark appears | [ ] |
| Download ZIP button | Opens GitHub ZIP download in new tab | [ ] |
| Select Folder button (Chrome) | File picker opens, skill files created | [ ] |
5. Pages Not in E2E Tests
Featured Page (/featured)
| Test | Expected | Pass |
|---|---|---|
| Page loads | Shows top featured skills | [ ] |
| Skills sorted by popularity | Highest stars first | [ ] |
| Skill cards clickable | Navigate to detail page | [ ] |
New Skills Page (/new)
| Test | Expected | Pass |
|---|---|---|
| Page loads | Shows recently added skills | [ ] |
| Skills sorted by date | Most recent first | [ ] |
| Timestamps displayed | "X hours/days ago" format | [ ] |
Favorites Page (/favorites)
| Test | Expected | Pass |
|---|---|---|
| Unauthenticated access | Redirects to sign in | [ ] |
| Authenticated + no favorites | Empty state shown | [ ] |
| Authenticated + has favorites | Skills grid displayed | [ ] |
6. Error States
| Test | Expected | Pass |
|---|---|---|
Navigate to /nonexistent-page |
404 page displayed | [ ] |
Navigate to /skill/invalid/id |
Error or 404 shown | [ ] |
| API returns error | Graceful error message | [ ] |
7. Docker Health Checks
| Service | Command | Expected | Pass |
|---|---|---|---|
| Web | curl http://localhost:3000/api/health |
status: ok |
[ ] |
| Database | docker exec skillhub-db pg_isready |
Ready | [ ] |
| Redis | docker exec skillhub-redis redis-cli ping |
PONG | [ ] |
| Meilisearch | curl http://localhost:7700/health |
available |
[ ] |
| Indexer | docker logs skillhub-indexer --tail=5 |
No errors | [ ] |
8. Real Data Verification
| Test | Expected | Pass |
|---|---|---|
| Skills in database | SELECT COUNT(*) FROM skills > 0 |
[ ] |
| Skills have real GitHub data | github_stars, github_owner populated |
[ ] |
| Search returns results | Search for existing skill works | [ ] |
| Meilisearch synced | curl localhost:7700/indexes/skills/stats shows documents |
[ ] |
Notes
Record any issues found:
______________________________________________________________
______________________________________________________________
______________________________________________________________
Sign-off
- All tests pass
- No blocking issues
- Ready for production
Signature: ________________ Date: ________________