Files
cv-site/tests/mjs
juanatsap 639a99b8ea fix: Complete mobile UX overhaul - horizontal scroll, landscape mode, and centering
Fixes three critical mobile issues across Android and iPhone:

1. HORIZONTAL SCROLL ELIMINATION (CRITICAL)
   - Added overflow-x: hidden to html and body globally
   - Landscape: Aggressive max-width: 100vw on all containers
   - Fixed .cv-page, .cv-container overflow issues
   - Prevented scale transform from causing overflow

2. LANDSCAPE MODE COMPLETE FIX
   - Single column layout enforced (grid-template-columns: 1fr)
   - Photo visible and sized appropriately (max-width: 120px)
   - Hamburger menu visible and accessible
   - Action bar simplified (center controls hidden)
   - Language selector compact
   - Smaller buttons (40px) with recalculated positions
   - Typography reduced for better fit

3. BUTTON CENTERING (VERIFIED WORKING)
   - Confirmed perfect centering in portrait mode
   - Android: 290px bar centered at viewport center (188px)
   - iPhone: Identical centering behavior
   - Landscape: 240px bar for 5 buttons (40px each)

Files modified:
- static/css/01-foundation/_reset.css - Global overflow-x fix
- static/css/05-responsive/_breakpoints.css - Comprehensive landscape overhaul
- tests/mjs/54-landscape-mode-test.mjs - Landscape validation (Android + iPhone)
- tests/mjs/55-button-centering-test.mjs - Button centering validation
- tests/mjs/56-landscape-debug-test.mjs - Media query debugging tool
- tests/mjs/57-horizontal-scroll-debug.mjs - Scroll width debugging tool

Test results:
 Portrait: Buttons perfectly centered (0px offset)
 Landscape: Single column, no horizontal scroll
 Hamburger visible and accessible in landscape
 Photo visible in all orientations
 Android + iPhone parity confirmed
2025-11-25 05:09:05 +00:00
..

CV Project Test Suite (Active Tests)

28 comprehensive tests covering all functionality from UI interactions to PDF generation.

Quick Start

# Run all tests with master test runner
bun tests/run-all.mjs

# Run individual test
bun tests/mjs/0-zoom.test.mjs
bun tests/mjs/28-references-pdf-download.test.mjs

Core Functionality Tests (0-14)

0-zoom.test.mjs

Zoom control functionality - slider, toggle, persistence

1-toggles.test.mjs

Length/Icon/Theme toggles with screenshot verification

2-keyboard-shortcuts.test.mjs

L/I/V/? keyboard shortcuts

3-hyperscript.test.mjs

Hyperscript parsing and function definitions

4-htmx.test.mjs

HTMX library and request/response cycle

5-language.test.mjs

Bilingual support (EN/ES) switching

6-modals.test.mjs

Info, shortcuts, and PDF modal dialogs

7-mobile-responsive.test.mjs

Mobile viewport and touch interactions

8-hover-sync.test.mjs

Hover state synchronization across UI

9-hyperscript-def-limit.test.mjs

Hyperscript 0.9.14+ def limit validation

10-zoom-persistence.test.mjs

Zoom level localStorage persistence

11-zoom-ui-exclusion.test.mjs

UI elements excluded from zoom

12-skeleton-language-transitions.test.mjs

Skeleton loaders for language transitions (13 sections)

13-color-theme-switcher.test.mjs

Dynamic color theme switcher (auto/light/dark)

14-button-positioning.test.mjs

Responsive button positioning

Advanced Feature Tests (15-28)

14-pdf-modal.test.mjs

PDF download modal with thumbnail selection

15-icon-toggle-debug.test.mjs

Icon toggle debugging and validation

22-theme-consistency.test.mjs

Theme consistency across reloads

23-dark-theme-borders.test.mjs

Dark theme border colors

24-course-inline-icons.test.mjs

Course section inline icon sizes

24-pdf-download-params.test.mjs

PDF download URL parameters

25-inline-icons-comprehensive.test.mjs

Comprehensive inline icon testing

26-course-list-icons.test.mjs

Course list icon rendering

27-course-icons-final.test.mjs

Final course icon validation

28-references-pdf-download.test.mjs

References section PDF download button

29-pdf-toast-notifications.test.mjs

Toast notification system for PDF downloads

  • Toast elements exist in DOM
  • JavaScript functions available (showPDFToast, hidePDFToast)
  • Manual toast trigger and auto-hide
  • PDF modal integration - Scenario A (Stay in modal)
  • PDF modal integration - Scenario B (Close modal early, toast appears)
  • Toast content updates (preparing → success)
  • Progress bar animation
  • CSS animations defined (toastSlideIn, toastLifecycle, progressShrink)

Migration Tests

test-preference-migration.test.mjs

LocalStorage preference migration (extended→long, true/false→show/hide)

verify-migration.test.mjs

Migration verification and validation

Test Requirements

  • Server: Running on http://localhost:1999
  • Browser: Playwright Chromium (headed mode)
  • Runtime: Bun (#!/usr/bin/env bun)
  • Exit: Ctrl+C after manual verification

Test Output

All tests provide:

  • Clear pass/fail indicators
  • 📊 Summary of test results
  • Detailed error messages with file:line references
  • 🎉 Success confirmation
  • 💡 Browser stays open for manual inspection

Screenshots

Tests save screenshots to tests/screenshots/:

  • Before/after comparison for visual verification
  • Dark theme validation
  • Icon toggle validation

Running Tests

# All tests
bun tests/run-all.mjs

# Individual test
bun tests/mjs/{number}-{feature}.test.mjs

# Example
bun tests/mjs/28-references-pdf-download.test.mjs

Last Updated: 2025-11-20 Test Count: 28 active tests Coverage: Complete functionality coverage including toast notifications Status: Production specification