cd465e0564
- Add backend/app/mcp_server.py with FastMCP server (hms-cms) - Resources: design-rules, page-structure, sync-status - Tools: trigger_sync, get_sync_log, set_rentman_token, read_file, write_file, create_page, deploy, git_commit, git_status - Bearer token auth via MCP_AUTH_TOKEN env var - Mount MCP at /mcp with streamable HTTP transport - Integrate session manager in FastAPI lifespan - Add Traefik labels for external /mcp route on hms.media-on.de - Add git, docker.io, curl to backend Dockerfile - Mount repo root + docker socket in backend container - Add mcp>=1.0.0 to requirements.txt
3.8 KiB
3.8 KiB
Test Report – 1:1 Prototype Port
Date: 2026-07-10
Task: 1:1 Prototyp-Portierung zu Nuxt 3
Commit: fix: 1:1 prototype port – exact hms-* CSS, real logo, all components from app.js
Build Verification
npm run build
Result: ✅ Build complete
Output size: 2.47 MB (607 kB gzip)
Server: .output/server/index.mjs generated successfully
Unit Tests
npx vitest run --reporter verbose
Result: ✅ 10 test files, 168 tests passed, 0 failed
Test Files:
tests/unit/CartStore.test.ts– Cart store interface and actions ✅tests/unit/DesignTokens.test.ts– CSS tokens, hms-* classes, Tailwind/Nuxt config ✅tests/unit/HomePage.test.ts– Hero, services, speaker grid, CTA ✅tests/unit/ReferenzenPage.test.ts– Gallery, filter chips, loading states ✅tests/unit/KontaktPage.test.ts– Contact form, validation, addresses ✅tests/unit/MietkatalogPage.test.ts– Search, filter, equipment cards ✅tests/unit/EquipmentDetailPage.test.ts– Detail view, specs, related items ✅tests/unit/WarenkorbPage.test.ts– Cart items, request form, validation ✅tests/unit/Layout.test.ts– Header, footer, error page, logo, robots.txt ✅tests/unit/useEquipment.test.ts– API composable, equipment composable ✅
Smoke Test (Dev Server)
npx nuxt dev (port 3004)
curl -s http://localhost:3004/
Result: ✅ All checks passed
| Check | Expected | Actual |
|---|---|---|
Veranstaltungstechnik text |
≥1 | 2 ✅ |
hms-hero class |
≥1 | 1 ✅ |
hms-card class |
≥1 | 1 ✅ |
hms-btn-primary class |
≥1 | 1 ✅ |
hms-header class |
≥1 | 1 ✅ |
hms-speaker-grid class |
≥1 | 1 ✅ |
hms-logo-svg class |
≥1 | 1 ✅ |
EC6925 (accent color) |
≥1 | 1 ✅ |
Files Changed
CSS
assets/css/main.css– Replaced with prototype-style.css content + Tailwind directives
Components (9 ported from app.js)
components/HmsLogo.vue– SVG logo with #EC6925 bordercomponents/SpeakerIcon.vue– 6 speaker type SVG iconscomponents/AppHeader.vue– hms-header, nav, mobile menucomponents/AppFooter.vue– hms-footer, 4-column gridcomponents/ServiceCard.vue– hms-card with icon circlecomponents/EquipmentCard.vue– hms-eq-card with badgecomponents/LoadingSkeleton.vue– hms-skeleton shimmercomponents/EmptyState.vue– Empty state with actioncomponents/ErrorState.vue– Error state with retry
Pages (8 ported from app.js)
pages/index.vue– HomePage with hero, speakers, services, CTApages/referenzen.vue– ReferenzenPage with gallery and filterspages/kontakt.vue– KontaktPage with form and contact infopages/mietkatalog.vue– MietkatalogPage with 18 equipment itemspages/mietkatalog/[id].vue– EquipmentDetailPage with specs and relatedpages/warenkorb.vue– WarenkorbPage with cart and request formpages/admin.vue– AdminPage with login formerror.vue– NotFoundPage (404)
Layout
layouts/default.vue– Updated to match prototype App structure
Tests (10 files updated)
- All unit tests rewritten to match prototype structure
- Removed MietanfragePage.test.ts (page not in prototype)
- Tests check for hms-* classes, prototype templates, exact content
Removed
components/CartDrawer.vue– Not in prototypecomponents/Lightbox.vue– Not in prototypepages/mietanfrage.vue– Not in prototype (functionality in warenkorb)
Kept (unchanged)
composables/useApi.ts,composables/useEquipment.ts,composables/useCart.tsstores/cart.tsplugins/pinia-persist.client.tscomponents/LegalContentPage.vue(used by legal pages)pages/impressum.vue,pages/datenschutz.vue,pages/agb-vermietung.vuenuxt.config.ts,tailwind.config.ts