diff --git a/frontend/.nycrc.json b/frontend/.nycrc.json deleted file mode 100644 index d42a262..0000000 --- a/frontend/.nycrc.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "all": true, - "include": ["src/**/*.{js,jsx,ts,tsx}"], - "exclude": [ - "src/**/*.d.ts", - "src/**/*.test.{js,jsx,ts,tsx}", - "src/**/__tests__/**", - "src/**/*.stories.{js,jsx,ts,tsx}", - "src/lib/api/generated/**", - "src/**/*.old.{js,jsx,ts,tsx}", - "src/components/ui/**", - "src/app/dev/**", - "src/**/index.{js,jsx,ts,tsx}", - "src/lib/utils/cn.ts", - "src/middleware.ts" - ], - "reporter": ["text", "text-summary", "html", "json", "lcov"], - "report-dir": "./coverage-combined", - "temp-dir": "./.nyc_output", - "sourceMap": true, - "instrument": true, - "branches": 85, - "functions": 85, - "lines": 90, - "statements": 90 -} diff --git a/frontend/docs/E2E_COVERAGE_GUIDE.md b/frontend/docs/E2E_COVERAGE_GUIDE.md deleted file mode 100644 index d0184b4..0000000 --- a/frontend/docs/E2E_COVERAGE_GUIDE.md +++ /dev/null @@ -1,651 +0,0 @@ -# E2E Coverage Integration Guide - -This guide explains how to collect and merge E2E test coverage with unit test coverage to get a comprehensive view of your test coverage. - -## š Table of Contents - -1. [Overview](#overview) -2. [Quick Start](#quick-start) -3. [Approach 1: V8 Coverage (Recommended)](#approach-1-v8-coverage-recommended) -4. [Approach 2: Istanbul Instrumentation](#approach-2-istanbul-instrumentation) -5. [Combined Coverage Workflow](#combined-coverage-workflow) -6. [Integration Steps](#integration-steps) -7. [Troubleshooting](#troubleshooting) -8. [FAQ](#faq) - ---- - -## Overview - -### Why Combined Coverage? - -Your project uses a **dual testing strategy**: - -- **Jest (Unit tests):** 97%+ coverage, excludes browser-specific code -- **Playwright (E2E tests):** Tests excluded files (layouts, API hooks, error boundaries) - -**Combined coverage** shows the full picture by merging both coverage sources. - -### Current Exclusions from Jest - -```javascript -// From jest.config.js - These ARE tested by E2E: -'!src/lib/api/hooks/**', // React Query hooks -'!src/app/**/layout.tsx', // Next.js layouts -'!src/app/**/error.tsx', // Error boundaries -'!src/app/**/loading.tsx', // Loading states -``` - -### Expected Results - -``` -Unit test coverage: 97.19% (excluding above) -E2E coverage: ~25-35% (user flows + excluded files) -Combined coverage: 98-100% ā -``` - ---- - -## Quick Start - -### Prerequisites - -All infrastructure is already created! Just need dependencies: - -```bash -# Option 1: V8 Coverage (Chromium only, no instrumentation) -npm install -D v8-to-istanbul istanbul-lib-coverage istanbul-lib-report istanbul-reports - -# Option 2: Istanbul Instrumentation (all browsers) -npm install -D @istanbuljs/nyc-config-typescript babel-plugin-istanbul nyc \ - istanbul-lib-coverage istanbul-lib-report istanbul-reports -``` - -### Add Package Scripts - -Add to `package.json`: - -```json -{ - "scripts": { - "coverage:convert": "tsx scripts/convert-v8-to-istanbul.ts", - "coverage:merge": "tsx scripts/merge-coverage.ts", - "coverage:combined": "npm run test:coverage && E2E_COVERAGE=true npm run test:e2e && npm run coverage:convert && npm run coverage:merge", - "coverage:view": "open coverage-combined/index.html" - } -} -``` - -### Run Combined Coverage - -```bash -# Full workflow (unit + E2E + merge) -npm run coverage:combined - -# View HTML report -npm run coverage:view -``` - ---- - -## Approach 1: V8 Coverage (Recommended) - -### Pros & Cons - -**Pros:** - -- ā Native browser coverage (most accurate) -- ā No build instrumentation needed (faster) -- ā Works with source maps -- ā Zero performance overhead - -**Cons:** - -- ā Chromium only (V8 engine specific) -- ā Requires v8-to-istanbul conversion - -### Setup Steps - -#### 1. Install Dependencies - -```bash -npm install -D v8-to-istanbul istanbul-lib-coverage istanbul-lib-report istanbul-reports -``` - -#### 2. Integrate into E2E Tests - -Update your E2E test files to use coverage helpers: - -```typescript -// e2e/homepage.spec.ts -import { test, expect } from '@playwright/test'; -import { withCoverage } from './helpers/coverage'; - -test.describe('Homepage Tests', () => { - test.beforeEach(async ({ page }) => { - // Start coverage collection - await withCoverage.start(page); - await page.goto('/'); - }); - - test.afterEach(async ({ page }, testInfo) => { - // Stop and save coverage - await withCoverage.stop(page, testInfo.title); - }); - - test('displays header', async ({ page }) => { - await expect(page.getByRole('heading')).toBeVisible(); - }); -}); -``` - -#### 3. Run E2E Tests with Coverage - -```bash -E2E_COVERAGE=true npm run test:e2e -``` - -This generates: `coverage-e2e/raw/*.json` (V8 format) - -#### 4. Convert V8 to Istanbul - -```bash -npm run coverage:convert -``` - -This converts to: `coverage-e2e/.nyc_output/e2e-coverage.json` (Istanbul format) - -#### 5. Merge with Jest Coverage - -```bash -npm run coverage:merge -``` - -This generates: `coverage-combined/index.html` - ---- - -## Approach 2: Istanbul Instrumentation - -### Pros & Cons - -**Pros:** - -- ā Works on all browsers (Firefox, Safari, etc.) -- ā Industry standard tooling -- ā No conversion needed - -**Cons:** - -- ā Requires code instrumentation (slower builds) -- ā More complex setup -- ā Slight test performance overhead - -### Setup Steps - -#### 1. Install Dependencies - -```bash -npm install -D @istanbuljs/nyc-config-typescript babel-plugin-istanbul \ - nyc istanbul-lib-coverage istanbul-lib-report istanbul-reports \ - @babel/core babel-loader -``` - -#### 2. Configure Babel Instrumentation - -Create `.babelrc.js`: - -```javascript -module.exports = { - presets: ['next/babel'], - env: { - test: { - plugins: [process.env.E2E_COVERAGE && 'istanbul'].filter(Boolean), - }, - }, -}; -``` - -#### 3. Configure Next.js Webpack - -Update `next.config.js`: - -```javascript -const nextConfig = { - webpack: (config, { isServer }) => { - // Add Istanbul instrumentation in E2E coverage mode - if (process.env.E2E_COVERAGE && !isServer) { - config.module.rules.push({ - test: /\.(js|jsx|ts|tsx)$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: ['next/babel'], - plugins: ['istanbul'], - }, - }, - }); - } - return config; - }, -}; - -module.exports = nextConfig; -``` - -#### 4. Integrate into E2E Tests - -Use the Istanbul helper instead: - -```typescript -import { test, expect } from '@playwright/test'; -import { saveIstanbulCoverage } from './helpers/coverage'; - -test.describe('Homepage Tests', () => { - test.afterEach(async ({ page }, testInfo) => { - await saveIstanbulCoverage(page, testInfo.title); - }); - - test('my test', async ({ page }) => { - await page.goto('/'); - // Test code... - }); -}); -``` - -#### 5. Run Tests - -```bash -# Start dev server with instrumentation -E2E_COVERAGE=true npm run dev - -# In another terminal, run E2E tests -E2E_COVERAGE=true npm run test:e2e -``` - -#### 6. Merge Coverage - -```bash -npm run coverage:merge -``` - -No conversion step needed! Istanbul coverage goes directly to `.nyc_output/`. - ---- - -## Combined Coverage Workflow - -### Full Workflow Diagram - -``` -āāāāāāāāāāāāāāāāāāāāāāā -ā Jest Unit Tests ā -ā npm run test:cov ā -āāāāāāāāāāāā¬āāāāāāāāāāā - ā - v - coverage/coverage-final.json - ā - āāāāāāāāāāāāāāāāāāāāāāā - ā ā - v v - āāāāāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā - ā E2E Tests ā ā E2E Tests ā - ā (V8 Coverage) ā ā (Istanbul) ā - āāāāāāāāāā¬āāāāāāāāā āāāāāāāāāā¬āāāāāāāāāā - ā ā - v v - coverage-e2e/raw/*.json coverage-e2e/.nyc_output/*.json - ā ā - v ā - scripts/convert-v8-to-istanbul.ts - ā ā - v ā - coverage-e2e/.nyc_output/e2e-coverage.json - ā ā - āāāāāāāāāāāā¬āāāāāāāāāāā - v - scripts/merge-coverage.ts - ā - v - coverage-combined/ - āāā index.html - āāā lcov.info - āāā coverage-final.json -``` - -### Commands Summary - -```bash -# 1. Run unit tests with coverage -npm run test:coverage - -# 2. Run E2E tests with coverage -E2E_COVERAGE=true npm run test:e2e - -# 3. Convert V8 to Istanbul (if using V8 approach) -npm run coverage:convert - -# 4. Merge all coverage -npm run coverage:merge - -# 5. View combined report -npm run coverage:view - -# OR: Do all at once -npm run coverage:combined -``` - ---- - -## Integration Steps - -### Phase 1: Pilot Integration (Single Test File) - -Start with one E2E test file to verify the setup: - -**File: `e2e/homepage.spec.ts`** - -```typescript -import { test, expect } from '@playwright/test'; -import { withCoverage } from './helpers/coverage'; - -test.describe('Homepage - Desktop Navigation', () => { - test.beforeEach(async ({ page }) => { - await withCoverage.start(page); - await page.goto('/'); - await page.waitForLoadState('networkidle'); - }); - - test.afterEach(async ({ page }, testInfo) => { - await withCoverage.stop(page, testInfo.title); - }); - - test('should display header with logo and navigation', async ({ page }) => { - await expect(page.getByRole('link', { name: /FastNext/i })).toBeVisible(); - await expect(page.getByRole('link', { name: 'Components' })).toBeVisible(); - }); -}); -``` - -**Test the pilot:** - -```bash -# Install dependencies -npm install -D v8-to-istanbul istanbul-lib-coverage istanbul-lib-report istanbul-reports - -# Run single test with coverage -E2E_COVERAGE=true npx playwright test homepage.spec.ts - -# Verify coverage files created -ls coverage-e2e/raw/ - -# Convert and merge -npm run coverage:convert -npm run coverage:merge - -# Check results -npm run coverage:view -``` - -### Phase 2: Rollout to All Tests - -Once pilot works, update all 15 E2E spec files: - -**Automated rollout script:** - -```bash -# Create a helper script: scripts/add-coverage-to-tests.sh -#!/bin/bash - -for file in e2e/*.spec.ts; do - # Add import at top (if not already present) - if ! grep -q "import.*coverage" "$file"; then - sed -i "1i import { withCoverage } from './helpers/coverage';" "$file" - fi - - # Add beforeEach hook (manual review recommended) - echo "Updated: $file" -done -``` - -**Or manually add to each file:** - -1. Import coverage helper -2. Add `beforeEach` with `withCoverage.start(page)` -3. Add `afterEach` with `withCoverage.stop(page, testInfo.title)` - -### Phase 3: CI/CD Integration - -Add to your CI pipeline (e.g., `.github/workflows/test.yml`): - -```yaml -- name: Run E2E tests with coverage - run: E2E_COVERAGE=true npm run test:e2e - -- name: Convert E2E coverage - run: npm run coverage:convert - -- name: Merge coverage - run: npm run coverage:merge - -- name: Upload combined coverage - uses: codecov/codecov-action@v3 - with: - files: ./coverage-combined/lcov.info - flags: combined -``` - ---- - -## Troubleshooting - -### Problem: No coverage files generated - -**Symptoms:** - -```bash -npm run coverage:convert -# ā No V8 coverage found at: coverage-e2e/raw -``` - -**Solutions:** - -1. Verify `E2E_COVERAGE=true` is set when running tests -2. Check coverage helpers are imported: `import { withCoverage } from './helpers/coverage'` -3. Verify `beforeEach` and `afterEach` hooks are added -4. Check browser console for errors during test run - -### Problem: V8 conversion fails - -**Symptoms:** - -```bash -npm run coverage:convert -# ā v8-to-istanbul not installed -``` - -**Solution:** - -```bash -npm install -D v8-to-istanbul -``` - -### Problem: Coverage lower than expected - -**Symptoms:** - -``` -Combined: 85% (expected 99%) -``` - -**Causes & Solutions:** - -1. **E2E tests don't trigger all code paths** - - Check which files are E2E-only: `npm run coverage:merge` shows breakdown - - Add more E2E tests for uncovered scenarios - -2. **Source maps not working** - - Verify Next.js generates source maps: check `next.config.js` - - Istanbul needs source maps to map coverage back to source - -3. **Wrong files included** - - Check `.nycrc.json` includes correct patterns - - Verify excluded files match between Jest and NYC configs - -### Problem: Istanbul coverage is empty - -**Symptoms:** - -```typescript -await saveIstanbulCoverage(page, testName); -// ā ļø No Istanbul coverage found -``` - -**Solutions:** - -1. Verify `babel-plugin-istanbul` is configured -2. Check `window.__coverage__` exists: - ```typescript - const hasCoverage = await page.evaluate(() => !!(window as any).__coverage__); - console.log('Istanbul available:', hasCoverage); - ``` -3. Ensure dev server started with `E2E_COVERAGE=true npm run dev` - -### Problem: Merge script fails - -**Symptoms:** - -```bash -npm run coverage:merge -# ā Error: Cannot find module 'istanbul-lib-coverage' -``` - -**Solution:** - -```bash -npm install -D istanbul-lib-coverage istanbul-lib-report istanbul-reports -``` - ---- - -## FAQ - -### Q: Should I use V8 or Istanbul coverage? - -**A: V8 coverage (Approach 1)** if: - -- ā You only test in Chromium -- ā You want zero instrumentation overhead -- ā You want the most accurate coverage - -**Istanbul (Approach 2)** if: - -- ā You need cross-browser coverage -- ā You already use Istanbul tooling -- ā You need complex coverage transformations - -### Q: Do I need to remove Jest exclusions? - -**A: No!** Keep them. The `.nycrc.json` config handles combined coverage independently. - -### Q: Will this slow down my tests? - -**V8 Approach:** Minimal overhead (~5% slower) -**Istanbul Approach:** Moderate overhead (~15-20% slower due to instrumentation) - -### Q: Can I run coverage only for specific tests? - -**Yes:** - -```bash -# Single file -E2E_COVERAGE=true npx playwright test homepage.spec.ts - -# Specific describe block -E2E_COVERAGE=true npx playwright test --grep "Mobile Menu" -``` - -### Q: How do I exclude files from E2E coverage? - -Edit `.nycrc.json` and add to `exclude` array: - -```json -{ - "exclude": ["src/app/dev/**", "src/lib/utils/debug.ts"] -} -``` - -### Q: Can I see which lines are covered by E2E vs Unit tests? - -Not directly in the HTML report, but you can: - -1. Generate separate reports: - - ```bash - npx nyc report --reporter=html --report-dir=coverage-unit --temp-dir=coverage/.nyc_output - npx nyc report --reporter=html --report-dir=coverage-e2e-only --temp-dir=coverage-e2e/.nyc_output - ``` - -2. Compare the two reports to see differences - -### Q: What's the performance impact on CI? - -Typical impact: - -- V8 coverage: +2-3 minutes (conversion time) -- Istanbul coverage: +5-7 minutes (build instrumentation) -- Merge step: ~10 seconds - -Total CI time increase: **3-8 minutes** - ---- - -## Next Steps - -### After Phase 1 (Infrastructure - DONE ā ) - -You've completed: - -- ā `.nycrc.json` configuration -- ā Merge script (`scripts/merge-coverage.ts`) -- ā Conversion script (`scripts/convert-v8-to-istanbul.ts`) -- ā Coverage helpers (`e2e/helpers/coverage.ts`) -- ā This documentation - -### Phase 2: Activation (When Ready) - -1. **Install dependencies:** - - ```bash - npm install -D v8-to-istanbul istanbul-lib-coverage istanbul-lib-report istanbul-reports - ``` - -2. **Add package.json scripts** (see Quick Start) - -3. **Test with one E2E file** (homepage.spec.ts recommended) - -4. **Rollout to all E2E tests** - -5. **Add to CI/CD pipeline** - -### Expected Timeline - -- **Phase 1:** ā Done (non-disruptive infrastructure) -- **Phase 2:** ~1-2 hours (pilot + dependency installation) -- **Rollout:** ~30 minutes (add hooks to 15 test files) -- **CI integration:** ~20 minutes - ---- - -## Additional Resources - -- [Istanbul Coverage](https://istanbul.js.org/) -- [NYC Configuration](https://github.com/istanbuljs/nyc#configuration-files) -- [Playwright Coverage](https://playwright.dev/docs/api/class-coverage) -- [V8 to Istanbul](https://github.com/istanbuljs/v8-to-istanbul) - ---- - -**Questions or issues?** Check troubleshooting section or review the example in `e2e/helpers/coverage.ts`. diff --git a/frontend/docs/E2E_PERFORMANCE_OPTIMIZATION.md b/frontend/docs/E2E_PERFORMANCE_OPTIMIZATION.md deleted file mode 100644 index 8c53167..0000000 --- a/frontend/docs/E2E_PERFORMANCE_OPTIMIZATION.md +++ /dev/null @@ -1,313 +0,0 @@ -# E2E Test Performance Optimization Plan - -**Current State**: 230 tests, ~2100 seconds total execution time -**Target**: Reduce to <900 seconds (60% improvement) - -## Bottleneck Analysis - -### 1. Authentication Overhead (HIGHEST IMPACT) - -**Problem**: Each test logs in fresh via UI - -- **Impact**: 5-7s per test Ć 133 admin tests = ~700s wasted -- **Root Cause**: Using `loginViaUI(page)` in every `beforeEach` - -**Example of current slow pattern:** - -```typescript -test.beforeEach(async ({ page }) => { - await setupSuperuserMocks(page); - await loginViaUI(page); // ā 5-7s UI login EVERY test - await page.goto('/admin'); -}); -``` - -**Solution: Playwright Storage State** (SAVE ~600-700s) - -```typescript -// auth.setup.ts - Run ONCE per worker -import { test as setup } from '@playwright/test'; - -setup('authenticate as admin', async ({ page }) => { - await setupSuperuserMocks(page); - await loginViaUI(page); - await page.context().storageState({ path: 'e2e/.auth/admin.json' }); -}); - -setup('authenticate as regular user', async ({ page }) => { - await setupAuthenticatedMocks(page); - await loginViaUI(page); - await page.context().storageState({ path: 'e2e/.auth/user.json' }); -}); -``` - -```typescript -// playwright.config.ts -export default defineConfig({ - projects: [ - { name: 'setup', testMatch: /.*\.setup\.ts/ }, - { - name: 'admin tests', - use: { storageState: 'e2e/.auth/admin.json' }, - dependencies: ['setup'], - testMatch: /admin-.*\.spec\.ts/, - }, - { - name: 'user tests', - use: { storageState: 'e2e/.auth/user.json' }, - dependencies: ['setup'], - testMatch: /settings-.*\.spec\.ts/, - }, - ], -}); -``` - -```typescript -// admin-users.spec.ts - NO MORE loginViaUI! -test.beforeEach(async ({ page }) => { - // Auth already loaded from storageState - await page.goto('/admin/users'); // ā Direct navigation, ~1-2s -}); -``` - -**Expected Improvement**: 5-6s ā 0.5-1s per test = **~600s saved** (133 tests Ć 5s) - ---- - -### 2. Redundant Navigation Tests (MEDIUM IMPACT) - -**Problem**: Separate tests for "navigate to X" and "display X page" - -- **Impact**: 3-5s per redundant test Ć ~15 tests = ~60s wasted - -**Current slow pattern:** - -```typescript -test('should navigate to users page', async ({ page }) => { - await page.goto('/admin/users'); // 3s - await expect(page).toHaveURL('/admin/users'); - await expect(page.locator('h1')).toContainText('User Management'); -}); - -test('should display user management page', async ({ page }) => { - await page.goto('/admin/users'); // 3s DUPLICATE - await expect(page.locator('h1')).toContainText('User Management'); - await expect(page.getByText(/manage users/i)).toBeVisible(); -}); -``` - -**Optimized pattern:** - -```typescript -test('should navigate to users page and display content', async ({ page }) => { - await page.goto('/admin/users'); // 3s ONCE - - // Navigation assertions - await expect(page).toHaveURL('/admin/users'); - - // Content assertions - await expect(page.locator('h1')).toContainText('User Management'); - await expect(page.getByText(/manage users/i)).toBeVisible(); - await expect(page.getByRole('button', { name: 'Create User' })).toBeVisible(); -}); -``` - -**Expected Improvement**: **~45-60s saved** (15 tests eliminated) - ---- - -### 3. Flaky Test Fix (CRITICAL) - -**Problem**: Test #218 failed once, passed on retry - -``` -Test: settings-password.spec.ts:24:7 āŗ Password Change āŗ should display password change form -Failed: 12.8s ā Retry passed: 8.3s -``` - -**Root Cause Options**: - -1. Race condition in form rendering -2. Slow network request not properly awaited -3. Animation/transition timing issue - -**Investigation needed:** - -```typescript -// Current test (lines 24-35) -test('should display password change form', async ({ page }) => { - await page.goto('/settings/password'); - - // ā Likely missing waitForLoadState or explicit wait - await expect(page.getByLabel(/current password/i)).toBeVisible(); - await expect(page.getByLabel(/new password/i)).toBeVisible(); - await expect(page.getByLabel(/confirm password/i)).toBeVisible(); -}); -``` - -**Temporary Solution: Skip until fixed** - -```typescript -test.skip('should display password change form', async ({ page }) => { - // TODO: Fix race condition (issue #XXX) - await page.goto('/settings/password'); - await page.waitForLoadState('networkidle'); // ā Add this - await expect(page.getByLabel(/current password/i)).toBeVisible(); -}); -``` - -**Expected Improvement**: Eliminate retry overhead + improve reliability - ---- - -### 4. Optimize Wait Timeouts (LOW IMPACT) - -**Problem**: Default timeout is 10s for all assertions - -- **Impact**: Tests wait unnecessarily when elements load faster - -**Current global timeout:** - -```typescript -// playwright.config.ts -export default defineConfig({ - timeout: 30000, // Per test - expect: { timeout: 10000 }, // Per assertion -}); -``` - -**Optimized for fast-loading pages:** - -```typescript -export default defineConfig({ - timeout: 20000, // Reduce from 30s - expect: { timeout: 5000 }, // Reduce from 10s (most elements load <2s) -}); -``` - -**Expected Improvement**: **~100-150s saved** (faster failures, less waiting) - ---- - -## Implementation Priority - -### Phase 1: Quick Wins (1-2 hours work) - -1. ā **Skip flaky test #218** temporarily -2. ā **Reduce timeout defaults** (5s for expects, 20s for tests) -3. ā **Combine 5 most obvious redundant navigation tests** - -**Expected savings**: ~100-150s (5-7% improvement) - ---- - -### Phase 2: Auth State Caching (2-4 hours work) - -1. ā Create `e2e/auth.setup.ts` with storage state setup -2. ā Update `playwright.config.ts` with projects + dependencies -3. ā Remove `loginViaUI` from all admin test `beforeEach` hooks -4. ā Update auth helper to support both mock + storageState modes - -**Expected savings**: ~600-700s (30-35% improvement) - ---- - -### Phase 3: Deep Optimization (4-8 hours work) - -1. ā Investigate and fix flaky test root cause -2. ā Audit all navigation tests for redundancy -3. ā Combine related assertions (e.g., all stat cards in one test) -4. ā Profile slowest 10 tests individually - -**Expected savings**: ~150-200s (7-10% improvement) - ---- - -## Total Expected Improvement - -| Phase | Time Investment | Time Saved | % Improvement | -| --------- | --------------- | ---------- | ------------- | -| Phase 1 | 1-2 hours | ~150s | 7% | -| Phase 2 | 2-4 hours | ~700s | 35% | -| Phase 3 | 4-8 hours | ~200s | 10% | -| **Total** | **7-14 hours** | **~1050s** | **50-60%** | - -**Final target**: 2100s ā 1050s = **~17-18 minutes** (currently ~35 minutes) - ---- - -## Risks and Considerations - -### Storage State Caching Risks: - -1. **Test isolation**: Shared auth state could cause cross-test pollution - - **Mitigation**: Use separate storage files per role, clear cookies between tests -2. **Stale auth tokens**: Mock tokens might expire - - **Mitigation**: Use long-lived test tokens (24h expiry) -3. **Debugging difficulty**: Harder to debug auth issues - - **Mitigation**: Keep `loginViaUI` tests for auth flow verification - -### Recommended Safeguards: - -```typescript -// Clear non-auth state between tests -test.beforeEach(async ({ page }) => { - await page.goto('/admin'); - await page.evaluate(() => { - // Clear localStorage except auth tokens - const tokens = { - access_token: localStorage.getItem('access_token'), - refresh_token: localStorage.getItem('refresh_token'), - }; - localStorage.clear(); - if (tokens.access_token) localStorage.setItem('access_token', tokens.access_token); - if (tokens.refresh_token) localStorage.setItem('refresh_token', tokens.refresh_token); - }); -}); -``` - ---- - -## Next Steps - -**Immediate Actions (Do Now):** - -1. Skip flaky test #218 with TODO comment -2. Reduce timeout defaults in playwright.config.ts -3. Create this optimization plan issue/ticket - -**Short-term (This Week):** - -1. Implement auth storage state (Phase 2) -2. Combine obvious redundant tests (Phase 1) - -**Medium-term (Next Sprint):** - -1. Investigate flaky test root cause -2. Audit all tests for redundancy -3. Measure and report improvements - ---- - -## Metrics to Track - -Before optimization: - -- Total time: ~2100s (35 minutes) -- Avg test time: 9.1s -- Slowest test: 20.1s (settings navigation) -- Flaky tests: 1 - -After Phase 1+2 target: - -- Total time: <1200s (20 minutes) ā -- Avg test time: <5.5s ā -- Slowest test: <12s ā -- Flaky tests: 0 ā - -After Phase 3 target: - -- Total time: <1050s (17 minutes) šÆ -- Avg test time: <4.8s šÆ -- Slowest test: <10s šÆ -- Flaky tests: 0 šÆ diff --git a/frontend/e2e/settings-password.spec.ts b/frontend/e2e/settings-password.spec.ts index 746954d..84064ab 100644 --- a/frontend/e2e/settings-password.spec.ts +++ b/frontend/e2e/settings-password.spec.ts @@ -21,9 +21,6 @@ test.describe('Password Change', () => { await page.getByLabel(/current password/i).waitFor({ state: 'visible' }); }); - // TODO: Fix flaky test - failed once at 12.8s, passed on retry at 8.3s - // Likely race condition in form rendering or async state update - // See: E2E_PERFORMANCE_OPTIMIZATION.md - Phase 3 test.skip('should display password change form', async ({ page }) => { // Check page title await expect(page.getByRole('heading', { name: 'Password' })).toBeVisible(); diff --git a/frontend/lighthouse-report.json b/frontend/lighthouse-report.json deleted file mode 100644 index ff02605..0000000 --- a/frontend/lighthouse-report.json +++ /dev/null @@ -1,10787 +0,0 @@ -{ - "lighthouseVersion": "12.8.2", - "requestedUrl": "http://localhost:3000/settings/profile", - "mainDocumentUrl": "http://localhost:3000/settings/profile", - "finalDisplayedUrl": "http://localhost:3000/settings/profile", - "finalUrl": "http://localhost:3000/settings/profile", - "fetchTime": "2025-11-02T15:24:03.821Z", - "gatherMode": "navigation", - "runWarnings": [], - "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36", - "environment": { - "networkUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36", - "hostUserAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36", - "benchmarkIndex": 3420, - "credits": { - "axe-core": "4.10.3" - } - }, - "audits": { - "is-on-https": { - "id": "is-on-https", - "title": "Uses HTTPS", - "description": "All sites should be protected with HTTPS, even ones that don't handle sensitive data. This includes avoiding [mixed content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content), where some resources are loaded over HTTP despite the initial request being served over HTTPS. HTTPS prevents intruders from tampering with or passively listening in on the communications between your app and your users, and is a prerequisite for HTTP/2 and many new web platform APIs. [Learn more about HTTPS](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "Insecure URL" - }, - { - "key": "resolution", - "valueType": "text", - "label": "Request Resolution" - } - ], - "items": [] - } - }, - "redirects-http": { - "id": "redirects-http", - "title": "Redirects HTTP traffic to HTTPS", - "description": "Make sure that you redirect all HTTP traffic to HTTPS in order to enable secure web features for all your users. [Learn more](https://developer.chrome.com/docs/lighthouse/pwa/redirects-http/).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "viewport": { - "id": "viewport", - "title": "Has a `` tag with `width` or `initial-scale`", - "description": "A `` not only optimizes your app for mobile screen sizes, but also prevents [a 300 millisecond delay to user input](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/). [Learn more about using the viewport meta tag](https://developer.chrome.com/docs/lighthouse/pwa/viewport/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "warnings": [], - "metricSavings": { - "INP": 0 - }, - "details": { - "type": "debugdata", - "viewportContent": "width=device-width, initial-scale=1" - }, - "guidanceLevel": 3 - }, - "first-contentful-paint": { - "id": "first-contentful-paint", - "title": "First Contentful Paint", - "description": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 205.07999999999998, - "numericUnit": "millisecond", - "displayValue": "0.2Ā s", - "scoringOptions": { - "p10": 934, - "median": 1600 - } - }, - "largest-contentful-paint": { - "id": "largest-contentful-paint", - "title": "Largest Contentful Paint", - "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)", - "score": 0.99, - "scoreDisplayMode": "numeric", - "numericValue": 615.193, - "numericUnit": "millisecond", - "displayValue": "0.6Ā s", - "scoringOptions": { - "p10": 1200, - "median": 2400 - } - }, - "first-meaningful-paint": { - "id": "first-meaningful-paint", - "title": "First Meaningful Paint", - "description": "First Meaningful Paint measures when the primary content of a page is visible. [Learn more about the First Meaningful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-meaningful-paint/).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "speed-index": { - "id": "speed-index", - "title": "Speed Index", - "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 205.07999999999998, - "numericUnit": "millisecond", - "displayValue": "0.2Ā s", - "scoringOptions": { - "p10": 1311, - "median": 2300 - } - }, - "screenshot-thumbnails": { - "id": "screenshot-thumbnails", - "title": "Screenshot Thumbnails", - "description": "This is what the load of your site looked like.", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "filmstrip", - "scale": 3000, - "items": [ - { - "timing": 375, - "timestamp": 128477397455, - "data": "data:image/jpeg;base64,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" - }, - { - "timing": 750, - "timestamp": 128477772455, - "data": "data:image/jpeg;base64,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" - }, - { - "timing": 1125, - "timestamp": 128478147455, - "data": "data:image/jpeg;base64,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" - }, - { - "timing": 1500, - "timestamp": 128478522455, - "data": "data:image/jpeg;base64,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" - }, - { - "timing": 1875, - "timestamp": 128478897455, - "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAH0AegDASIAAhEBAxEB/8QAHAABAAMBAQEBAQAAAAAAAAAAAAIDBAUGBwEI/8QAPRABAAIBAQYEBQMCBgAFBQEAAAECAxEEBRITIVEUMVKhQWGRktEGInEysQcVIzRigSQzQsHhQ0Si4vDx/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABYRAQEBAAAAAAAAAAAAAAAAAAABIf/aAAwDAQACEQMRAD8A/nMAAAAAAe73Dsu49p/S+7Nl2muy03lt223xXz36Wpjicen75tpTpNtJms6u9T9F/pfY95zedunPs+LadnrNdo2zDWLUyUpNqftjratrTEz0iNNeukg+TD6bfc36Xruy2LNFdj3lg2HaMs1ybRXNGSeO1a1m1dI466RMaRpaJnp0jX92z9F/pjFvTaNmwbz2m+Kmyzkw5LbVgiNoy624K1mNdIvERpxacPx11gHzEek/XOw7Dse8tmndeLl7Nm2bHkiY2imWt7cEcUxERrTrr0trOurzYA6O4sWwZtrmu9MtseDSuk189eOsT/8AjNnRpu7cfBW2TeOTWa1nhrp0mddfh8NNNPyDzo6O+tl2LZMuGu79rnaq2x8V7aREROvl/wD6ybHTHk2vDTPfl4rWiL27R8QUj1lN3fp22O8+PmK5c9JpOv7sdJraZjSY+E8MTPyc/atj3TGwXyYNrnn1x0tSmvWbTxTaLfxpWOmnmDhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9HOw7vy/pzHlrfFhz46zktm5kWtltPTlzTi1jTSNNK+UzMg84nGK0xr5PzH/AFxq9XuPYdyZ93cW8dt5W23tbgprMVrXh4a6zp5zeYn+Kz3B5O1ZrPV+OlvvHs2Lbc+PY7xfBS2lLROsT30n6uaAAAAAAAJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AILYyzp1jVHm27U+yPwc23an2R+Afl7zb+EU+bbtT7I/BzbdqfZH4BAT5tu1Psj8HNt2p9kfgEBPm27U+yPwc23an2R+AQE+bbtT7I/ACAAAAAAA+n/4a4di3nuC26dj2TYq/qDaNovwZtv2K2fFnpwRpjreP/LmJ1nWe8dU9p/w93NsP6Kxbw3lvflb2z7HO2YqRkry5nXpj4eHWZ6T+7ijSemgR8tH3LfG4f0xi/wAQd87JTc+1xs+HdObNkx0mkUtMYqTWcEcP7bRrPWeLrLm7o/Su699fp7cEbRl3li3bM7zz8j/RjLWuGK2iOPl6zM/HXWO0QXCa+Pj6xH+He57ZL7dhyb32rdtt2YN44diwcFtrtzck04deGY0rMTMzFfJLaf8ADrcmLev6k3dg2jeG0bw2DhtsmyTmx4r3pOGMk2m1qaXmJnrWOGdI1B8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1d3fqPfW7divse7t67dsuyXmZthw57UpMz56xEo49/73x7rtu2m89sru+2sTs0ZrcudZ1n9uui/d9t1RseKu1x/4iYvE20nSNdYiZ/jTWP5WW2fc3HwRlmJmNeLj1iJiY6f9xrPyBVH6o39GTZMkb53hx7JWabPbxFtcVZiImK9ekaREf9IW/Um+7TE23tt0zHM01z2/+pGmT4/+r493QrsO5I4r3zzyeZNaTF4m1o/d5x008q9fmxbJs27p2WmXNkiL3ma1pa+nlPWZ08ukxp84kGv9P/qvPu3bcW0bds8b05OCNnwV2nPlryaROsRWaWiYjWZ6eXU3p+tv1BvDeG8dr/zLaNm8ffjzYdnyWx45/bFdNIny4YiOvwhg2vDu7Fst7YMk5clrRy44usV0jrMd9dWjJs26Y5cY8tbeXHM5Jj4z1jp8emsfDUHCHcx7Nuq1sMXzxSZ/r0vMxHWuvw7cWnfop2mu7o2K/h9JzaU/qtOvx4tPrHT5A5I9FXBuSkcUZZvkmbRFLT+2uuPprOvqnz0+CvJXdM8XFNYiZjhilvLXTrrpr36A4I7u8dj3bh2fJystYydJxzGTj4o4tOsfCdOv4TybPuSuWtIzWms2nW/FOkRHDp8Pjrb+NAefHcjDu3Ll2u+W2PHjpw1pFL/Hgnyj4/uiImfmuxTubBg5tJm+a1bVml6xaK/v06a+c8PWOgPOj0HI3HG2Vxzly8mddb6x8I6R56df5+CmmHdNq0/1LVmKxx626+VdZj59bdPkDijrb0w7uphyTsV7TeuSIjimJ4q6donppP8Af5OSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJRXprrEHD/ygERLh/5QcP8AygERLh/5QcP/ACgERLh/5Q/Ypr5TAICzlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkjek18wRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK39FP+0X7xdIiYidDWPTAOz+mr7uwZM+fe0VvhiIx1xcEXtM21nWImY6aVmJnzjijTqblturYtv2yN8Yqbbhx1muOtLXiMluOI1rNZj4cUxM9PlPk42semDWPTAPY7vn9J7LkvtM5c2S1ebWmDNE3i3+lMVt/wCXp/XMefl20jVm/U1f03fY7Z90bRadr4qVrhrW1axWKxxTOteszOvx/wCu3l9Y9MGsemAfieH+tHWPTD9rfhnWIgGl3dgpsn+WVx5K0tbNW03yTNNcc6zEef7o00iennxPN823aDm27QDt7ttuzwvL26k82+SY5kTaJx10jTy6d/hMtVtl3DN71rt+SKzM1raa2nT90xFpjg7cM6fz/wBea5tu0HNt2gHpL4NwRFpptO0WiOLSs6xM/s1iP6dP6umvt8WLfHgovs1d3W4qVxaXt11m3FaeusR8Jq5HNt2g5tu0AvFHNt2g5tu0A6u5+XO02pkyYMVr14aXz04qVnWPPpPw166NW2+EpvPZKZcmy56Y+me+Gs0x2/dPpiJ8tOsQ4HNt2g5tu0A9NOz7hmeu15ImeKf2xaIieLpERNZnSY+c/Psjkw7iilpjact5pxREV4om+kzw+dfjHx9nm+bbtBzbdoB1d7YthxZqRu3PbNjmJ1m0TEx+6dPOI+GksKjm27Qc23aAXvQbi/yv/L8njeRzZt+7jieKK6T5f/r11016PMc23aDm27QDsbrtu6uz567wxzbJe9K47RNomlf3cVunTp+3ziW6ldw1rSOZlnmzFbzaZmcUcUazH7e2vf8A9nmebbtBzbdoB6Pk7i0t/wCIz6xpp1nr+6fL9nbTt5/9EbPuLS0+Ly/0TNa/u14unT+j5z1+Onw6a+c5tu0HNt2gG/eFNnptmSuxZJybPrHBaddfL5xH9mLP/TH8o823aEb3m3mCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8ezTfHFuKIifJLwk+v2aMH+2xfxP95TBk8JPr9jwk+v2azQGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAYsmzTTHNuKJiPNQ6Of/bZf4j+8OcAAAAAAAAAAAADo4P9ti/if7y91/h1k3ds27/1DtW8uTE4MGGcVr7Nj2i0TOWsW4aX6TMxrH8PC4P9ti/if7ymD6Xk3b+lN87y2PaNm2bLsmLem0bVkpijaa44x1p/RjiJiYrN56azOkatE4N1/p7dO98ey1mM20+CpbHO0UtfZ5vGTjpxcP7ojSszGkfCJfLAhdfa9u3FuLe+bZcO2bVxYtlneExXZ7Y65M14z/tr00j+mddIiNYjo8t+kdk2HB+qt97Hsuw32nZ9eTg2jPjw5Mmy/vj9847zwW6RMT8tZh89AfUq/pn9ObJsldt2ra7bZtNdttGTLs/B4avDniuk1+FZr1/7jTot3zuvddKfqKuzbrx4s2LeuO+Gce0V4seCeP8A1Kzp1p0j9seXR8oCF19U33+mf09lptmW+2ZvG3natonaOfSaxGPaIpEcEV661mZ6T8Gm36E3BTbNkrem1cjaJz0xZMe2Uy0tFZpFMl5rGtazxTrERMx06eb5HWZraLVmYmOsTHwat4bz27eVqW3jtu07XakaUnPltkmsdo1noFVbXi5G15sUTWeXe1da24onSdOk/GPmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM/wDtsv8AEf3hznRz/wC2y/xH94c4AAAAAAAAAAAAHRwf7bF/E/3l0927Fh2rZ8982blTS1IiZ00nXimf+9Kzo5mD/bYv4n+8pg7u0fp7Jj2ia1zVrS2W+PHxROs6Xisa6d+KPdX/AJBtGka5KRM1rbrE9NZmOvby83GWUzZMeO9KW0rfpbp5g3490ZMm05sNctInFMRabRMaa+XSY185iP5lbbcWek3m14ilKxa1prMaaxWdJj4Tpby+TlRkvXHbHFtKWmJmO+iAOli3TkvsHi5yRXF59az/AMvKfKZ/bLTbc0YK5K7RabZNNa8P7Y0iuSZnrHX+jp3ca17WisWmZisaR8kQdjPuacW2Rh5kTF+OaxOsdK1mY66dfL6v2Nza1xUrk48uWbTWaxMxpXXWNPOZ1rLjAOvG5bReaX2nHWYnTpEzHxn/ANllNw5Kxi5ttbZLViK1+ETOmsz28uvzcQB1su5MuLHNrZaRPBN4iYmNdItM/wDWlZ0nylKu6ovixxipmvkyTWvHH9OOZrW2tuk+fFpHl5OOle9r8PFaZ4Y4Y1+EA687ivTpfPSLcVY4NJiesTPXp0npOvaSm4suTLWtMtP3TMaaTMx1r8v+Udf5cZZgzZMFptitw2mNNdAa53dM7D4njrERXi4eus9f/lrtunHtFJvsnHix0pjm85b8es34fLSseXE4oDrbTuudmzbHW9b5ObrF6Un90TEzE/CdPpKeLdNIzZcWeuav+vycWXWNLfu08tP+9ddPh8XGSpe1LcVJmJ7wCIAAAAAAAAAAAAAAAAAAAAAAAAAAAIZ/9tl/iP7w5zo5/wDbZf4j+8OcAAAAAAAAAAAADVh2mtMdaXrP7fLT+U/FY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAas201vjtSlZ/d56/yygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0AQAAAAAB0Kbum27J2vm1jzmKcMz0idJ6+Ufwurua1qzaM9dIiJmOCdYjWsTrHf90dOzmRkvGOccXtFJnWa69Nf4WeM2ni4vEZuLXXXjkGuu7OK1P9ek0tW88cTGn7fOI1mPl56eaf+S560tfLkx461jXrFtfh5xEdPPRzr5st/wCvJe3TTraZT8XtM/8A3Gb757af2B0s36e2vHNYrbFeLTEVmLaRbW01jT/uFP8AlUxtVdntmictsfHEUrr1010nXRhjaM0RpGbJp24p76/3mX5bNltMTbJeZiNI1tPQHTjcO12nSt8M24orFeLrMz5fD5T9H7i3Fny3xVrkpw3iszfSeGItaYifL5a93Opte0UzVyxmycytotEzbXrHl5ni9p1mfEZtZnWf3z1kF+TdmfHtODDPDNs2nDMT37/3XbVufJg5NbZK8eSbROsTERpNuv0rqwW2jNedb5clpiNOtpn/APvOX5ObLMRE5LzFfKJtPQHTnceesZptkxxwVtNYnztw2iNPl56qtr3Tl2faL4+bivWs3jjji0/bOk/BmybbtOTDjxXy2mlNeGI6ec6zrPx8o81eTaM2TTmZsl9PVaZB0Z3FtkWvWZxcVJmLRxf0z085+Hnp/wDHVGu5NrvFppOK1axMzaLdI0nTT+ddPrHwYvF7R1/18vX/AJz/AAhXPlrrw5bxrr5Wn4+YLtv2O2x2x1vetrWrMzw+UTFpiY9mVZkzZMunNyXvp0jitM6KwAAAAAAAAAAAAAAAAAAAAAAAAAATxV48lKcUV4piNZ8o+bqzuLNETe+WmPFpxUteJ1tHFFYnSNfOZciJmsxMTMTHlMLvFbRM68/Lr1/9c/HzButuTPrHLyY7V6/u1mOkedv49/kxbbsmTY8laZZrNpjX9s6x9TFtu04s9c1c15yVnWJtPF1/iVebNkz34s2S17d7TqC3Ytlnar2iLTEViJ6Vm0zrMRERH8y3xuLNPLiubFxWrFpraeGY117+f9Pw1crFlyYb8WHJfHbvWdJSnaM0xWJy5JivlE2noDZtG6s2DYp2i9qdJnirE9YjWI1+s6OctybRmyVmuTLktWeulrTMKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/2Q==" - }, - { - "timing": 2250, - "timestamp": 128479272455, - "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAH0AegDASIAAhEBAxEB/8QAHAABAAMBAQEBAQAAAAAAAAAAAAIDBAUGBwEI/8QAPRABAAIBAQYEBQMCBgAFBQEAAAECAxEEBRITIVEUMVKhQWGRktEGInEysQcVIzRigSQzQsHhQ0Si4vDx/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABYRAQEBAAAAAAAAAAAAAAAAAAABIf/aAAwDAQACEQMRAD8A/nMAAAAAAe73Dsu49p/S+7Nl2muy03lt223xXz36Wpjicen75tpTpNtJms6u9T9F/pfY95zedunPs+LadnrNdo2zDWLUyUpNqftjratrTEz0iNNeukg+TD6bfc36Xruy2LNFdj3lg2HaMs1ybRXNGSeO1a1m1dI466RMaRpaJnp0jX92z9F/pjFvTaNmwbz2m+Kmyzkw5LbVgiNoy624K1mNdIvERpxacPx11gHzEek/XOw7Dse8tmndeLl7Nm2bHkiY2imWt7cEcUxERrTrr0trOurzYA6O4sWwZtrmu9MtseDSuk189eOsT/8AjNnRpu7cfBW2TeOTWa1nhrp0mddfh8NNNPyDzo6O+tl2LZMuGu79rnaq2x8V7aREROvl/wD6ybHTHk2vDTPfl4rWiL27R8QUj1lN3fp22O8+PmK5c9JpOv7sdJraZjSY+E8MTPyc/atj3TGwXyYNrnn1x0tSmvWbTxTaLfxpWOmnmDhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9HOw7vy/pzHlrfFhz46zktm5kWtltPTlzTi1jTSNNK+UzMg84nGK0xr5PzH/AFxq9XuPYdyZ93cW8dt5W23tbgprMVrXh4a6zp5zeYn+Kz3B5O1ZrPV+OlvvHs2Lbc+PY7xfBS2lLROsT30n6uaAAAAAAAJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AICfNt2p9kfg5tu1Psj8AgJ823an2R+Dm27U+yPwCAnzbdqfZH4ObbtT7I/AILYyzp1jVHm27U+yPwc23an2R+Afl7zb+EU+bbtT7I/BzbdqfZH4BAT5tu1Psj8HNt2p9kfgEBPm27U+yPwc23an2R+AQE+bbtT7I/ACAAAAAAA+n/4a4di3nuC26dj2TYq/qDaNovwZtv2K2fFnpwRpjreP/LmJ1nWe8dU9p/w93NsP6Kxbw3lvflb2z7HO2YqRkry5nXpj4eHWZ6T+7ijSemgR8tH3LfG4f0xi/wAQd87JTc+1xs+HdObNkx0mkUtMYqTWcEcP7bRrPWeLrLm7o/Su699fp7cEbRl3li3bM7zz8j/RjLWuGK2iOPl6zM/HXWO0QXCa+Pj6xH+He57ZL7dhyb32rdtt2YN44diwcFtrtzck04deGY0rMTMzFfJLaf8ADrcmLev6k3dg2jeG0bw2DhtsmyTmx4r3pOGMk2m1qaXmJnrWOGdI1B8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1d3fqPfW7divse7t67dsuyXmZthw57UpMz56xEo49/73x7rtu2m89sru+2sTs0ZrcudZ1n9uui/d9t1RseKu1x/4iYvE20nSNdYiZ/jTWP5WW2fc3HwRlmJmNeLj1iJiY6f9xrPyBVH6o39GTZMkb53hx7JWabPbxFtcVZiImK9ekaREf9IW/Um+7TE23tt0zHM01z2/+pGmT4/+r493QrsO5I4r3zzyeZNaTF4m1o/d5x008q9fmxbJs27p2WmXNkiL3ma1pa+nlPWZ08ukxp84kGv9P/qvPu3bcW0bds8b05OCNnwV2nPlryaROsRWaWiYjWZ6eXU3p+tv1BvDeG8dr/zLaNm8ffjzYdnyWx45/bFdNIny4YiOvwhg2vDu7Fst7YMk5clrRy44usV0jrMd9dWjJs26Y5cY8tbeXHM5Jj4z1jp8emsfDUHCHcx7Nuq1sMXzxSZ/r0vMxHWuvw7cWnfop2mu7o2K/h9JzaU/qtOvx4tPrHT5A5I9FXBuSkcUZZvkmbRFLT+2uuPprOvqnz0+CvJXdM8XFNYiZjhilvLXTrrpr36A4I7u8dj3bh2fJystYydJxzGTj4o4tOsfCdOv4TybPuSuWtIzWms2nW/FOkRHDp8Pjrb+NAefHcjDu3Ll2u+W2PHjpw1pFL/Hgnyj4/uiImfmuxTubBg5tJm+a1bVml6xaK/v06a+c8PWOgPOj0HI3HG2Vxzly8mddb6x8I6R56df5+CmmHdNq0/1LVmKxx626+VdZj59bdPkDijrb0w7uphyTsV7TeuSIjimJ4q6donppP8Af5OSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJRXprrEHD/ygERLh/5QcP8AygERLh/5QcP/ACgERLh/5Q/Ypr5TAICzlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkcq3yBWLOVb5HKt8gVizlW+RyrfIFYs5Vvkjek18wRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABK39FP+0X7xdIiYidDWPTAOz+mr7uwZM+fe0VvhiIx1xcEXtM21nWImY6aVmJnzjijTqblturYtv2yN8Yqbbhx1muOtLXiMluOI1rNZj4cUxM9PlPk42semDWPTAPY7vn9J7LkvtM5c2S1ebWmDNE3i3+lMVt/wCXp/XMefl20jVm/U1f03fY7Z90bRadr4qVrhrW1axWKxxTOteszOvx/wCu3l9Y9MGsemAfieH+tHWPTD9rfhnWIgGl3dgpsn+WVx5K0tbNW03yTNNcc6zEef7o00iennxPN823aDm27QDt7ttuzwvL26k82+SY5kTaJx10jTy6d/hMtVtl3DN71rt+SKzM1raa2nT90xFpjg7cM6fz/wBea5tu0HNt2gHpL4NwRFpptO0WiOLSs6xM/s1iP6dP6umvt8WLfHgovs1d3W4qVxaXt11m3FaeusR8Jq5HNt2g5tu0AvFHNt2g5tu0A6u5+XO02pkyYMVr14aXz04qVnWPPpPw166NW2+EpvPZKZcmy56Y+me+Gs0x2/dPpiJ8tOsQ4HNt2g5tu0A9NOz7hmeu15ImeKf2xaIieLpERNZnSY+c/Psjkw7iilpjact5pxREV4om+kzw+dfjHx9nm+bbtBzbdoB1d7YthxZqRu3PbNjmJ1m0TEx+6dPOI+GksKjm27Qc23aAXvQbi/yv/L8njeRzZt+7jieKK6T5f/r11016PMc23aDm27QDsbrtu6uz567wxzbJe9K47RNomlf3cVunTp+3ziW6ldw1rSOZlnmzFbzaZmcUcUazH7e2vf8A9nmebbtBzbdoB6Pk7i0t/wCIz6xpp1nr+6fL9nbTt5/9EbPuLS0+Ly/0TNa/u14unT+j5z1+Onw6a+c5tu0HNt2gG/eFNnptmSuxZJybPrHBaddfL5xH9mLP/TH8o823aEb3m3mCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8ezTfHFuKIifJLwk+v2aMH+2xfxP95TBk8JPr9jwk+v2azQGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAZPCT6/Y8JPr9msBk8JPr9jwk+v2awGTwk+v2PCT6/ZrAYsmzTTHNuKJiPNQ6Of/bZf4j+8OcAAAAAAAAAAAADo4P9ti/if7y91/h1k3ds27/1DtW8uTE4MGGcVr7Nj2i0TOWsW4aX6TMxrH8PC4P9ti/if7ymD6Xk3b+lN87y2PaNm2bLsmLem0bVkpijaa44x1p/RjiJiYrN56azOkatE4N1/p7dO98ey1mM20+CpbHO0UtfZ5vGTjpxcP7ojSszGkfCJfLAhdfa9u3FuLe+bZcO2bVxYtlneExXZ7Y65M14z/tr00j+mddIiNYjo8t+kdk2HB+qt97Hsuw32nZ9eTg2jPjw5Mmy/vj9847zwW6RMT8tZh89AfUq/pn9ObJsldt2ra7bZtNdttGTLs/B4avDniuk1+FZr1/7jTot3zuvddKfqKuzbrx4s2LeuO+Gce0V4seCeP8A1Kzp1p0j9seXR8oCF19U33+mf09lptmW+2ZvG3natonaOfSaxGPaIpEcEV661mZ6T8Gm36E3BTbNkrem1cjaJz0xZMe2Uy0tFZpFMl5rGtazxTrERMx06eb5HWZraLVmYmOsTHwat4bz27eVqW3jtu07XakaUnPltkmsdo1noFVbXi5G15sUTWeXe1da24onSdOk/GPmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEM/wDtsv8AEf3hznRz/wC2y/xH94c4AAAAAAAAAAAAHRwf7bF/E/3l0927Fh2rZ8982blTS1IiZ00nXimf+9Kzo5mD/bYv4n+8pg7u0fp7Jj2ia1zVrS2W+PHxROs6Xisa6d+KPdX/AJBtGka5KRM1rbrE9NZmOvby83GWUzZMeO9KW0rfpbp5g3490ZMm05sNctInFMRabRMaa+XSY185iP5lbbcWek3m14ilKxa1prMaaxWdJj4Tpby+TlRkvXHbHFtKWmJmO+iAOli3TkvsHi5yRXF59az/AMvKfKZ/bLTbc0YK5K7RabZNNa8P7Y0iuSZnrHX+jp3ca17WisWmZisaR8kQdjPuacW2Rh5kTF+OaxOsdK1mY66dfL6v2Nza1xUrk48uWbTWaxMxpXXWNPOZ1rLjAOvG5bReaX2nHWYnTpEzHxn/ANllNw5Kxi5ttbZLViK1+ETOmsz28uvzcQB1su5MuLHNrZaRPBN4iYmNdItM/wDWlZ0nylKu6ovixxipmvkyTWvHH9OOZrW2tuk+fFpHl5OOle9r8PFaZ4Y4Y1+EA687ivTpfPSLcVY4NJiesTPXp0npOvaSm4suTLWtMtP3TMaaTMx1r8v+Udf5cZZgzZMFptitw2mNNdAa53dM7D4njrERXi4eus9f/lrtunHtFJvsnHix0pjm85b8es34fLSseXE4oDrbTuudmzbHW9b5ObrF6Un90TEzE/CdPpKeLdNIzZcWeuav+vycWXWNLfu08tP+9ddPh8XGSpe1LcVJmJ7wCIAAAAAAAAAAAAAAAAAAAAAAAAAAAIZ/9tl/iP7w5zo5/wDbZf4j+8OcAAAAAAAAAAAADVh2mtMdaXrP7fLT+U/FY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAbfFY/Tf2PFY/Tf2YgG3xWP039jxWP039mIBt8Vj9N/Y8Vj9N/ZiAas201vjtSlZ/d56/yygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0OZbvH0BWLOZbvH0AQAAAAAB0Kbum27J2vm1jzmKcMz0idJ6+Ufwurua1qzaM9dIiJmOCdYjWsTrHf90dOzmRkvGOccXtFJnWa69Nf4WeM2ni4vEZuLXXXjkGuu7OK1P9ek0tW88cTGn7fOI1mPl56eaf+S560tfLkx461jXrFtfh5xEdPPRzr5st/wCvJe3TTraZT8XtM/8A3Gb757af2B0s36e2vHNYrbFeLTEVmLaRbW01jT/uFP8AlUxtVdntmictsfHEUrr1010nXRhjaM0RpGbJp24p76/3mX5bNltMTbJeZiNI1tPQHTjcO12nSt8M24orFeLrMz5fD5T9H7i3Fny3xVrkpw3iszfSeGItaYifL5a93Opte0UzVyxmycytotEzbXrHl5ni9p1mfEZtZnWf3z1kF+TdmfHtODDPDNs2nDMT37/3XbVufJg5NbZK8eSbROsTERpNuv0rqwW2jNedb5clpiNOtpn/APvOX5ObLMRE5LzFfKJtPQHTnceesZptkxxwVtNYnztw2iNPl56qtr3Tl2faL4+bivWs3jjji0/bOk/BmybbtOTDjxXy2mlNeGI6ec6zrPx8o81eTaM2TTmZsl9PVaZB0Z3FtkWvWZxcVJmLRxf0z085+Hnp/wDHVGu5NrvFppOK1axMzaLdI0nTT+ddPrHwYvF7R1/18vX/AJz/AAhXPlrrw5bxrr5Wn4+YLtv2O2x2x1vetrWrMzw+UTFpiY9mVZkzZMunNyXvp0jitM6KwAAAAAAAAAAAAAAAAAAAAAAAAAATxV48lKcUV4piNZ8o+bqzuLNETe+WmPFpxUteJ1tHFFYnSNfOZciJmsxMTMTHlMLvFbRM68/Lr1/9c/HzButuTPrHLyY7V6/u1mOkedv49/kxbbsmTY8laZZrNpjX9s6x9TFtu04s9c1c15yVnWJtPF1/iVebNkz34s2S17d7TqC3Ytlnar2iLTEViJ6Vm0zrMRERH8y3xuLNPLiubFxWrFpraeGY117+f9Pw1crFlyYb8WHJfHbvWdJSnaM0xWJy5JivlE2noDZtG6s2DYp2i9qdJnirE9YjWI1+s6OctybRmyVmuTLktWeulrTMKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/2Q==" - }, - { - "timing": 2625, - "timestamp": 128479647455, - "data": "data:image/jpeg;base64,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" - }, - { - "timing": 3000, - "timestamp": 128480022455, - "data": "data:image/jpeg;base64,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" - } - ] - } - }, - "final-screenshot": { - "id": "final-screenshot", - "title": "Final Screenshot", - "description": "The last screenshot captured of the pageload.", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "screenshot", - "timing": 400, - "timestamp": 128477422768, - "data": "data:image/jpeg;base64,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" - } - }, - "total-blocking-time": { - "id": "total-blocking-time", - "title": "Total Blocking Time", - "description": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 0, - "numericUnit": "millisecond", - "displayValue": "0Ā ms", - "scoringOptions": { - "p10": 150, - "median": 350 - } - }, - "max-potential-fid": { - "id": "max-potential-fid", - "title": "Max Potential First Input Delay", - "description": "The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 22, - "numericUnit": "millisecond", - "displayValue": "20Ā ms" - }, - "cumulative-layout-shift": { - "id": "cumulative-layout-shift", - "title": "Cumulative Layout Shift", - "description": "Cumulative Layout Shift measures the movement of visible elements within the viewport. [Learn more about the Cumulative Layout Shift metric](https://web.dev/articles/cls).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 0, - "numericUnit": "unitless", - "displayValue": "0", - "scoringOptions": { - "p10": 0.1, - "median": 0.25 - }, - "details": { - "type": "debugdata", - "items": [ - { - "cumulativeLayoutShiftMainFrame": 0, - "newEngineResult": { - "cumulativeLayoutShift": 0, - "cumulativeLayoutShiftMainFrame": 0 - }, - "newEngineResultDiffered": false - } - ] - } - }, - "errors-in-console": { - "id": "errors-in-console", - "title": "Browser errors were logged to the console", - "description": "Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. [Learn more about this errors in console diagnostic audit](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)", - "score": 0, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "sourceLocation", - "valueType": "source-location", - "label": "Source" - }, - { - "key": "description", - "valueType": "code", - "label": "Description" - } - ], - "items": [ - { - "source": "network", - "description": "Failed to load resource: the server responded with a status of 404 (Not Found)", - "sourceLocation": { - "type": "source-location", - "url": "http://localhost:3000/admin?_rsc=c4qkg", - "urlProvider": "network", - "line": 0, - "column": 0 - } - } - ] - } - }, - "server-response-time": { - "id": "server-response-time", - "title": "Initial server response time was short", - "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 2.3320000000000003, - "numericUnit": "millisecond", - "displayValue": "Root document took 0Ā ms", - "metricSavings": { - "FCP": 0, - "LCP": 0 - }, - "details": { - "type": "opportunity", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "responseTime", - "valueType": "timespanMs", - "label": "Time Spent" - } - ], - "items": [ - { - "url": "http://localhost:3000/settings/profile", - "responseTime": 2.3320000000000003 - } - ], - "overallSavingsMs": 0 - }, - "guidanceLevel": 1 - }, - "interactive": { - "id": "interactive", - "title": "Time to Interactive", - "description": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).", - "score": 1, - "scoreDisplayMode": "numeric", - "numericValue": 615.193, - "numericUnit": "millisecond", - "displayValue": "0.6Ā s" - }, - "user-timings": { - "id": "user-timings", - "title": "User Timing marks and measures", - "description": "Consider instrumenting your app with the User Timing API to measure your app's real-world performance during key user experiences. [Learn more about User Timing marks](https://developer.chrome.com/docs/lighthouse/performance/user-timings/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "details": { - "type": "table", - "headings": [ - { - "key": "name", - "valueType": "text", - "label": "Name" - }, - { - "key": "timingType", - "valueType": "text", - "label": "Type" - }, - { - "key": "startTime", - "valueType": "ms", - "granularity": 0.01, - "label": "Start Time" - }, - { - "key": "duration", - "valueType": "ms", - "granularity": 0.01, - "label": "Duration" - } - ], - "items": [] - }, - "guidanceLevel": 2 - }, - "critical-request-chains": { - "id": "critical-request-chains", - "title": "Avoid chaining critical requests", - "description": "The Critical Request Chains below show you what resources are loaded with a high priority. Consider reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load. [Learn how to avoid chaining critical requests](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains/).", - "score": 1, - "scoreDisplayMode": "informative", - "displayValue": "1 chain found", - "details": { - "type": "criticalrequestchain", - "chains": { - "D76A5554932341834113809BB5548E5F": { - "request": { - "url": "http://localhost:3000/settings/profile", - "startTime": 128477.024112, - "endTime": 128477.029843, - "responseReceivedTime": 128477.028791, - "transferSize": 3727 - }, - "children": { - "1370106.3": { - "request": { - "url": "http://localhost:3000/_next/static/css/7ff6bb63475794b6.css", - "startTime": 128477.060065, - "endTime": 128477.067874, - "responseReceivedTime": 128477.06579699999, - "transferSize": 12016 - } - } - } - } - }, - "longestChain": { - "duration": 43.76199999451637, - "length": 2, - "transferSize": 12016 - } - }, - "guidanceLevel": 1 - }, - "redirects": { - "id": "redirects", - "title": "Avoid multiple page redirects", - "description": "Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 0, - "numericUnit": "millisecond", - "displayValue": "", - "metricSavings": { - "LCP": 0, - "FCP": 0 - }, - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0 - }, - "guidanceLevel": 2 - }, - "image-aspect-ratio": { - "id": "image-aspect-ratio", - "title": "Displays images with correct aspect ratio", - "description": "Image display dimensions should match natural aspect ratio. [Learn more about image aspect ratio](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "label": "" - }, - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "displayedAspectRatio", - "valueType": "text", - "label": "Aspect Ratio (Displayed)" - }, - { - "key": "actualAspectRatio", - "valueType": "text", - "label": "Aspect Ratio (Actual)" - } - ], - "items": [] - } - }, - "image-size-responsive": { - "id": "image-size-responsive", - "title": "Serves images with appropriate resolution", - "description": "Image natural dimensions should be proportional to the display size and the pixel ratio to maximize image clarity. [Learn how to provide responsive images](https://web.dev/articles/serve-responsive-images).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "label": "" - }, - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "displayedSize", - "valueType": "text", - "label": "Displayed size" - }, - { - "key": "actualSize", - "valueType": "text", - "label": "Actual size" - }, - { - "key": "expectedSize", - "valueType": "text", - "label": "Expected size" - } - ], - "items": [] - } - }, - "deprecations": { - "id": "deprecations", - "title": "Avoids deprecated APIs", - "description": "Deprecated APIs will eventually be removed from the browser. [Learn more about deprecated APIs](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "value", - "valueType": "text", - "label": "Deprecation / Warning" - }, - { - "key": "source", - "valueType": "source-location", - "label": "Source" - } - ], - "items": [] - } - }, - "third-party-cookies": { - "id": "third-party-cookies", - "title": "Avoids third-party cookies", - "description": "Third-party cookies may be blocked in some contexts. [Learn more about preparing for third-party cookie restrictions](https://privacysandbox.google.com/cookies/prepare/overview).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "name", - "valueType": "text", - "label": "Name" - }, - { - "key": "url", - "valueType": "url", - "label": "URL" - } - ], - "items": [] - } - }, - "mainthread-work-breakdown": { - "id": "mainthread-work-breakdown", - "title": "Minimizes main-thread work", - "description": "Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to minimize main-thread work](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 197.1210000000005, - "numericUnit": "millisecond", - "displayValue": "0.2Ā s", - "metricSavings": { - "TBT": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "groupLabel", - "valueType": "text", - "label": "Category" - }, - { - "key": "duration", - "valueType": "ms", - "granularity": 1, - "label": "Time Spent" - } - ], - "items": [ - { - "group": "scriptEvaluation", - "groupLabel": "Script Evaluation", - "duration": 101.18000000000052 - }, - { - "group": "scriptParseCompile", - "groupLabel": "Script Parsing & Compilation", - "duration": 42.04600000000002 - }, - { - "group": "other", - "groupLabel": "Other", - "duration": 38.63599999999997 - }, - { - "group": "styleLayout", - "groupLabel": "Style & Layout", - "duration": 7.273 - }, - { - "group": "parseHTML", - "groupLabel": "Parse HTML & CSS", - "duration": 7.22 - }, - { - "group": "paintCompositeRender", - "groupLabel": "Rendering", - "duration": 0.7660000000000002 - } - ], - "sortedBy": ["duration"] - }, - "guidanceLevel": 1 - }, - "bootup-time": { - "id": "bootup-time", - "title": "JavaScript execution time", - "description": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 30.269, - "numericUnit": "millisecond", - "displayValue": "0.0Ā s", - "metricSavings": { - "TBT": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "total", - "granularity": 1, - "valueType": "ms", - "label": "Total CPU Time" - }, - { - "key": "scripting", - "granularity": 1, - "valueType": "ms", - "label": "Script Evaluation" - }, - { - "key": "scriptParseCompile", - "granularity": 1, - "valueType": "ms", - "label": "Script Parse" - } - ], - "items": [ - { - "url": "http://localhost:3000/settings/profile", - "total": 59.13300000000001, - "scripting": 10.21599999999997, - "scriptParseCompile": 20.053000000000026 - } - ], - "summary": { - "wastedMs": 30.269 - }, - "sortedBy": ["total"] - }, - "guidanceLevel": 1 - }, - "uses-rel-preconnect": { - "id": "uses-rel-preconnect", - "title": "Preconnect to required origins", - "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 0, - "numericUnit": "millisecond", - "displayValue": "", - "warnings": [], - "metricSavings": { - "LCP": 0, - "FCP": 0 - }, - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0, - "sortedBy": ["wastedMs"] - }, - "guidanceLevel": 3 - }, - "font-display": { - "id": "font-display", - "title": "All text remains visible during webfont loads", - "description": "Leverage the `font-display` CSS feature to ensure text is user-visible while webfonts are loading. [Learn more about `font-display`](https://developer.chrome.com/docs/lighthouse/performance/font-display/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "warnings": [], - "details": { - "type": "table", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "wastedMs", - "valueType": "ms", - "label": "Est Savings" - } - ], - "items": [] - }, - "guidanceLevel": 3 - }, - "diagnostics": { - "id": "diagnostics", - "title": "Diagnostics", - "description": "Collection of useful page vitals.", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "debugdata", - "items": [ - { - "numRequests": 29, - "numScripts": 19, - "numStylesheets": 1, - "numFonts": 1, - "numTasks": 625, - "numTasksOver10ms": 5, - "numTasksOver25ms": 1, - "numTasksOver50ms": 0, - "numTasksOver100ms": 0, - "numTasksOver500ms": 0, - "rtt": 0.14900000000000002, - "throughput": 22150885.976653498, - "maxRtt": 0.8999999999999999, - "maxServerLatency": 2.54, - "totalByteWeight": 295420, - "totalTaskTime": 197.12099999999984, - "mainDocumentTransferSize": 3727 - } - ] - } - }, - "network-requests": { - "id": "network-requests", - "title": "Network Requests", - "description": "Lists the network requests that were made during page load.", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "protocol", - "valueType": "text", - "label": "Protocol" - }, - { - "key": "networkRequestTime", - "valueType": "ms", - "granularity": 1, - "label": "Network Request Time" - }, - { - "key": "networkEndTime", - "valueType": "ms", - "granularity": 1, - "label": "Network End Time" - }, - { - "key": "transferSize", - "valueType": "bytes", - "displayUnit": "kb", - "granularity": 1, - "label": "Transfer Size" - }, - { - "key": "resourceSize", - "valueType": "bytes", - "displayUnit": "kb", - "granularity": 1, - "label": "Resource Size" - }, - { - "key": "statusCode", - "valueType": "text", - "label": "Status Code" - }, - { - "key": "mimeType", - "valueType": "text", - "label": "MIME Type" - }, - { - "key": "resourceType", - "valueType": "text", - "label": "Resource Type" - } - ], - "items": [ - { - "url": "http://localhost:3000/settings/profile", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 0, - "networkRequestTime": 1.0420000106096268, - "networkEndTime": 6.773000001907349, - "finished": true, - "transferSize": 3727, - "resourceSize": 14157, - "statusCode": 200, - "mimeType": "text/html", - "resourceType": "Document", - "priority": "VeryHigh", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/media/4cf2300e9c8272f7-s.p.woff2", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 10.923000007867813, - "networkRequestTime": 28.06300000846386, - "networkEndTime": 42.85400000214577, - "finished": true, - "transferSize": 28688, - "resourceSize": 28388, - "statusCode": 200, - "mimeType": "font/woff2", - "resourceType": "Font", - "priority": "High", - "isLinkPreload": true, - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/css/7ff6bb63475794b6.css", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.15600000321865, - "networkRequestTime": 36.99500000476837, - "networkEndTime": 44.804000005126, - "finished": true, - "transferSize": 12016, - "resourceSize": 64467, - "statusCode": 200, - "mimeType": "text/css", - "resourceType": "Stylesheet", - "priority": "VeryHigh", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/webpack-355011946f45648f.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.232999995350838, - "networkRequestTime": 48.92800000309944, - "networkEndTime": 55.927000015974045, - "finished": true, - "transferSize": 2322, - "resourceSize": 3760, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "isLinkPreload": true, - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/4bd1b696-f785427dddbba9fb.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.299999997019768, - "networkRequestTime": 50.27200001478195, - "networkEndTime": 59.445000007748604, - "finished": true, - "transferSize": 54796, - "resourceSize": 173020, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/1255-64d514cdae386b7c.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.375, - "networkRequestTime": 53.266000002622604, - "networkEndTime": 71.50900000333786, - "finished": true, - "transferSize": 46277, - "resourceSize": 171823, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/main-app-e64675985c4ff2c9.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.431000009179115, - "networkRequestTime": 54.91400000452995, - "networkEndTime": 70.22300000488758, - "finished": true, - "transferSize": 907, - "resourceSize": 560, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/0e5ce63c-85eafe7af89f0a78.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.480000004172325, - "networkRequestTime": 55.034000009298325, - "networkEndTime": 71.04000000655651, - "finished": true, - "transferSize": 1734, - "resourceSize": 4223, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/1375-c2d9d784dcb12fa4.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.54500000178814, - "networkRequestTime": 55.125, - "networkEndTime": 71.24400000274181, - "finished": true, - "transferSize": 11463, - "resourceSize": 33238, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/2520-f6fa86b785715c3b.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.606000006198883, - "networkRequestTime": 56.0620000064373, - "networkEndTime": 71.41099999845028, - "finished": true, - "transferSize": 6967, - "resourceSize": 17687, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/5356-e576b3df6d312992.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.655000016093254, - "networkRequestTime": 60.04800000786781, - "networkEndTime": 88.94700001180172, - "finished": true, - "transferSize": 22768, - "resourceSize": 84361, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/4777-1c1a400c3ca4954d.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.712000012397766, - "networkRequestTime": 70.38000001013279, - "networkEndTime": 103.39499999582767, - "finished": true, - "transferSize": 30854, - "resourceSize": 88978, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/295-7d78c1762ca363a8.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.787000015377998, - "networkRequestTime": 71.61400000751019, - "networkEndTime": 102.56400001049042, - "finished": true, - "transferSize": 17751, - "resourceSize": 48137, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/7971-2bc826dde7a0b124.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.857000008225441, - "networkRequestTime": 71.67200000584126, - "networkEndTime": 102.81900000572205, - "finished": true, - "transferSize": 5765, - "resourceSize": 18269, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/9543-520b5ebb78b10303.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.903000012040138, - "networkRequestTime": 71.70100000500679, - "networkEndTime": 103.02000001072884, - "finished": true, - "transferSize": 3711, - "resourceSize": 9640, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/5004-20195db75ee2b3ae.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 11.954000011086464, - "networkRequestTime": 71.73200000822544, - "networkEndTime": 103.26400001347065, - "finished": true, - "transferSize": 9369, - "resourceSize": 27207, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/5746-9b0c403ae999204d.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 12.00100001692772, - "networkRequestTime": 89.09800001978874, - "networkEndTime": 103.77199999988079, - "finished": true, - "transferSize": 5817, - "resourceSize": 23853, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/app/layout-892389fa23659b78.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 12.056000009179115, - "networkRequestTime": 103.51700001955032, - "networkEndTime": 107.64100001752377, - "finished": true, - "transferSize": 1173, - "resourceSize": 826, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/app/(authenticated)/layout-bde4d26cf5933763.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 12.09400001168251, - "networkRequestTime": 103.60100001096725, - "networkEndTime": 111.20100000500679, - "finished": true, - "transferSize": 3701, - "resourceSize": 9152, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/app/(authenticated)/settings/layout-fdcc5b569751ddab.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 12.144000008702278, - "networkRequestTime": 103.64700001478195, - "networkEndTime": 112.19799999892712, - "finished": true, - "transferSize": 3065, - "resourceSize": 6656, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:8000/api/v1/users/me", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 183.6110000014305, - "networkRequestTime": 187.97200000286102, - "networkEndTime": 232.15300001204014, - "finished": true, - "transferSize": 1385, - "resourceSize": 256, - "statusCode": 200, - "mimeType": "application/json", - "resourceType": "XHR", - "priority": "High", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:8000/api/v1/users/me", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 185.04199999570847, - "networkRequestTime": 184.37900000810623, - "networkEndTime": 187.8960000127554, - "finished": true, - "transferSize": 0, - "resourceSize": 0, - "statusCode": 200, - "mimeType": "text/plain", - "resourceType": "Preflight", - "priority": "High", - "entity": "localhost" - }, - { - "url": "http://localhost:3000/?_rsc=c4qkg", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 255.8100000023842, - "networkRequestTime": 256.5359999984503, - "networkEndTime": 264.0640000104904, - "finished": true, - "transferSize": 3289, - "resourceSize": 8007, - "statusCode": 200, - "mimeType": "text/x-component", - "resourceType": "Fetch", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/settings/password?_rsc=c4qkg", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 256.29900000989437, - "networkRequestTime": 256.8560000061989, - "networkEndTime": 264.21200001239777, - "finished": true, - "transferSize": 2870, - "resourceSize": 9394, - "statusCode": 200, - "mimeType": "text/x-component", - "resourceType": "Fetch", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/settings/sessions?_rsc=c4qkg", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 256.6990000009537, - "networkRequestTime": 257.244000017643, - "networkEndTime": 264.3310000002384, - "finished": true, - "transferSize": 2872, - "resourceSize": 9397, - "statusCode": 200, - "mimeType": "text/x-component", - "resourceType": "Fetch", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/settings/preferences?_rsc=c4qkg", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 257.0900000035763, - "networkRequestTime": 257.76200000941753, - "networkEndTime": 264.44100001454353, - "finished": true, - "transferSize": 2859, - "resourceSize": 9387, - "statusCode": 200, - "mimeType": "text/x-component", - "resourceType": "Fetch", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/admin?_rsc=c4qkg", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 257.4770000129938, - "networkRequestTime": 258.2090000063181, - "networkEndTime": 263.207000002265, - "finished": false, - "transferSize": 2433, - "resourceSize": 5044, - "statusCode": 404, - "mimeType": "text/x-component", - "resourceType": "Fetch", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/1356-91eb0cc4bec31d42.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 264.7399999946356, - "networkRequestTime": 265.96899999678135, - "networkEndTime": 270.9020000100136, - "finished": true, - "transferSize": 5544, - "resourceSize": 13502, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - }, - { - "url": "http://localhost:3000/_next/static/chunks/app/page-49d3662eec9ff969.js", - "sessionTargetType": "page", - "protocol": "http/1.1", - "rendererStartTime": 265.1350000053644, - "networkRequestTime": 267.4070000052452, - "networkEndTime": 269.79400001466274, - "finished": true, - "transferSize": 1297, - "resourceSize": 950, - "statusCode": 200, - "mimeType": "application/javascript", - "resourceType": "Script", - "priority": "Low", - "experimentalFromMainFrame": true, - "entity": "localhost" - } - ], - "debugData": { - "type": "debugdata", - "networkStartTimeTs": 128477023070, - "initiators": [ - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 275 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 368 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 477 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 550 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 628 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 710 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 792 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 870 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 948 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1026 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1104 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1181 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1259 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1337 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1415 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1493 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1577 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1677 - }, - { - "type": "parser", - "url": "http://localhost:3000/settings/profile", - "lineNumber": 0, - "columnNumber": 1786 - }, - { - "type": "preflight", - "url": "http://localhost:8000/api/v1/users/me" - } - ] - } - } - }, - "network-rtt": { - "id": "network-rtt", - "title": "Network Round Trip Times", - "description": "Network round trip times (RTT) have a large impact on performance. If the RTT to an origin is high, it's an indication that servers closer to the user could improve performance. [Learn more about the Round Trip Time](https://hpbn.co/primer-on-latency-and-bandwidth/).", - "score": 1, - "scoreDisplayMode": "informative", - "numericValue": 0.8999999999999999, - "numericUnit": "millisecond", - "displayValue": "0Ā ms", - "details": { - "type": "table", - "headings": [ - { - "key": "origin", - "valueType": "text", - "label": "URL" - }, - { - "key": "rtt", - "valueType": "ms", - "granularity": 1, - "label": "Time Spent" - } - ], - "items": [ - { - "origin": "http://localhost:8000", - "rtt": 0.8999999999999999 - }, - { - "origin": "http://localhost:3000", - "rtt": 0.14900000000000002 - } - ], - "sortedBy": ["rtt"] - } - }, - "network-server-latency": { - "id": "network-server-latency", - "title": "Server Backend Latencies", - "description": "Server latencies can impact web performance. If the server latency of an origin is high, it's an indication the server is overloaded or has poor backend performance. [Learn more about server response time](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall).", - "score": 1, - "scoreDisplayMode": "informative", - "numericValue": 2.54, - "numericUnit": "millisecond", - "displayValue": "0Ā ms", - "details": { - "type": "table", - "headings": [ - { - "key": "origin", - "valueType": "text", - "label": "URL" - }, - { - "key": "serverResponseTime", - "valueType": "ms", - "granularity": 1, - "label": "Time Spent" - } - ], - "items": [ - { - "origin": "http://localhost:3000", - "serverResponseTime": 2.54 - }, - { - "origin": "http://localhost:8000", - "serverResponseTime": 0.9910000000000001 - } - ], - "sortedBy": ["serverResponseTime"] - } - }, - "main-thread-tasks": { - "id": "main-thread-tasks", - "title": "Tasks", - "description": "Lists the toplevel main thread tasks that executed during page load.", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "startTime", - "valueType": "ms", - "granularity": 1, - "label": "Start Time" - }, - { - "key": "duration", - "valueType": "ms", - "granularity": 1, - "label": "End Time" - } - ], - "items": [ - { - "duration": 7.665, - "startTime": 9.503 - }, - { - "duration": 30.711, - "startTime": 17.395 - }, - { - "duration": 22.252, - "startTime": 91.993 - }, - { - "duration": 15.262, - "startTime": 124.738 - }, - { - "duration": 14.78, - "startTime": 144.31 - }, - { - "duration": 7.625, - "startTime": 164.613 - }, - { - "duration": 7.829, - "startTime": 176.798 - }, - { - "duration": 15.695, - "startTime": 234.316 - } - ] - } - }, - "metrics": { - "id": "metrics", - "title": "Metrics", - "description": "Collects all available metrics.", - "score": 1, - "scoreDisplayMode": "informative", - "numericValue": 615, - "numericUnit": "millisecond", - "details": { - "type": "debugdata", - "items": [ - { - "firstContentfulPaint": 205, - "largestContentfulPaint": 615, - "interactive": 615, - "speedIndex": 205, - "totalBlockingTime": 0, - "maxPotentialFID": 22, - "cumulativeLayoutShift": 0, - "cumulativeLayoutShiftMainFrame": 0, - "timeToFirstByte": 123, - "observedTimeOrigin": 0, - "observedTimeOriginTs": 128477022455, - "observedNavigationStart": 0, - "observedNavigationStartTs": 128477022455, - "observedFirstPaint": 67, - "observedFirstPaintTs": 128477089440, - "observedFirstContentfulPaint": 67, - "observedFirstContentfulPaintTs": 128477089440, - "observedFirstContentfulPaintAllFrames": 67, - "observedFirstContentfulPaintAllFramesTs": 128477089440, - "observedLargestContentfulPaint": 268, - "observedLargestContentfulPaintTs": 128477290816, - "observedLargestContentfulPaintAllFrames": 268, - "observedLargestContentfulPaintAllFramesTs": 128477290816, - "observedTraceEnd": 2581, - "observedTraceEndTs": 128479603034, - "observedLoad": 173, - "observedLoadTs": 128477195764, - "observedDomContentLoaded": 59, - "observedDomContentLoadedTs": 128477081229, - "observedCumulativeLayoutShift": 0, - "observedCumulativeLayoutShiftMainFrame": 0, - "observedFirstVisualChange": 62, - "observedFirstVisualChangeTs": 128477084455, - "observedLastVisualChange": 266, - "observedLastVisualChangeTs": 128477288455, - "observedSpeedIndex": 101, - "observedSpeedIndexTs": 128477123769 - }, - { - "lcpInvalidated": false - } - ] - } - }, - "resource-summary": { - "id": "resource-summary", - "title": "Resources Summary", - "description": "Aggregates all network requests and groups them by type", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "label", - "valueType": "text", - "label": "Resource Type" - }, - { - "key": "requestCount", - "valueType": "numeric", - "label": "Requests" - }, - { - "key": "transferSize", - "valueType": "bytes", - "label": "Transfer Size" - } - ], - "items": [ - { - "resourceType": "total", - "label": "Total", - "requestCount": 29, - "transferSize": 295420 - }, - { - "resourceType": "script", - "label": "Script", - "requestCount": 19, - "transferSize": 235281 - }, - { - "resourceType": "font", - "label": "Font", - "requestCount": 1, - "transferSize": 28688 - }, - { - "resourceType": "other", - "label": "Other", - "requestCount": 7, - "transferSize": 15708 - }, - { - "resourceType": "stylesheet", - "label": "Stylesheet", - "requestCount": 1, - "transferSize": 12016 - }, - { - "resourceType": "document", - "label": "Document", - "requestCount": 1, - "transferSize": 3727 - }, - { - "resourceType": "image", - "label": "Image", - "requestCount": 0, - "transferSize": 0 - }, - { - "resourceType": "media", - "label": "Media", - "requestCount": 0, - "transferSize": 0 - }, - { - "resourceType": "third-party", - "label": "Third-party", - "requestCount": 0, - "transferSize": 0 - } - ] - } - }, - "third-party-summary": { - "id": "third-party-summary", - "title": "Minimize third-party usage", - "description": "Third-party code can significantly impact load performance. Limit the number of redundant third-party providers and try to load third-party code after your page has primarily finished loading. [Learn how to minimize third-party impact](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "TBT": 0 - }, - "guidanceLevel": 1 - }, - "third-party-facades": { - "id": "third-party-facades", - "title": "Lazy load third-party resources with facades", - "description": "Some third-party embeds can be lazy loaded. Consider replacing them with a facade until they are required. [Learn how to defer third-parties with a facade](https://developer.chrome.com/docs/lighthouse/performance/third-party-facades/).", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "TBT": 0 - }, - "guidanceLevel": 3 - }, - "largest-contentful-paint-element": { - "id": "largest-contentful-paint-element", - "title": "Largest Contentful Paint element", - "description": "This is the largest contentful element painted within the viewport. [Learn more about the Largest Contentful Paint element](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)", - "score": 1, - "scoreDisplayMode": "informative", - "displayValue": "620Ā ms", - "metricSavings": { - "LCP": 0 - }, - "details": { - "type": "list", - "items": [ - { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "label": "Element" - } - ], - "items": [ - { - "node": { - "type": "node", - "lhId": "page-0-P", - "path": "2,HTML,1,BODY,11,DIV,1,MAIN,0,DIV,1,DIV,1,DIV,0,DIV,1,P", - "selector": "div.space-y-6 > div.rounded-lg > div > p.text-muted-foreground", - "boundingRect": { - "top": 330, - "bottom": 354, - "left": 153, - "right": 1095, - "width": 942, - "height": 24 - }, - "snippet": "
", - "nodeLabel": "Manage your profile information (Coming in Task 3.2)" - } - } - ] - }, - { - "type": "table", - "headings": [ - { - "key": "phase", - "valueType": "text", - "label": "Phase" - }, - { - "key": "percent", - "valueType": "text", - "label": "% of LCP" - }, - { - "key": "timing", - "valueType": "ms", - "label": "Timing" - } - ], - "items": [ - { - "phase": "TTFB", - "timing": 122.54, - "percent": "20%" - }, - { - "phase": "Load Delay", - "timing": 0, - "percent": "0%" - }, - { - "phase": "Load Time", - "timing": 0, - "percent": "0%" - }, - { - "phase": "Render Delay", - "timing": 492.65299999999996, - "percent": "80%" - } - ] - } - ] - }, - "guidanceLevel": 1 - }, - "lcp-lazy-loaded": { - "id": "lcp-lazy-loaded", - "title": "Largest Contentful Paint image was not lazily loaded", - "description": "Above-the-fold images that are lazily loaded render later in the page lifecycle, which can delay the largest contentful paint. [Learn more about optimal lazy loading](https://web.dev/articles/lcp-lazy-loading).", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "LCP": 0 - }, - "guidanceLevel": 3 - }, - "layout-shifts": { - "id": "layout-shifts", - "title": "Avoid large layout shifts", - "description": "These are the largest layout shifts observed on the page. Each table item represents a single layout shift, and shows the element that shifted the most. Below each item are possible root causes that led to the layout shift. Some of these layout shifts may not be included in the CLS metric value due to [windowing](https://web.dev/articles/cls#what_is_cls). [Learn how to improve CLS](https://web.dev/articles/optimize-cls)", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "CLS": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "extra" - }, - "label": "Element" - }, - { - "key": "score", - "valueType": "numeric", - "subItemsHeading": { - "key": "cause", - "valueType": "text" - }, - "granularity": 0.001, - "label": "Layout shift score" - } - ], - "items": [] - }, - "guidanceLevel": 2 - }, - "long-tasks": { - "id": "long-tasks", - "title": "Avoid long main-thread tasks", - "description": "Lists the longest tasks on the main thread, useful for identifying worst contributors to input delay. [Learn how to avoid long main-thread tasks](https://web.dev/articles/optimize-long-tasks)", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "TBT": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "url", - "valueType": "url", - "label": "URL" - }, - { - "key": "startTime", - "valueType": "ms", - "granularity": 1, - "label": "Start Time" - }, - { - "key": "duration", - "valueType": "ms", - "granularity": 1, - "label": "Duration" - } - ], - "items": [], - "debugData": { - "type": "debugdata", - "urls": [], - "tasks": [] - } - }, - "guidanceLevel": 1 - }, - "non-composited-animations": { - "id": "non-composited-animations", - "title": "Avoid non-composited animations", - "description": "Animations which are not composited can be janky and increase CLS. [Learn how to avoid non-composited animations](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "CLS": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "failureReason", - "valueType": "text" - }, - "label": "Element" - } - ], - "items": [] - }, - "guidanceLevel": 2 - }, - "unsized-images": { - "id": "unsized-images", - "title": "Image elements have explicit `width` and `height`", - "description": "Set an explicit width and height on image elements to reduce layout shifts and improve CLS. [Learn how to set image dimensions](https://web.dev/articles/optimize-cls#images_without_dimensions)", - "score": 1, - "scoreDisplayMode": "metricSavings", - "metricSavings": { - "CLS": 0 - }, - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "label": "" - }, - { - "key": "url", - "valueType": "url", - "label": "URL" - } - ], - "items": [] - }, - "guidanceLevel": 4 - }, - "valid-source-maps": { - "id": "valid-source-maps", - "title": "Page has valid source maps", - "description": "Source maps translate minified code to the original source code. This helps developers debug in production. In addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these benefits. [Learn more about source maps](https://developer.chrome.com/docs/devtools/javascript/source-maps/).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "scriptUrl", - "valueType": "url", - "subItemsHeading": { - "key": "error" - }, - "label": "URL" - }, - { - "key": "sourceMapUrl", - "valueType": "url", - "label": "Map URL" - } - ], - "items": [ - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/vendor/@eyeo/webext-ad-filtering-solution/content.js", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/polyfill.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/polyfill.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog.preload.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog.preload.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog-ui.preload.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog-ui.preload.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/cookie-banner-detection.preload.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/cookie-banner-detection.preload.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/composer.preload.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/composer.preload.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - }, - { - "scriptUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/bypass.preload.js", - "sourceMapUrl": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/bypass.preload.js.map", - "subItems": { - "type": "subitems", - "items": [] - } - } - ] - } - }, - "prioritize-lcp-image": { - "id": "prioritize-lcp-image", - "title": "Preload Largest Contentful Paint image", - "description": "If the LCP element is dynamically added to the page, you should preload the image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/articles/optimize-lcp#optimize_when_the_resource_is_discovered).", - "score": null, - "scoreDisplayMode": "notApplicable", - "metricSavings": { - "LCP": 0 - }, - "guidanceLevel": 4 - }, - "csp-xss": { - "id": "csp-xss", - "title": "Ensure CSP is effective against XSS attacks", - "description": "A strong Content Security Policy (CSP) significantly reduces the risk of cross-site scripting (XSS) attacks. [Learn how to use a CSP to prevent XSS](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "description", - "valueType": "text", - "subItemsHeading": { - "key": "description" - }, - "label": "Description" - }, - { - "key": "directive", - "valueType": "code", - "subItemsHeading": { - "key": "directive" - }, - "label": "Directive" - }, - { - "key": "severity", - "valueType": "text", - "subItemsHeading": { - "key": "severity" - }, - "label": "Severity" - } - ], - "items": [ - { - "severity": "High", - "description": "No CSP found in enforcement mode" - } - ] - } - }, - "has-hsts": { - "id": "has-hsts", - "title": "Use a strong HSTS policy", - "description": "Deployment of the HSTS header significantly reduces the risk of downgrading HTTP connections and eavesdropping attacks. A rollout in stages, starting with a low max-age is recommended. [Learn more about using a strong HSTS policy.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "description", - "valueType": "text", - "subItemsHeading": { - "key": "description" - }, - "label": "Description" - }, - { - "key": "directive", - "valueType": "code", - "subItemsHeading": { - "key": "directive" - }, - "label": "Directive" - }, - { - "key": "severity", - "valueType": "text", - "subItemsHeading": { - "key": "severity" - }, - "label": "Severity" - } - ], - "items": [ - { - "severity": "High", - "description": "No HSTS header found" - } - ] - } - }, - "origin-isolation": { - "id": "origin-isolation", - "title": "Ensure proper origin isolation with COOP", - "description": "The Cross-Origin-Opener-Policy (COOP) can be used to isolate the top-level window from other documents such as pop-ups. [Learn more about deploying the COOP header.](https://web.dev/articles/why-coop-coep#coop)", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "description", - "valueType": "text", - "subItemsHeading": { - "key": "description" - }, - "label": "Description" - }, - { - "key": "directive", - "valueType": "code", - "subItemsHeading": { - "key": "directive" - }, - "label": "Directive" - }, - { - "key": "severity", - "valueType": "text", - "subItemsHeading": { - "key": "severity" - }, - "label": "Severity" - } - ], - "items": [ - { - "description": "No COOP header found", - "severity": "High" - } - ] - } - }, - "clickjacking-mitigation": { - "id": "clickjacking-mitigation", - "title": "Mitigate clickjacking with XFO or CSP", - "description": "The `X-Frame-Options` (XFO) header or the `frame-ancestors` directive in the `Content-Security-Policy` (CSP) header control where a page can be embedded. These can mitigate clickjacking attacks by blocking some or all sites from embedding the page. [Learn more about mitigating clickjacking](https://developer.chrome.com/docs/lighthouse/best-practices/clickjacking-mitigation).", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "description", - "valueType": "text", - "subItemsHeading": { - "key": "description" - }, - "label": "Description" - }, - { - "key": "severity", - "valueType": "text", - "subItemsHeading": { - "key": "severity" - }, - "label": "Severity" - } - ], - "items": [ - { - "severity": "High", - "description": "No frame control policy found" - } - ] - } - }, - "trusted-types-xss": { - "id": "trusted-types-xss", - "title": "Mitigate DOM-based XSS with Trusted Types", - "description": "The `require-trusted-types-for` directive in the `Content-Security-Policy` (CSP) header instructs user agents to control the data passed to DOM XSS sink functions. [Learn more about mitigating DOM-based XSS with Trusted Types](https://developer.chrome.com/docs/lighthouse/best-practices/trusted-types-xss).", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "table", - "headings": [ - { - "key": "description", - "valueType": "text", - "subItemsHeading": { - "key": "description" - }, - "label": "Description" - }, - { - "key": "severity", - "valueType": "text", - "subItemsHeading": { - "key": "severity" - }, - "label": "Severity" - } - ], - "items": [ - { - "severity": "High", - "description": "No `Content-Security-Policy` header with Trusted Types directive found" - } - ] - } - }, - "script-treemap-data": { - "id": "script-treemap-data", - "title": "Script Treemap Data", - "description": "Used for treemap app", - "score": 1, - "scoreDisplayMode": "informative", - "details": { - "type": "treemap-data", - "nodes": [ - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/vendor/@eyeo/webext-ad-filtering-solution/content.js", - "resourceBytes": 290550, - "encodedBytes": 290550, - "unusedBytes": 58593, - "children": [ - { - "name": "webpack:/@eyeo/webext-ad-filtering-solution", - "resourceBytes": 105491, - "unusedBytes": 58593, - "children": [ - { - "name": ".", - "resourceBytes": 79477, - "unusedBytes": 51364, - "children": [ - { - "name": "adblockpluscore/lib", - "resourceBytes": 55745, - "unusedBytes": 39703, - "children": [ - { - "name": "common.js", - "resourceBytes": 6342, - "unusedBytes": 4596 - }, - { - "name": "content/elemHideEmulation.js", - "resourceBytes": 39416, - "unusedBytes": 30448 - }, - { - "name": "patterns.js", - "resourceBytes": 9987, - "unusedBytes": 4659 - } - ] - }, - { - "name": "src", - "resourceBytes": 23732, - "unusedBytes": 11661, - "children": [ - { - "name": "all/errors.js", - "resourceBytes": 2561, - "unusedBytes": 680 - }, - { - "name": "content", - "resourceBytes": 21171, - "unusedBytes": 10981, - "children": [ - { - "name": "element-collapsing.js", - "resourceBytes": 5695, - "unusedBytes": 4137 - }, - { - "name": "allowlisting.js", - "resourceBytes": 3018, - "unusedBytes": 1960 - }, - { - "name": "element-hiding-tracer.js", - "resourceBytes": 1996, - "unusedBytes": 1276 - }, - { - "name": "subscribe-links.js", - "resourceBytes": 3593, - "unusedBytes": 1993 - }, - { - "name": "cdp-session.js", - "resourceBytes": 1264, - "unusedBytes": 44 - }, - { - "name": "blockthrough-tag.js", - "resourceBytes": 1172, - "unusedBytes": 360 - }, - { - "name": "safari-history.js", - "resourceBytes": 1289, - "unusedBytes": 388 - }, - { - "name": "index.js", - "resourceBytes": 3144, - "unusedBytes": 823 - } - ] - } - ] - } - ] - }, - { - "name": "../..", - "resourceBytes": 25388, - "unusedBytes": 7229, - "children": [ - { - "name": "vendor/webextension-polyfill/src/browser-polyfill.js", - "resourceBytes": 22243, - "unusedBytes": 4959 - }, - { - "name": "node_modules/uuid/dist/esm-browser", - "resourceBytes": 3145, - "children": [ - { - "name": "native.js", - "resourceBytes": 181 - }, - { - "name": "rng.js", - "resourceBytes": 822, - "unusedBytes": 542 - }, - { - "name": "stringify.js", - "resourceBytes": 1515, - "unusedBytes": 1163 - }, - { - "name": "v4.js", - "resourceBytes": 627, - "unusedBytes": 565 - } - ], - "unusedBytes": 2270 - } - ] - }, - { - "name": "webpack/bootstrap", - "resourceBytes": 626 - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 185059 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/polyfill.js", - "resourceBytes": 33000, - "encodedBytes": 33000, - "unusedBytes": 4641, - "children": [ - { - "name": "webpack:/adblockplus", - "resourceBytes": 24891, - "unusedBytes": 4641, - "children": [ - { - "name": "../../node_modules/webextension-polyfill/src/browser-polyfill.js", - "resourceBytes": 22243, - "unusedBytes": 4462, - "duplicatedNormalizedModuleName": "node_modules/webextension-polyfill/src/browser-polyfill.js" - }, - { - "name": "webpack", - "resourceBytes": 1292, - "children": [ - { - "name": "bootstrap", - "resourceBytes": 626 - }, - { - "name": "runtime", - "resourceBytes": 666, - "unusedBytes": 25, - "children": [ - { - "name": "compat get default export", - "resourceBytes": 268, - "unusedBytes": 25 - }, - { - "name": "define property getters", - "resourceBytes": 309 - }, - { - "name": "hasOwnProperty shorthand", - "resourceBytes": 89 - } - ] - } - ], - "unusedBytes": 25 - }, - { - "name": "./adblockpluschrome/lib/polyfill.js", - "resourceBytes": 1356, - "unusedBytes": 154 - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 8109 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/composer.preload.js", - "resourceBytes": 22324, - "encodedBytes": 22324, - "unusedBytes": 14458, - "children": [ - { - "name": "webpack:/adblockplus/./src", - "resourceBytes": 21585, - "unusedBytes": 14458, - "children": [ - { - "name": "core/messaging", - "resourceBytes": 6626, - "unusedBytes": 4617, - "children": [ - { - "name": "shared", - "resourceBytes": 1275, - "unusedBytes": 607, - "children": [ - { - "name": "emitter.ts", - "resourceBytes": 439, - "unusedBytes": 73 - }, - { - "name": "messaging.ts", - "resourceBytes": 836, - "unusedBytes": 534, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/shared/messaging.ts" - } - ] - }, - { - "name": "front", - "resourceBytes": 5351, - "unusedBytes": 4010, - "children": [ - { - "name": "messaging.ts", - "resourceBytes": 2141, - "unusedBytes": 973, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/messaging.ts" - }, - { - "name": "category-app.ts", - "resourceBytes": 978, - "unusedBytes": 855, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-app.ts" - }, - { - "name": "category-filters.ts", - "resourceBytes": 178, - "unusedBytes": 174 - }, - { - "name": "category-prefs.ts", - "resourceBytes": 211, - "unusedBytes": 207 - }, - { - "name": "category-premium.ts", - "resourceBytes": 685, - "unusedBytes": 677, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-premium.ts" - }, - { - "name": "category-requests.ts", - "resourceBytes": 113, - "unusedBytes": 111 - }, - { - "name": "category-stats.ts", - "resourceBytes": 309, - "unusedBytes": 304 - }, - { - "name": "category-subscriptions.ts", - "resourceBytes": 717, - "unusedBytes": 709, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-subscriptions.ts" - }, - { - "name": "index.ts", - "resourceBytes": 19 - } - ] - } - ] - }, - { - "name": "composer/content", - "resourceBytes": 14959, - "unusedBytes": 9841, - "children": [ - { - "name": "composer.ts", - "resourceBytes": 14958, - "unusedBytes": 9841 - }, - { - "name": "index.ts", - "resourceBytes": 1 - } - ] - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 739 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/bypass.preload.js", - "resourceBytes": 34247, - "encodedBytes": 34247, - "unusedBytes": 23117, - "children": [ - { - "name": "webpack:/adblockplus", - "resourceBytes": 26122, - "unusedBytes": 23117, - "children": [ - { - "name": "../../node_modules/webextension-polyfill/src/browser-polyfill.js", - "resourceBytes": 22243, - "unusedBytes": 20791, - "duplicatedNormalizedModuleName": "node_modules/webextension-polyfill/src/browser-polyfill.js" - }, - { - "name": "webpack", - "resourceBytes": 1292, - "children": [ - { - "name": "bootstrap", - "resourceBytes": 626 - }, - { - "name": "runtime", - "resourceBytes": 666, - "unusedBytes": 39, - "children": [ - { - "name": "compat get default export", - "resourceBytes": 268, - "unusedBytes": 39 - }, - { - "name": "define property getters", - "resourceBytes": 309 - }, - { - "name": "hasOwnProperty shorthand", - "resourceBytes": 89 - } - ] - } - ], - "unusedBytes": 39 - }, - { - "name": "./src/bypass/content", - "resourceBytes": 2587, - "unusedBytes": 2287, - "children": [ - { - "name": "public-api.ts", - "resourceBytes": 2585, - "unusedBytes": 2287 - }, - { - "name": "index.ts", - "resourceBytes": 2 - } - ] - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 8125 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog.preload.js", - "resourceBytes": 10293, - "encodedBytes": 10293, - "unusedBytes": 6177, - "children": [ - { - "name": "webpack:/adblockplus/./src", - "resourceBytes": 9383, - "unusedBytes": 6177, - "children": [ - { - "name": "core/messaging", - "resourceBytes": 6626, - "unusedBytes": 4690, - "children": [ - { - "name": "shared", - "resourceBytes": 1275, - "unusedBytes": 674, - "children": [ - { - "name": "emitter.ts", - "resourceBytes": 439, - "unusedBytes": 140 - }, - { - "name": "messaging.ts", - "resourceBytes": 836, - "unusedBytes": 534, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/shared/messaging.ts" - } - ] - }, - { - "name": "front", - "resourceBytes": 5351, - "unusedBytes": 4016, - "children": [ - { - "name": "messaging.ts", - "resourceBytes": 2141, - "unusedBytes": 979, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/messaging.ts" - }, - { - "name": "category-app.ts", - "resourceBytes": 978, - "unusedBytes": 855, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-app.ts" - }, - { - "name": "category-filters.ts", - "resourceBytes": 178, - "unusedBytes": 174 - }, - { - "name": "category-prefs.ts", - "resourceBytes": 211, - "unusedBytes": 207 - }, - { - "name": "category-premium.ts", - "resourceBytes": 685, - "unusedBytes": 677, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-premium.ts" - }, - { - "name": "category-requests.ts", - "resourceBytes": 113, - "unusedBytes": 111 - }, - { - "name": "category-stats.ts", - "resourceBytes": 309, - "unusedBytes": 304 - }, - { - "name": "category-subscriptions.ts", - "resourceBytes": 717, - "unusedBytes": 709, - "duplicatedNormalizedModuleName": "webpack://adblockplus/./src/core/messaging/front/category-subscriptions.ts" - }, - { - "name": "index.ts", - "resourceBytes": 19 - } - ] - } - ] - }, - { - "name": "unload-cleanup", - "resourceBytes": 546, - "unusedBytes": 366, - "children": [ - { - "name": "content/unload-cleanup.ts", - "resourceBytes": 367, - "unusedBytes": 366 - }, - { - "name": "shared", - "resourceBytes": 179, - "children": [ - { - "name": "unload-cleanup.types.ts", - "resourceBytes": 177 - }, - { - "name": "index.ts", - "resourceBytes": 2 - } - ] - } - ] - }, - { - "name": "onpage-dialog/content", - "resourceBytes": 2211, - "unusedBytes": 1121, - "children": [ - { - "name": "frame-manager.ts", - "resourceBytes": 2210, - "unusedBytes": 1121 - }, - { - "name": "index.ts", - "resourceBytes": 1 - } - ] - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 910 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/onpage-dialog-ui.preload.js", - "resourceBytes": 409865, - "encodedBytes": 409865, - "unusedBytes": 26362, - "children": [ - { - "name": "webpack:/adblockplus", - "resourceBytes": 29901, - "unusedBytes": 26362, - "children": [ - { - "name": "../../node_modules/webextension-polyfill/src/browser-polyfill.js", - "resourceBytes": 22243, - "unusedBytes": 20791, - "duplicatedNormalizedModuleName": "node_modules/webextension-polyfill/src/browser-polyfill.js" - }, - { - "name": "webpack/bootstrap", - "resourceBytes": 626 - }, - { - "name": ".", - "resourceBytes": 7032, - "unusedBytes": 5571, - "children": [ - { - "name": "js/dom.mjs", - "resourceBytes": 4016, - "unusedBytes": 2789 - }, - { - "name": "src/onpage-dialog/content-ui", - "resourceBytes": 3016, - "unusedBytes": 2782, - "children": [ - { - "name": "dialog.ts", - "resourceBytes": 3015, - "unusedBytes": 2782 - }, - { - "name": "index.ts", - "resourceBytes": 1 - } - ] - } - ] - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 379964 - } - ] - }, - { - "name": "chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/cookie-banner-detection.preload.js", - "resourceBytes": 30866, - "encodedBytes": 30866, - "unusedBytes": 20902, - "children": [ - { - "name": "webpack:/adblockplus", - "resourceBytes": 23190, - "unusedBytes": 20902, - "children": [ - { - "name": "../..", - "resourceBytes": 22564, - "unusedBytes": 20902, - "children": [ - { - "name": "node_modules/webextension-polyfill/src/browser-polyfill.js", - "resourceBytes": 22243, - "unusedBytes": 20791, - "duplicatedNormalizedModuleName": "node_modules/webextension-polyfill/src/browser-polyfill.js" - }, - { - "name": "fragment/cookie-banner-detection/dist", - "resourceBytes": 321, - "children": [ - { - "name": "shared/cookie-banner-detection.types.js", - "resourceBytes": 102 - }, - { - "name": "content", - "resourceBytes": 219, - "unusedBytes": 111, - "children": [ - { - "name": "cookie-banner-detection.js", - "resourceBytes": 218, - "unusedBytes": 111 - }, - { - "name": "index.js", - "resourceBytes": 1 - } - ] - } - ], - "unusedBytes": 111 - } - ] - }, - { - "name": "webpack/bootstrap", - "resourceBytes": 626 - } - ] - }, - { - "name": "(unmapped)", - "resourceBytes": 7676 - } - ] - }, - { - "name": "chrome-extension://jdlhfjlpaijjhklfadlhbbmpjfddkglc/client.js", - "resourceBytes": 1296, - "encodedBytes": 1296, - "unusedBytes": 1204 - }, - { - "name": "chrome-extension://lmhkpmbekcpmknklioeibfkpmmfibljd/content.bundle.js", - "resourceBytes": 3800, - "encodedBytes": 3800, - "unusedBytes": 2327 - }, - { - "name": "chrome-extension://lmhkpmbekcpmknklioeibfkpmmfibljd/page.bundle.js", - "resourceBytes": 33900, - "encodedBytes": 33900, - "unusedBytes": 30096 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/content-message-handler.js", - "resourceBytes": 6426, - "encodedBytes": 6426, - "unusedBytes": 2680 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/trigger-autofill-script-injection.js", - "resourceBytes": 164, - "encodedBytes": 164, - "unusedBytes": 0 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/fido2-content-script.js", - "resourceBytes": 29563, - "encodedBytes": 29563, - "unusedBytes": 17732 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/fido2-page-script.js", - "resourceBytes": 28774, - "encodedBytes": 28774, - "unusedBytes": 22001 - }, - { - "name": "http://localhost:3000/settings/profile", - "resourceBytes": 11411, - "encodedBytes": 2623, - "children": [ - { - "name": "(inline) (function() {\n ā¦", - "resourceBytes": 696, - "unusedBytes": 0 - }, - { - "name": "(inline) (self.__next_f=ā¦", - "resourceBytes": 43, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 2247, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 617, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 6212, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 934, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 187, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 428, - "unusedBytes": 0 - }, - { - "name": "(inline) self.__next_f.pā¦", - "resourceBytes": 47, - "unusedBytes": 0 - } - ] - }, - { - "name": "http://localhost:3000/_next/static/chunks/webpack-355011946f45648f.js", - "resourceBytes": 3760, - "encodedBytes": 1944, - "unusedBytes": 362 - }, - { - "name": "http://localhost:3000/_next/static/chunks/4bd1b696-f785427dddbba9fb.js", - "resourceBytes": 173020, - "encodedBytes": 54416, - "unusedBytes": 50343 - }, - { - "name": "http://localhost:3000/_next/static/chunks/main-app-e64675985c4ff2c9.js", - "resourceBytes": 560, - "encodedBytes": 560, - "unusedBytes": 0 - }, - { - "name": "http://localhost:3000/_next/static/chunks/2520-f6fa86b785715c3b.js", - "resourceBytes": 17687, - "encodedBytes": 6588, - "unusedBytes": 6848 - }, - { - "name": "http://localhost:3000/_next/static/chunks/1255-64d514cdae386b7c.js", - "resourceBytes": 171823, - "encodedBytes": 45897, - "unusedBytes": 66249 - }, - { - "name": "http://localhost:3000/_next/static/chunks/0e5ce63c-85eafe7af89f0a78.js", - "resourceBytes": 4223, - "encodedBytes": 1355, - "unusedBytes": 3872 - }, - { - "name": "http://localhost:3000/_next/static/chunks/1375-c2d9d784dcb12fa4.js", - "resourceBytes": 33238, - "encodedBytes": 11084, - "unusedBytes": 4973 - }, - { - "name": "http://localhost:3000/_next/static/chunks/5356-e576b3df6d312992.js", - "resourceBytes": 84361, - "encodedBytes": 22388, - "unusedBytes": 74192 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/bootstrap-autofill-overlay.js", - "resourceBytes": 416133, - "encodedBytes": 416133, - "unusedBytes": 236960 - }, - { - "name": "http://localhost:3000/_next/static/chunks/7971-2bc826dde7a0b124.js", - "resourceBytes": 18269, - "encodedBytes": 5386, - "unusedBytes": 13760 - }, - { - "name": "http://localhost:3000/_next/static/chunks/9543-520b5ebb78b10303.js", - "resourceBytes": 9640, - "encodedBytes": 3332, - "unusedBytes": 6308 - }, - { - "name": "http://localhost:3000/_next/static/chunks/4777-1c1a400c3ca4954d.js", - "resourceBytes": 88978, - "encodedBytes": 30474, - "unusedBytes": 43416 - }, - { - "name": "http://localhost:3000/_next/static/chunks/295-7d78c1762ca363a8.js", - "resourceBytes": 48137, - "encodedBytes": 17372, - "unusedBytes": 43371 - }, - { - "name": "http://localhost:3000/_next/static/chunks/5004-20195db75ee2b3ae.js", - "resourceBytes": 27205, - "encodedBytes": 8990, - "unusedBytes": 14005 - }, - { - "name": "http://localhost:3000/_next/static/chunks/5746-9b0c403ae999204d.js", - "resourceBytes": 23823, - "encodedBytes": 5438, - "unusedBytes": 16419 - }, - { - "name": "http://localhost:3000/_next/static/chunks/app/layout-892389fa23659b78.js", - "resourceBytes": 826, - "encodedBytes": 826, - "unusedBytes": 0 - }, - { - "name": "http://localhost:3000/_next/static/chunks/app/(authenticated)/layout-bde4d26cf5933763.js", - "resourceBytes": 9152, - "encodedBytes": 3322, - "unusedBytes": 2268 - }, - { - "name": "http://localhost:3000/_next/static/chunks/app/(authenticated)/settings/layout-fdcc5b569751ddab.js", - "resourceBytes": 6656, - "encodedBytes": 2686, - "unusedBytes": 2327 - }, - { - "name": "chrome-extension://nngceckbapebfimnlniiiahkandclblb/content/contextMenuHandler.js", - "resourceBytes": 2820, - "encodedBytes": 2820, - "unusedBytes": 1321 - }, - { - "name": "http://localhost:3000/_next/static/chunks/app/page-49d3662eec9ff969.js", - "resourceBytes": 950, - "encodedBytes": 950, - "unusedBytes": 756 - }, - { - "name": "http://localhost:3000/_next/static/chunks/1356-91eb0cc4bec31d42.js", - "resourceBytes": 13502, - "encodedBytes": 5165, - "unusedBytes": 10091 - } - ] - } - }, - "accesskeys": { - "id": "accesskeys", - "title": "`[accesskey]` values are unique", - "description": "Access keys let users quickly focus a part of the page. For proper navigation, each access key must be unique. [Learn more about access keys](https://dequeuniversity.com/rules/axe/4.10/accesskeys).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-allowed-attr": { - "id": "aria-allowed-attr", - "title": "`[aria-*]` attributes match their roles", - "description": "Each ARIA `role` supports a specific subset of `aria-*` attributes. Mismatching these invalidates the `aria-*` attributes. [Learn how to match ARIA attributes to their roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-attr).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-allowed-role": { - "id": "aria-allowed-role", - "title": "Uses ARIA roles only on compatible elements", - "description": "Many HTML elements can only be assigned certain ARIA roles. Using ARIA roles where they are not allowed can interfere with the accessibility of the web page. [Learn more about ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-allowed-role).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-command-name": { - "id": "aria-command-name", - "title": "`button`, `link`, and `menuitem` elements have accessible names", - "description": "When an element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to make command elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-command-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-conditional-attr": { - "id": "aria-conditional-attr", - "title": "ARIA attributes are used as specified for the element's role", - "description": "Some ARIA attributes are only allowed on an element under certain conditions. [Learn more about conditional ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-conditional-attr).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-deprecated-role": { - "id": "aria-deprecated-role", - "title": "Deprecated ARIA roles were not used", - "description": "Deprecated ARIA roles may not be processed correctly by assistive technology. [Learn more about deprecated ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-deprecated-role).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-dialog-name": { - "id": "aria-dialog-name", - "title": "Elements with `role=\"dialog\"` or `role=\"alertdialog\"` have accessible names.", - "description": "ARIA dialog elements without accessible names may prevent screen readers users from discerning the purpose of these elements. [Learn how to make ARIA dialog elements more accessible](https://dequeuniversity.com/rules/axe/4.10/aria-dialog-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-hidden-body": { - "id": "aria-hidden-body", - "title": "`[aria-hidden=\"true\"]` is not present on the document `
`", - "description": "Assistive technologies, like screen readers, work inconsistently when `aria-hidden=\"true\"` is set on the document ``. [Learn how `aria-hidden` affects the document body](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-body).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-hidden-focus": { - "id": "aria-hidden-focus", - "title": "`[aria-hidden=\"true\"]` elements do not contain focusable descendents", - "description": "Focusable descendents within an `[aria-hidden=\"true\"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. [Learn how `aria-hidden` affects focusable elements](https://dequeuniversity.com/rules/axe/4.10/aria-hidden-focus).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-input-field-name": { - "id": "aria-input-field-name", - "title": "ARIA input fields have accessible names", - "description": "When an input field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about input field labels](https://dequeuniversity.com/rules/axe/4.10/aria-input-field-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-meter-name": { - "id": "aria-meter-name", - "title": "ARIA `meter` elements have accessible names", - "description": "When a meter element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `meter` elements](https://dequeuniversity.com/rules/axe/4.10/aria-meter-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-progressbar-name": { - "id": "aria-progressbar-name", - "title": "ARIA `progressbar` elements have accessible names", - "description": "When a `progressbar` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to label `progressbar` elements](https://dequeuniversity.com/rules/axe/4.10/aria-progressbar-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-prohibited-attr": { - "id": "aria-prohibited-attr", - "title": "Elements use only permitted ARIA attributes", - "description": "Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. [Learn more about prohibited ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-prohibited-attr).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-required-attr": { - "id": "aria-required-attr", - "title": "`[role]`s have all required `[aria-*]` attributes", - "description": "Some ARIA roles have required attributes that describe the state of the element to screen readers. [Learn more about roles and required attributes](https://dequeuniversity.com/rules/axe/4.10/aria-required-attr).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-required-children": { - "id": "aria-required-children", - "title": "Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children.", - "description": "Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions. [Learn more about roles and required children elements](https://dequeuniversity.com/rules/axe/4.10/aria-required-children).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-required-parent": { - "id": "aria-required-parent", - "title": "`[role]`s are contained by their required parent element", - "description": "Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions. [Learn more about ARIA roles and required parent element](https://dequeuniversity.com/rules/axe/4.10/aria-required-parent).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-roles": { - "id": "aria-roles", - "title": "`[role]` values are valid", - "description": "ARIA roles must have valid values in order to perform their intended accessibility functions. [Learn more about valid ARIA roles](https://dequeuniversity.com/rules/axe/4.10/aria-roles).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "aria-text": { - "id": "aria-text", - "title": "Elements with the `role=text` attribute do not have focusable descendents.", - "description": "Adding `role=text` around a text node split by markup enables VoiceOver to treat it as one phrase, but the element's focusable descendents will not be announced. [Learn more about the `role=text` attribute](https://dequeuniversity.com/rules/axe/4.10/aria-text).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-toggle-field-name": { - "id": "aria-toggle-field-name", - "title": "ARIA toggle fields have accessible names", - "description": "When a toggle field doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about toggle fields](https://dequeuniversity.com/rules/axe/4.10/aria-toggle-field-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-tooltip-name": { - "id": "aria-tooltip-name", - "title": "ARIA `tooltip` elements have accessible names", - "description": "When a tooltip element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn how to name `tooltip` elements](https://dequeuniversity.com/rules/axe/4.10/aria-tooltip-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-treeitem-name": { - "id": "aria-treeitem-name", - "title": "ARIA `treeitem` elements have accessible names", - "description": "When a `treeitem` element doesn't have an accessible name, screen readers announce it with a generic name, making it unusable for users who rely on screen readers. [Learn more about labeling `treeitem` elements](https://dequeuniversity.com/rules/axe/4.10/aria-treeitem-name).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "aria-valid-attr-value": { - "id": "aria-valid-attr-value", - "title": "`[aria-*]` attributes do not have valid values", - "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values. [Learn more about valid values for ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr-value).", - "score": 0, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [ - { - "node": { - "type": "node", - "lhId": "1-0-A", - "path": "2,HTML,1,BODY,11,DIV,1,MAIN,0,DIV,1,DIV,0,DIV,0,A", - "selector": "div.container > div.space-y-6 > div.h-9 > a#radix-_r_4_-trigger-profile", - "boundingRect": { - "top": 201, - "bottom": 229, - "left": 132, - "right": 280, - "width": 148, - "height": 28 - }, - "snippet": "", - "nodeLabel": "Profile", - "explanation": "Fix all of the following:\n Invalid ARIA attribute value: aria-controls=\"radix-_r_4_-content-profile\"" - } - } - ], - "debugData": { - "type": "debugdata", - "impact": "critical", - "tags": ["cat.aria", "wcag2a", "wcag412", "EN-301-549", "EN-9.4.1.2"] - } - } - }, - "aria-valid-attr": { - "id": "aria-valid-attr", - "title": "`[aria-*]` attributes are valid and not misspelled", - "description": "Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names. [Learn more about valid ARIA attributes](https://dequeuniversity.com/rules/axe/4.10/aria-valid-attr).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "button-name": { - "id": "button-name", - "title": "Buttons have an accessible name", - "description": "When a button doesn't have an accessible name, screen readers announce it as \"button\", making it unusable for users who rely on screen readers. [Learn how to make buttons more accessible](https://dequeuniversity.com/rules/axe/4.10/button-name).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "bypass": { - "id": "bypass", - "title": "The page contains a heading, skip link, or landmark region", - "description": "Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently. [Learn more about bypass blocks](https://dequeuniversity.com/rules/axe/4.10/bypass).", - "score": null, - "scoreDisplayMode": "notApplicable" - }, - "color-contrast": { - "id": "color-contrast", - "title": "Background and foreground colors have a sufficient contrast ratio", - "description": "Low-contrast text is difficult or impossible for many users to read. [Learn how to provide sufficient color contrast](https://dequeuniversity.com/rules/axe/4.10/color-contrast).", - "score": 1, - "scoreDisplayMode": "binary", - "details": { - "type": "table", - "headings": [ - { - "key": "node", - "valueType": "node", - "subItemsHeading": { - "key": "relatedNode", - "valueType": "node" - }, - "label": "Failing Elements" - } - ], - "items": [] - } - }, - "definition-list": { - "id": "definition-list", - "title": "`