Files
buzz/desktop/playwright.perf.config.ts
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d 5a42d3706a test(desktop): scroll-smoothness perf harness — steady-state + prepend cost
An instrument, not a gate. Seeds a busy channel against the mock bridge and
measures the main-thread cost the headless correctness suite cannot feel.

Two measurements:
- Fast-wheel scroll of the bounded ~200-row window: compositor-cheap
  (~0.2ms layout + 1.3ms recalc over a 241-frame, 12k-px burst).
- Prepend re-render cost while scrolled up: ~9-13ms main-thread tick,
  attributable to the O(rendered-rows) parent walk (videoReviewContext
  rebuild + day-group boundaries + element construction), NOT layout
  and NOT leaf-row reconciliation (MessageRow memo bails correctly).
  Anchor holds at 0px drift on this path.

Scope limit: measures Chromium reconciliation, not the WKWebView
compositor feel — that remains the real-Tauri macOS pass.

Run: pnpm build && npx playwright test --config=playwright.perf.config.ts
Co-authored-by: Tyler Longwell <tlongwell@squareup.com>
Signed-off-by: Tyler Longwell <tlongwell@squareup.com>
2026-06-18 16:38:22 -04:00

24 lines
518 B
TypeScript

import { defineConfig, devices } from "@playwright/test";
export default defineConfig({
testDir: "./tests/e2e",
timeout: 60_000,
retries: 0,
workers: 1,
reporter: [["list"]],
use: { baseURL: "http://127.0.0.1:4173" },
projects: [
{
name: "perf",
testMatch: ["**/*.perf.ts"],
use: { ...devices["Desktop Chrome"] },
},
],
webServer: {
command: "python3 -m http.server 4173 -d dist",
cwd: ".",
reuseExistingServer: true,
url: "http://127.0.0.1:4173",
},
});