{ "config": { "configFile": "/home/senke/git/talas/veza/apps/web/playwright.config.ts", "rootDir": "/home/senke/git/talas/veza/apps/web/e2e/tests", "forbidOnly": false, "fullyParallel": true, "globalSetup": "/home/senke/git/talas/veza/apps/web/e2e/global-setup.ts", "globalTeardown": null, "globalTimeout": 0, "grep": {}, "grepInvert": null, "maxFailures": 0, "metadata": { "actualWorkers": 1 }, "preserveOutput": "always", "reporter": [ [ "html", null ], [ "json", { "outputFile": "e2e-results.json" } ] ], "reportSlowTests": { "max": 5, "threshold": 300000 }, "quiet": false, "projects": [ { "outputDir": "/home/senke/git/talas/veza/apps/web/test-results", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 1 }, "id": "chromium", "name": "chromium", "testDir": "/home/senke/git/talas/veza/apps/web/e2e/tests", "testIgnore": [], "testMatch": [ "**/*.@(spec|test).?(c|m)[jt]s?(x)" ], "timeout": 60000 }, { "outputDir": "/home/senke/git/talas/veza/apps/web/test-results", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 1 }, "id": "firefox", "name": "firefox", "testDir": "/home/senke/git/talas/veza/apps/web/e2e/tests", "testIgnore": [], "testMatch": [ "**/*.@(spec|test).?(c|m)[jt]s?(x)" ], "timeout": 60000 }, { "outputDir": "/home/senke/git/talas/veza/apps/web/test-results", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 1 }, "id": "webkit", "name": "webkit", "testDir": "/home/senke/git/talas/veza/apps/web/e2e/tests", "testIgnore": [], "testMatch": [ "**/*.@(spec|test).?(c|m)[jt]s?(x)" ], "timeout": 60000 }, { "outputDir": "/home/senke/git/talas/veza/apps/web/test-results", "repeatEach": 1, "retries": 0, "metadata": { "actualWorkers": 1 }, "id": "msedge", "name": "msedge", "testDir": "/home/senke/git/talas/veza/apps/web/e2e/tests", "testIgnore": [], "testMatch": [ "**/*.@(spec|test).?(c|m)[jt]s?(x)" ], "timeout": 60000 } ], "shard": null, "tags": [], "updateSnapshots": "missing", "updateSourceMethod": "patch", "version": "1.57.0", "workers": 1, "webServer": { "command": "npm run dev", "url": "http://localhost:5173", "reuseExistingServer": true, "timeout": 120000 } }, "suites": [ { "title": "ui-audit.spec.ts", "file": "ui-audit.spec.ts", "column": 0, "line": 0, "specs": [], "suites": [ { "title": "Dynamic UI/UX Audit", "file": "ui-audit.spec.ts", "line": 23, "column": 6, "specs": [ { "title": "Audit page: /dashboard", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 5132, "errors": [], "stdout": [ { "text": "🔐 [LOGIN] Attempting authentication as e2e@test.com...\n" }, { "text": "⏳ [LOGIN] Waiting 500ms before login (1769366024585ms since last login)...\n" }, { "text": " ✅ TOKEN FOUND: eyJhbGciOiJIUzI1NiIsInR5cCI6Ik... (source: auth-storage)\n" }, { "text": "✅ [LOGIN] Already authenticated (redirected to dashboard via Global Setup)\n" }, { "text": "✅ [LOGIN] Application fully hydrated\n" }, { "text": "\n🔍 Auditing /dashboard...\n" }, { "text": "⚠️ Console Errors on /dashboard: [\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m\n]\n" }, { "text": "⚠️ Found 2 interactive elements smaller than 32x32px on /dashboard\n" }, { "text": "✅ Audit complete for /dashboard\n" } ], "stderr": [], "retry": 0, "startTime": "2026-01-25T18:33:44.423Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "b1f5fdeb991d5e404bae-7b12d2d1c26cca8ae4ab", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /library", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 4850, "errors": [], "stdout": [ { "text": "🔐 [LOGIN] Attempting authentication as e2e@test.com...\n" }, { "text": "⏳ [LOGIN] Waiting 500ms before login (4593ms since last login)...\n" }, { "text": " ✅ TOKEN FOUND: eyJhbGciOiJIUzI1NiIsInR5cCI6Ik... (source: auth-storage)\n" }, { "text": "✅ [LOGIN] Already authenticated (redirected to dashboard via Global Setup)\n" }, { "text": "✅ [LOGIN] Application fully hydrated\n" }, { "text": "\n🔍 Auditing /library...\n" }, { "text": "⚠️ Console Errors on /library: [\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m\n]\n" }, { "text": "⚠️ Found 2 interactive elements smaller than 32x32px on /library\n" }, { "text": "✅ Audit complete for /library\n" } ], "stderr": [], "retry": 0, "startTime": "2026-01-25T18:33:49.630Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "b1f5fdeb991d5e404bae-9ba15251363700ccfc0d", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /marketplace", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "passed", "duration": 4735, "errors": [], "stdout": [ { "text": "🔐 [LOGIN] Attempting authentication as e2e@test.com...\n" }, { "text": "⏳ [LOGIN] Waiting 500ms before login (4358ms since last login)...\n" }, { "text": " ✅ TOKEN FOUND: eyJhbGciOiJIUzI1NiIsInR5cCI6Ik... (source: auth-storage)\n" }, { "text": "✅ [LOGIN] Already authenticated (redirected to dashboard via Global Setup)\n" }, { "text": "✅ [LOGIN] Application fully hydrated\n" }, { "text": "\n🔍 Auditing /marketplace...\n" }, { "text": "⚠️ Console Errors on /marketplace: [\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 401 (Unauthorized)'\u001b[39m,\n \u001b[32m'[http://localhost:5173/dashboard] Failed to load resource: the server responded with a status of 400 (Bad Request)'\u001b[39m\n]\n" }, { "text": "⚠️ Found 2 interactive elements smaller than 32x32px on /marketplace\n" }, { "text": "✅ Audit complete for /marketplace\n" } ], "stderr": [], "retry": 0, "startTime": "2026-01-25T18:33:54.497Z", "annotations": [], "attachments": [] } ], "status": "expected" } ], "id": "b1f5fdeb991d5e404bae-3c89b9aed6b563183f59", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /settings", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [ { "workerIndex": 0, "parallelIndex": 0, "status": "interrupted", "duration": 20580, "error": { "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 15000ms\u001b[22m\n\u001b[2m - waiting for locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\u001b[22m\n", "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 15000ms\u001b[22m\n\u001b[2m - waiting for locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\u001b[22m\n\n at loginAsUser (/home/senke/git/talas/veza/apps/web/e2e/utils/test-helpers.ts:415:82)\n at /home/senke/git/talas/veza/apps/web/e2e/tests/ui-audit.spec.ts:33:9", "location": { "file": "/home/senke/git/talas/veza/apps/web/e2e/utils/test-helpers.ts", "column": 82, "line": 415 }, "snippet": "\u001b[90m at \u001b[39m../utils/test-helpers.ts:415\n\n\u001b[0m \u001b[90m 413 |\u001b[39m\n \u001b[90m 414 |\u001b[39m \u001b[90m// Vérifier que l'utilisateur est authentifié (sidebar visible)\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 415 |\u001b[39m \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'nav[role=\"navigation\"], aside[role=\"navigation\"]'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 416 |\u001b[39m timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 417 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 418 |\u001b[39m\u001b[0m" }, "errors": [ { "location": { "file": "/home/senke/git/talas/veza/apps/web/e2e/utils/test-helpers.ts", "column": 82, "line": 415 }, "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m - Expect \"toBeVisible\" with timeout 15000ms\u001b[22m\n\u001b[2m - waiting for locator('nav[role=\"navigation\"], aside[role=\"navigation\"]')\u001b[22m\n\n\n\u001b[90m at \u001b[39m../utils/test-helpers.ts:415\n\n\u001b[0m \u001b[90m 413 |\u001b[39m\n \u001b[90m 414 |\u001b[39m \u001b[90m// Vérifier que l'utilisateur est authentifié (sidebar visible)\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 415 |\u001b[39m \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'nav[role=\"navigation\"], aside[role=\"navigation\"]'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 416 |\u001b[39m timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 417 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 418 |\u001b[39m\u001b[0m\n\u001b[2m at loginAsUser (/home/senke/git/talas/veza/apps/web/e2e/utils/test-helpers.ts:415:82)\u001b[22m\n\u001b[2m at /home/senke/git/talas/veza/apps/web/e2e/tests/ui-audit.spec.ts:33:9\u001b[22m" } ], "stdout": [ { "text": "🔐 [LOGIN] Attempting authentication as e2e@test.com...\n" }, { "text": "⏳ [LOGIN] Waiting 500ms before login (4251ms since last login)...\n" }, { "text": "✏️ [LOGIN] User not authenticated, proceeding with login form...\n" }, { "text": "⚡ [FORM SUBMIT] Forcing submission of form: form\n" }, { "text": "🔍 [FORM SUBMIT] Waiting for form selector: form\n" }, { "text": "⏳ [FORM SUBMIT] Waiting for React to update state...\n" }, { "text": "🚀 [FORM SUBMIT] Submitting form...\n" }, { "text": "✅ [FORM SUBMIT] Form form submitted successfully\n" }, { "text": "⏳ [LOGIN] Waiting for networkidle after navigation...\n" } ], "stderr": [ { "text": "⚠️ [LOGIN] Form not visible and not on dashboard. Proceeding (might fail)...\n" } ], "retry": 0, "startTime": "2026-01-25T18:33:59.245Z", "annotations": [], "attachments": [ { "name": "screenshot", "contentType": "image/png", "path": "/home/senke/git/talas/veza/apps/web/test-results/ui-audit-Dynamic-UI-UX-Audit-Audit-page-settings-chromium/test-failed-1.png" }, { "name": "video", "contentType": "video/webm", "path": "/home/senke/git/talas/veza/apps/web/test-results/ui-audit-Dynamic-UI-UX-Audit-Audit-page-settings-chromium/video.webm" } ], "errorLocation": { "file": "/home/senke/git/talas/veza/apps/web/e2e/utils/test-helpers.ts", "column": 82, "line": 415 } } ], "status": "skipped" } ], "id": "b1f5fdeb991d5e404bae-168e6537046bc9804464", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /profile/me", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [], "status": "skipped" } ], "id": "b1f5fdeb991d5e404bae-c6919a14d064b6a9ad38", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /studio", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [], "status": "skipped" } ], "id": "b1f5fdeb991d5e404bae-c31a81927a44faedaff5", "file": "ui-audit.spec.ts", "line": 37, "column": 9 }, { "title": "Audit page: /messages", "ok": true, "tags": [], "tests": [ { "timeout": 60000, "annotations": [], "expectedStatus": "passed", "projectId": "chromium", "projectName": "chromium", "results": [], "status": "skipped" } ], "id": "b1f5fdeb991d5e404bae-102430bbd33e8fefb9ff", "file": "ui-audit.spec.ts", "line": 37, "column": 9 } ] } ] } ], "errors": [], "stats": { "startTime": "2026-01-25T18:33:42.805Z", "duration": 37081.33, "expected": 3, "skipped": 4, "unexpected": 0, "flaky": 0 } }