# Manual Testing Checklist ## Before Testing - [ ] Ensure `.env` file is configured with real values (SMTP, reCAPTCHA, DB) - [ ] MariaDB is running and `geekbrain_portfolio` database exists - [ ] Run `docker-compose up -d` or `uvicorn app.main:app --reload` --- ## Site Navigation - [ ] Home page (`/`) loads and displays hero, services, skills, projects CTA - [ ] About page (`/about`) displays profile and skills grid - [ ] Projects page (`/projects`) shows list from GitBucket API - [ ] Contact page (`/contact`) displays form with reCAPTCHA ## Navigation Links - [ ] All navigation links work correctly (Accueil, À propos, Projets, Contact) - [ ] Logo links back to home page - [ ] Footer LinkedIn link opens in new tab ## Responsive Design - [ ] Test at mobile width (< 768px) - navigation stacks, content readable - [ ] Test at tablet width (768-1024px) - grid adjusts - [ ] Test at desktop width (> 1024px) - full layout ## Contact Form - [ ] All fields are required and show validation if empty on submit - [ ] Email field validates email format - [ ] reCAPTCHA appears and must be checked to submit - [ ] On successful submission: - [ ] Success alert appears - [ ] Form is reset - [ ] reCAPTCHA resets - [ ] Email is received at [email protected] (check inbox) - [ ] Submission is stored in database (check `contacts` table) ## Projects Page - [ ] Projects display with name and description from GitBucket - [ ] If GitBucket API fails or returns empty, "indisponibles" message shows - [ ] Repo data is cached (refresh within 5min doesn't call API again) ## Steampunk Design - [ ] Colors: Laid gold (#D4AF37) accents, dark background (#1a1a1a) - [ ] Logo displays in header - [ ] Cards have gold borders - [ ] Typography: Serif headers, clean body text ## Performance - [ ] Pages load quickly (< 2 seconds) - [ ] No console errors in browser dev tools - [ ] reCAPTCHA loads without issues ## Docker (if deploying) - [ ] Container builds without errors: `docker-compose build` - [ ] Container starts: `docker-compose up -d` - [ ] Health endpoint returns 200: `curl http://localhost:8000/health` - [ ] Logs show no errors: `docker-compose logs -f web` - [ ] Static files are served correctly (CSS, JS, images) ## Security - [ ] reCAPTCHA prevents basic bot submissions (test with empty token) - [ ] No sensitive data exposed in error messages - [ ] .env file is not committed (check git status) --- ## Sign-off Tester: ____________________ Date: ____________________ Status: ☐ All passed ☐ Issues found (see notes) Notes: ``` ```