12 KiB
Responsive Design Testing Documentation
Project: WorkRoot IT Solutions Company Site Agent: frontend-specialist Last Updated: 2026-03-21
Breakpoints Overview
The project uses Tailwind CSS with a mobile-first approach. The following breakpoints are defined in tailwind.config.mjs:
| Breakpoint | Min-Width | Description | Common Devices |
|---|---|---|---|
| (default) | 0px | Mobile base styles | Small phones (320px+) |
xs |
375px | Small phones | iPhone SE, older Androids |
sm |
640px | Large phones / phablets | iPhone 14, Galaxy S series |
md |
768px | Tablets | iPad, Android tablets |
lg |
1024px | Desktop / large tablets | Laptops, iPad Pro landscape |
xl |
1280px | Large desktops | Desktop monitors |
2xl |
1536px | Ultra-wide | Wide monitors |
Note: The
xsbreakpoint (375px) was added totailwind.config.mjsto handle very small mobile devices gracefully.
Page-by-Page Responsive Analysis
1. Homepage (/)
Status: ✅ Fully Responsive
| Section | Mobile (320-639px) | Tablet (768-1023px) | Desktop (1024px+) |
|---|---|---|---|
| Hero | Single col, fluid text | Same layout | Same layout, larger text |
| Benefits | 1-col grid | 2-col grid | 4-col grid |
| Services | 1-col grid | 2-col grid | 2-col grid (max-w-6xl) |
| How It Works | 1-col grid | 2-col grid | 4-col grid with connectors |
| Stats | 2-col grid | 2-col grid | 4-col grid |
| Testimonials | Single slide carousel | Single slide carousel | Single slide carousel |
| FAQ | Stacked (header + accordion) | Stacked | 2-col (sticky header) |
| CTA | Stacked buttons | Inline buttons | Inline buttons |
Key Patterns:
- Hero text:
text-5xl sm:text-6xl lg:text-7xl xl:text-8xl— fluid scaling - CTA buttons:
flex flex-wrap justify-center gap-4— wraps gracefully on small screens - Tech logos:
flex flex-wrap justify-center items-center gap-12— wraps on mobile
2. Services Page (/services)
Status: ✅ Fully Responsive
| Section | Mobile (320-639px) | Tablet (768-1023px) | Desktop (1024px+) |
|---|---|---|---|
| Hero | 1-col, fluid text | Same | Same |
| Stats bar | 2-col grid | 4-col grid | 4-col grid |
| Service cards | 1-col grid | 2-col grid | 2-col grid |
| Service details | Stacked (content/visual) | Stacked | 2-col alternating layout |
| Floating badge | Hidden (hidden sm:block) |
Visible | Visible |
| Case studies | 1-col grid | 2-col grid | 3-col grid |
| Pricing | 1-col stacked (no scale) | 3-col, middle scaled | 3-col, middle scaled 105% |
| Process steps | 1-col grid | 2-col grid | 4-col with arrows |
Fix Applied (2026-03-21):
- Pricing tier highlight: Changed
scale-105→md:scale-105 - Reason: On mobile, the highlighted pricing card was causing horizontal overflow since the card occupies full width. The scale effect now only applies at
md(768px+) where there's sufficient surrounding space.
3. Portfolio Page (/portfolio)
Status: ✅ Fully Responsive
| Section | Mobile (320-639px) | Tablet (768-1023px) | Desktop (1024px+) |
|---|---|---|---|
| Hero | 1-col, fluid text | Same | Same |
| Stats bar | 2-col grid | 4-col grid | 4-col grid |
| Featured projects | 1-col stacked | 1-col stacked | 3-col (first spans 2 cols) |
| Search bar | Full-width, centered | Full-width max-w-xl | Full-width max-w-xl |
| Filter tabs | Flex-wrap, scrollable | Flex-wrap, centered | Flex-wrap, centered |
| Project grid | 1-col | 2-col | 3-col |
| Case study modal | Full-width, stacked content | Full-width | max-w-5xl centered |
Modal Gallery Heights:
- Gallery image:
h-64 sm:h-80 lg:h-96— scales up on larger screens
4. Contact Page (/contact)
Status: ✅ Fully Responsive
| Section | Mobile (320-639px) | Tablet (768-1023px) | Desktop (1024px+) |
|---|---|---|---|
| Hero | 1-col text | Same | Same |
| Trust stats | 2-col grid | 4-col grid | 4-col grid |
| Form layout | Stacked (form then sidebar) | Stacked | 5-col split (3+2) |
| Form fields | 1-col fields | 2-col pairs (sm:grid-cols-2) | 2-col pairs |
| Budget options | Flex-wrap chips | Flex-wrap chips | Flex-wrap chips |
| Contact info cards | 1-col → 2-col at xs (375px) | 2-col | 2-col |
| Map embed | Full-width card | Full-width card | Full-width card |
| Social links | Full-width stacked | Full-width stacked | Full-width stacked |
| FAQ accordion | Full-width stacked | Full-width max-w-3xl | Full-width max-w-3xl |
Fix Applied (2026-03-21):
- Contact info cards: Changed
grid-cols-2→grid-cols-1 xs:grid-cols-2 - Reason: On very small screens (320px phones), 2 columns of contact cards with icons and text were cramped. Cards now stack at 1-column below 375px.
5. Header / Navigation (/components/Header.astro)
Status: ✅ Fully Responsive
| Breakpoint | Behavior |
|---|---|
| < lg | Hamburger menu button shown, slide-out drawer |
| lg+ | Horizontal nav menu + CTA button |
Mobile Menu Features:
- Slide-out drawer from right (
w-80 max-w-[85vw]) - Overlay backdrop with click-to-dismiss
- Animated hamburger → X icon transition
- Staggered link entrance animation
- Closes on Escape key, resize to desktop, overlay click
Logo Behavior:
- Mobile:
Wicon only (text hidden withhidden sm:block) - Small+: Full logo with "WorkRoot" + "IT Solutions" subtitle
6. Footer
Status: ✅ Fully Responsive (verified via code exploration)
The footer uses standard responsive grid patterns matching the rest of the site.
Component Responsive Patterns
Container System
/* .container-wrapper in global.css */
max-width: 80rem; /* 1280px */
margin: auto;
padding: 0 1rem; /* mobile */
/* sm: padding 0 1.5rem */
/* lg: padding 0 2rem */
Typography Scale
| Context | Mobile | Tablet | Desktop |
|---|---|---|---|
| H1 Hero | text-4xl (36px) | text-5xl (48px) | text-6xl+ (60px+) |
| H2 Section | text-3xl (30px) | text-4xl (36px) | text-4xl (36px) |
| Body | text-lg (18px) | text-xl (20px) | text-xl (20px) |
| Small | text-sm (14px) | text-sm (14px) | text-sm (14px) |
Grid Patterns Used
| Pattern | Usage |
|---|---|
grid-cols-1 md:grid-cols-2 |
Service cards, general 2-col |
grid-cols-1 md:grid-cols-2 lg:grid-cols-4 |
Benefits, process steps |
grid-cols-2 lg:grid-cols-4 |
Stats bars (hero sections) |
grid-cols-2 sm:grid-cols-4 |
Stats/trust indicators |
grid gap-8 sm:grid-cols-2 lg:grid-cols-3 |
Portfolio project grid |
grid lg:grid-cols-5 |
Contact page form + sidebar |
Testing Checklist
Manual Testing Devices/Sizes
Mobile (Priority 1)
- iPhone SE — 375×667 (smallest modern iPhone)
- iPhone 14 / Android mid-range — 390×844
- Pixel 7 — 412×915
Tablet (Priority 2)
- iPad portrait — 768×1024
- iPad landscape — 1024×768
- iPad Pro — 1024×1366
Desktop (Priority 3)
- Laptop 13" — 1280×800
- Desktop HD — 1920×1080
- Desktop 4K — 2560×1440
Test Cases Per Page
All Pages:
- No horizontal scroll (overflow-x hidden)
- Navigation works at all breakpoints
- Text remains readable (no overflow/truncation)
- Images maintain aspect ratios
- Interactive elements have adequate touch targets (min 44×44px)
- Focus states visible at all breakpoints
Homepage:
- Hero section fills viewport height on all sizes
- Testimonial carousel controls are accessible on touch
- FAQ accordion works on mobile
- Stats counter animation triggers correctly
Services:
- Pricing cards don't overflow on mobile (verify
md:scale-105fix) - Service detail sections alternate correctly on desktop
- Floating stats badges (hidden on mobile, visible sm+)
Portfolio:
- Filter tabs wrap gracefully on small screens
- Case study modal is scrollable on mobile
- Gallery navigation buttons are tappable on touch
- Project cards display at correct column count
Contact:
- Form fields stack appropriately on mobile
- Budget option chips wrap correctly
- Contact info cards at 1-col (320px) and 2-col (375px+)
- Form submission works on mobile keyboards
Automated Testing
Playwright tests for responsive design are located in:
tests/cross-browser.spec.ts— Cross-browser and viewport testingtests/accessibility.spec.ts— WCAG compliance at various viewports
Run responsive tests:
npx playwright test --grep "responsive"
Known Issues / Notes
-
Testimonial carousel on mobile: The carousel uses 100% translateX transforms. On very small screens, touch swipe is not implemented (only button navigation). Future enhancement: add touch/swipe support.
-
Portfolio tech filter panel: When expanded, the technology filter pills use
flex flex-wrapwhich can result in many rows on small screens. This is acceptable UX but could be improved with a dropdown on mobile. -
Services page visual illustrations: The service detail "visual element" (decorative mock-up) uses
aspect-square. On mobile this renders as a tall square. On very narrow screens (320px), this can be visually heavy. Consider addingmax-h-64 sm:aspect-squarefor tighter control. -
Print styles: No print-specific styles are defined. If print support is needed, add
@media printrules.
CSS Custom Properties for Responsive Spacing
/* Defined in src/styles/global.css */
--section-padding: 6rem; /* Desktop: py-24 */
--section-padding-sm: 4rem; /* Mobile: py-16 */
--container-max: 80rem; /* max-w-7xl */
These are referenced as Tailwind utilities (.py-section, .py-section-sm) throughout the site for consistent section spacing.