# QA Report: UI Layout Overflow & Responsiveness Test **Date:** 2026-05-11 **Environment:** http://10.6.80.114:18080 **Browser:** Chromium (Playwright headless) **Test Credentials:** test-user-a / TestUserA123! --- ## Test Results Summary | # | Test | Status | Issues Found | |----|------|--------|-------------| | 1 | Login Page Layout | ✅ Pass | 1 Low | | 2 | Home Page | ✅ Pass | 0 | | 3 | Chart Browser (Registries) | ✅ Pass | 0 | | 4 | Instances Page | ✅ Pass | 0 | | 5 | Monitoring Page | ✅ Pass | 0 | | 6 | Tablet Responsive (768px) | ✅ Pass | 0 | | 7 | Mobile Responsive (375px) | ✅ Pass | 0 | | 8 | Deep DOM Overflow Analysis | ✅ Pass | 0 | | 9 | Source Code CSS Pattern Audit | ✅ Pass | 2 Info | | 10 | Text Visibility & Contrast | ⚠️ 1 Issue | 1 Medium | --- ## 1. Login Page (AuthPage.tsx) **Location:** `frontend/src/features/auth/pages/AuthPage.tsx` **Layout:** - Form card is `max-w-md` (448px), horizontally centered via `flex items-center justify-center` - Desktop viewport (1920×1080): card is perfectly centered (checked via bounding rect) - Background: `bg-slate-50` with gradient overlay - Card: `bg-white/95 backdrop-blur-xl` with `shadow-2xl` **Responsive:** - Padding: `px-4 sm:px-6` — increases from 16px → 24px on `sm:` breakpoint - Card padding: `p-6 sm:p-7` - Icon: `w-11 h-11` — fixed size, not responsive ### ✅ Issue #1-LOW: Login error text color contrast - **File:** `AuthPage.tsx:96` - **Pattern:** `
`
- **Problem:** `text-red-400` (`#f87171`) on white background has a contrast ratio of ~2.5:1, which fails WCAG AA (minimum 4.5:1 for normal text). Error messages may be hard to read for users with visual impairments.
- **Recommendation:** Use `text-red-600` or `text-red-700` for error text on white backgrounds.
---
## 2. Home Page
**Location:** `frontend/src/features/home/pages/HomePage.tsx`
**Layout:**
- Main container: `min-h-full bg-slate-50 px-4 py-6 sm:px-6 lg:px-8`
- Two-column layout on large screens: `lg:grid-cols-[1.4fr_0.8fr]`
- Feature cards: `md:grid-cols-3`
- Quick actions: `md:grid-cols-3`
**Scroll:** ScrollHeight=1080, Viewport=1080 — content fits exactly without scrolling on 1080p.
**Overflow:** No horizontal overflow detected. Proper use of responsive padding and grid columns.
### Passing — no issues found.
---
## 3. Chart Browser / Registries
**Location:** `frontend/src/features/artifact/registries/pages/ArtifactBrowserPage.tsx`
**Layout (Desktop):**
- Main layout: `flex-1 flex overflow-hidden bg-slate-50` (sidebar + detail panes)
- Sidebar tree: `flex-1 overflow-y-auto custom-scrollbar`
- Detail pane: `flex-1 flex flex-col bg-white overflow-hidden`
- Tag grid: `grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`
**Tablet (768px):** No overflow. Grid collapses to 2 columns.
**Mobile (375px):** No overflow. Grid collapses to 1 column.
### Key Patterns Found:
- `RepositoryItem.tsx:212` — `` — proper truncation with `title` tooltip
- `ArtifactBrowserPage.tsx:336` — ` ` — uses 11px text with truncation
- `TagCard.tsx` — uses truncation with `title` attribute for long names
### Passing — no overflow issues found.
---
## 4. Instances Page
**Location:** `frontend/src/features/artifact/instances/pages/InstancesManagementPage.tsx`
**Component:** `InstanceCard.tsx`
**Layout:**
- Cluster cards: responsive grid `clusters.length > 1 ? 'md:grid-cols-3' : 'md:grid-cols-2'`
- Instance cards listed in single column then `lg:grid-cols-2 gap-6`
- Action buttons grid: `grid-cols-2 gap-2 md:grid-cols-3 xl:grid-cols-5`
### ✅ Issue #2-INFO: Action button text truncation on InstanceCards
- **File:** `InstanceCard.tsx:285-327`
- **Pattern:**
```
{instanceName}
`
- **Analysis:** Instance names could be long, `truncate` will clip with ellipsis. No `title` attribute on this element — unlike repository text below it.
- **Recommendation:** Add `title={instanceName}` to the `` element for tooltip on overflow.
### Passing — no critical overflow issues found.
---
## 5. Monitoring / Clusters
**Location:** `frontend/src/features/monitoring/clusters/`
**Layout:**
- Cluster cards grid: `grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`
- Card header: `
` with cluster name
- Metrics: `grid-cols-2 sm:grid-cols-4 gap-4 mb-3`
- Resource bars: `overflow-hidden` for proper progress bar clipping
- Node details: `grid-cols-1 lg:grid-cols-2 gap-3`
**Overflow Check:** ScrollWidth = clientWidth at all tested viewports — no horizontal overflow.
**Responsive:**
- 1920px: 4 columns of cluster cards
- 768px: 2 columns
- 375px: 1 column
### Passing — no issues found.
---
## 6. Sidebar Layout
**Location:** `frontend/src/shared/components/layout/SidebarLayout/`
**Layout:**
- Parent: `min-h-screen flex bg-dark text-primary overflow-hidden`
- Nav: `flex-1 p-3 space-y-1 overflow-y-auto` — independently scrollable
- Footer: Fixed at bottom, `p-3 text-xs text-muted`
**Scroll Analysis:**
- Content area has `overflow-y-auto`, so sidebar nav items scroll independently when they exceed viewport height
- The footer anchors to the bottom of the sidebar (not the scroll area)
- At 1080px viewport, sidebar content fits without scrolling
**Potential Concern:** If many nav items are added, the footer will push below the fold and the user must scroll the nav to see it. The `overflow-y-auto` on the `