Files
mercadodevida/project/specs/brand-migration/TESTS.md
2026-08-17 22:23:10 +02:00

118 lines
4.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BRAND MIGRATION — TESTS.md
## Visual Regression Tests
```
BRAND-VIS-001: Logo renders in Header at correct dimensions
BRAND-VIS-002: Logo renders in Footer at correct dimensions
BRAND-VIS-003: Logo renders in Admin sidebar
BRAND-VIS-004: Favicon renders in browser tab
BRAND-VIS-005: Primary color matches legacy (inspect CSS after BRAND-FE-001)
BRAND-VIS-006: Accent color matches legacy (inspect CSS after BRAND-FE-001)
BRAND-VIS-007: Footer contains company name from businessConfig
BRAND-VIS-008: Footer contains full address from businessConfig
BRAND-VIS-009: Footer contains phone from businessConfig
BRAND-VIS-010: Footer contains email from businessConfig
BRAND-VIS-011: Footer contains WhatsApp from businessConfig
BRAND-VIS-012: Footer contains business hours from businessConfig
BRAND-VIS-013: Header uses Inter font (system / Google Fonts)
BRAND-VIS-014: Heading font (Playfair Display) renders for page titles
BRAND-VIS-015: Responsive: logo and footer text readable on mobile
```
## Route Tests
```
BRAND-ROUTE-001: GET /about → 200, About page with migrated content
BRAND-ROUTE-002: GET /contact → 200, Contact page with businessConfig info
BRAND-ROUTE-003: GET /shipping → 200, Shipping policy
BRAND-ROUTE-004: GET /terms → 200, Terms page (may be flagged for review)
BRAND-ROUTE-005: GET /privacy → 200, Privacy policy
BRAND-ROUTE-006: GET /cookies → 200, Cookie policy
BRAND-ROUTE-007: GET /legal → 200 or /404 (if not created)
```
## Redirect Tests
```
BRAND-RED-001: GET /quienes-somos → 308 → /about
BRAND-RED-002: GET /contacto → 308 → /contact
BRAND-RED-003: GET /terminos-y-condiciones → 308 → /terms
BRAND-RED-004: GET /politica-de-cookies → 308 → /cookies
BRAND-RED-005: GET /politica-de-privacidad → 308 → /privacy
BRAND-RED-006: GET /donde-estamos → 308 → /contact
BRAND-RED-007: GET /admin → 404 (OpenCart internals blocked)
BRAND-RED-008: GET /?route=product/product&id=42 → 404 (OpenCart query blocked)
BRAND-RED-009: Legacy product slug from sitemap → appropriate redirect
BRAND-RED-010: Legacy category slug → appropriate redirect
```
## SEO Tests
```
BRAND-SEO-001: GET /sitemap.xml → valid XML with all public routes
BRAND-SEO-002: GET /robots.txt → contains sitemap directive
BRAND-SEO-003: GET /robots.txt → does not block /about, /contact, /shipping, /terms, /privacy, /cookies
BRAND-SEO-004: GET /robots.txt → blocks /admin
BRAND-SEO-005: <title> on /about → includes "Mercado de Vida" or "MercadoDeVida"
BRAND-SEO-006: <meta name="description"> on /about → present and meaningful
```
## Content Tests
```
BRAND-CONTENT-001: /about page mentions founders (Ivana & Ricardo)
BRAND-CONTENT-002: /about page mentions Estepona/Costa del Sol
BRAND-CONTENT-003: /contact page has clickable phone link (tel:)
BRAND-CONTENT-004: /contact page has clickable email link (mailto:)
BRAND-CONTENT-005: /contact page has WhatsApp link
BRAND-CONTENT-006: Footer copyright year is current year (dynamic)
BRAND-CONTENT-007: All business info fields populated (no empty phone/email/address)
BRAND-CONTENT-008: Legal pages have ⚠LEGAL_REVIEW flag or equivalent visible in source
```
## businessConfig Tests
```
BRAND-CFG-001: businessConfig.phone matches string used in Header, Footer, Contact
BRAND-CFG-002: businessConfig.email matches string used in Header, Footer, Contact
BRAND-CFG-003: businessConfig.address matches string used in Footer
BRAND-CFG-004: No hardcoded address string in any component outside businessConfig
BRAND-CFG-005: No hardcoded phone string in any component outside businessConfig
BRAND-CFG-006: No hardcoded email string in any component outside businessConfig
```
## Given/When/Then Acceptance Criteria
```
GIVEN a user visits /quienes-somos
WHEN the redirect is implemented
THEN they receive a 308 redirect to /about
AND they land on the About page with migrated content
GIVEN a user visits the footer
WHEN the page renders
THEN the address, phone, email, WhatsApp, and hours all come from businessConfig
AND no string is hardcoded in the Footer component
GIVEN a developer needs to update the company phone number
WHEN they update businessConfig.phone
THEN every page that displays the phone reflects the new value
AND no manual find-replace is required
GIVEN legal text has been migrated from the legacy site
WHEN the Terms page is published
THEN it is flagged as requiring human/legal review
AND no AI-modified version is presented as newly legally approved
GIVEN a search engine bot crawls the site
WHEN it requests /sitemap.xml
THEN it contains all public routes (/about, /contact, /shipping, /products, /categories, etc.)
AND no internal admin routes are exposed
GIVEN a legacy product URL is accessed
WHEN the new platform handles it
THEN it either redirects to the correct new product page
OR returns 404 — it must NOT silently show a broken page
```