UI: - Editor tab strip above the report with per-spec scoping (sidebar tree, results, source, status counts, hero copy); cookie-persisted active spec - Status pill + workers / headed overflow menu moved from topbar into the editor bar to slim the global chrome - Summary stripe and pending-preview body so the report never lands empty - Tag bar with first-6 + "+N more" + clear; auto-run first idle test on load - Mobile drawer for the test explorer; keyboard shortcuts overlay (?) - Skipped + failed sample tests with proper icons / step rendering Tabs: - Network tab: public git.levkin.ca repos rendered as Playwright-style GET ... 200 rows with expandable JSON bodies and repo links - Trace tab: career timeline as a Gantt-style waterfall - Console tab: live run events; Source tab regenerates per active spec Theming: - Wire up high-contrast (WCAG AAA) theme: cycle dark → light → hc → dark, widen theme cookie regex to accept "hc", add HC overrides for syntax tokens and a few hardcoded "text-on-accent" sites in app.css Testing: - Add @playwright/test dev dependency + playwright.config.ts on port 3173 - tests/portfolio.spec.ts: 37 specs across 12 describe blocks - scripts/fetch-gitea-repos.mjs to refresh giteaRepos from the Gitea API Docs / housekeeping: - README rewritten to reflect editor strip, network tab, HC theme, test runner, and updated project structure - IDEAS.md trimmed to remaining roadmap; shipped items removed - .gitignore ignores stray PDFs at repo root (canonical resume in assets/) - Add assets/ilia-dobkin-resume.pdf as the canonical resume binary Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
882 B
TypeScript
35 lines
882 B
TypeScript
import { defineConfig, devices } from "@playwright/test";
|
|
|
|
const PORT = 3173;
|
|
|
|
export default defineConfig({
|
|
testDir: "./tests",
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 2 : 0,
|
|
workers: process.env.CI ? 8 : undefined,
|
|
reporter: "html",
|
|
timeout: 30_000,
|
|
|
|
use: {
|
|
baseURL: process.env.BASE_URL || `http://localhost:${PORT}`,
|
|
trace: "on-first-retry",
|
|
screenshot: "only-on-failure",
|
|
headless: true,
|
|
},
|
|
|
|
projects: [
|
|
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
|
|
// { name: "firefox", use: { ...devices["Desktop Firefox"] } },
|
|
// { name: "webkit", use: { ...devices["Desktop Safari"] } },
|
|
],
|
|
|
|
webServer: process.env.BASE_URL
|
|
? undefined
|
|
: {
|
|
command: `npx serve -l ${PORT} --no-clipboard`,
|
|
port: PORT,
|
|
reuseExistingServer: !process.env.CI,
|
|
},
|
|
});
|