mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-10-30 18:22:59 +00:00
Implemented comprehensive improvements to builder page: ā Loading States: - Skeleton cards during initial load (8 cards with pulsing animation) - Per-iframe loading spinners with "Loading preview..." text - Error states with retry buttons for failed iframes - Smooth fade-in animations (300ms opacity transition) - Minimum 200ms display time to prevent flashing ā Visual Design: - Rounded corners (rounded-lg) for modern look - Subtle shadows (shadow-sm) with hover increase (shadow-lg) - Smooth hover effects (scale-[1.02], bg-accent/5) - Better typography (text-base font-semibold for block names) - Category badges (outline variant) - Subcategory badges (secondary variant) - Improved spacing (p-4) and layout ā UX Improvements: - Header loading spinner during block fetch - Disabled input during loading - Dynamic count display ("Loading..." vs "X blocks") - Empty state with clear filter button - Proper error handling with retry mechanism ā Technical: - Removed lazy loading for eager iframe loading - Changed from aspect-video to aspect-[4/3] - Added min-h-[400px] for better previews - State management per iframe (loaded, error, showContent) - Proper cleanup with useEffect returns Note: Iframe content still not rendering - needs investigation of /view/[name] route
258 lines
7.1 KiB
JSON
258 lines
7.1 KiB
JSON
{
|
|
"config": {
|
|
"configFile": "/Users/z/work/hanzo/ui/playwright.config.ts",
|
|
"rootDir": "/Users/z/work/hanzo/ui/tests",
|
|
"forbidOnly": false,
|
|
"fullyParallel": true,
|
|
"globalSetup": null,
|
|
"globalTeardown": null,
|
|
"globalTimeout": 0,
|
|
"grep": {},
|
|
"grepInvert": null,
|
|
"maxFailures": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"preserveOutput": "always",
|
|
"reporter": [
|
|
[
|
|
"html",
|
|
{
|
|
"outputFolder": "tests/reports/playwright-report"
|
|
}
|
|
],
|
|
[
|
|
"json",
|
|
{
|
|
"outputFile": "tests/reports/test-results.json"
|
|
}
|
|
],
|
|
[
|
|
"list",
|
|
null
|
|
]
|
|
],
|
|
"reportSlowTests": {
|
|
"max": 5,
|
|
"threshold": 300000
|
|
},
|
|
"quiet": false,
|
|
"projects": [
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "chromium",
|
|
"name": "chromium",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"**/*.@(spec|test).?(c|m)[jt]s?(x)"
|
|
],
|
|
"timeout": 30000
|
|
},
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "firefox",
|
|
"name": "firefox",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"**/*.@(spec|test).?(c|m)[jt]s?(x)"
|
|
],
|
|
"timeout": 30000
|
|
},
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "webkit",
|
|
"name": "webkit",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"**/*.@(spec|test).?(c|m)[jt]s?(x)"
|
|
],
|
|
"timeout": 30000
|
|
},
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "Mobile Chrome",
|
|
"name": "Mobile Chrome",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"**/*.@(spec|test).?(c|m)[jt]s?(x)"
|
|
],
|
|
"timeout": 30000
|
|
},
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "Mobile Safari",
|
|
"name": "Mobile Safari",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"**/*.@(spec|test).?(c|m)[jt]s?(x)"
|
|
],
|
|
"timeout": 30000
|
|
},
|
|
{
|
|
"outputDir": "/Users/z/work/hanzo/ui/test-results",
|
|
"repeatEach": 1,
|
|
"retries": 0,
|
|
"metadata": {
|
|
"actualWorkers": 1
|
|
},
|
|
"id": "visual",
|
|
"name": "visual",
|
|
"testDir": "/Users/z/work/hanzo/ui/tests",
|
|
"testIgnore": [],
|
|
"testMatch": [
|
|
"/visual\\/.*.spec.ts/"
|
|
],
|
|
"timeout": 30000
|
|
}
|
|
],
|
|
"shard": null,
|
|
"updateSnapshots": "missing",
|
|
"updateSourceMethod": "patch",
|
|
"version": "1.56.1",
|
|
"workers": 5,
|
|
"webServer": {
|
|
"command": "cd app && rm -rf .next && E2E_TEST=true pnpm dev",
|
|
"port": 3333,
|
|
"reuseExistingServer": true,
|
|
"timeout": 120000
|
|
}
|
|
},
|
|
"suites": [
|
|
{
|
|
"title": "review-builder-scroll.spec.ts",
|
|
"file": "review-builder-scroll.spec.ts",
|
|
"column": 0,
|
|
"line": 0,
|
|
"specs": [
|
|
{
|
|
"title": "Review builder page with scrolling screenshots",
|
|
"ok": true,
|
|
"tags": [],
|
|
"tests": [
|
|
{
|
|
"timeout": 30000,
|
|
"annotations": [],
|
|
"expectedStatus": "passed",
|
|
"projectId": "chromium",
|
|
"projectName": "chromium",
|
|
"results": [
|
|
{
|
|
"workerIndex": 0,
|
|
"parallelIndex": 0,
|
|
"status": "passed",
|
|
"duration": 7791,
|
|
"errors": [],
|
|
"stdout": [
|
|
{
|
|
"text": "\nš BUILDER PAGE REVIEW TEST\n"
|
|
},
|
|
{
|
|
"text": "============================================================\n"
|
|
},
|
|
{
|
|
"text": "\nšø Capturing screenshots at different scroll positions...\n\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-top.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-scroll-500.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-scroll-1500.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-scroll-2500.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-middle.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-bottom.png\n"
|
|
},
|
|
{
|
|
"text": "ā Captured: review-builder-FULL.png (complete page)\n"
|
|
},
|
|
{
|
|
"text": "\n============================================================\n"
|
|
},
|
|
{
|
|
"text": "š PAGE ANALYSIS:\n"
|
|
},
|
|
{
|
|
"text": "============================================================\n"
|
|
},
|
|
{
|
|
"text": "Header: Blocks\n"
|
|
},
|
|
{
|
|
"text": "Count Display: 80 blocks\n"
|
|
},
|
|
{
|
|
"text": "Actual Iframes: 80\n"
|
|
},
|
|
{
|
|
"text": "\nā
All screenshots captured in tests/ directory\n"
|
|
},
|
|
{
|
|
"text": "============================================================\n"
|
|
}
|
|
],
|
|
"stderr": [],
|
|
"retry": 0,
|
|
"startTime": "2025-11-16T07:38:07.132Z",
|
|
"annotations": [],
|
|
"attachments": []
|
|
}
|
|
],
|
|
"status": "expected"
|
|
}
|
|
],
|
|
"id": "77562e6deb6e4d1063f6-4b9f052a42fe5600378b",
|
|
"file": "review-builder-scroll.spec.ts",
|
|
"line": 3,
|
|
"column": 1
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"errors": [],
|
|
"stats": {
|
|
"startTime": "2025-11-16T07:38:06.701Z",
|
|
"duration": 8520.823,
|
|
"expected": 1,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
}
|
|
} |