Commit Graph
21 Commits
Author SHA1 Message Date
Jasper Van ac00164fb4 ci(e2e): run core checks before cloud store flow
ci(e2e): run core checks before cloud store flow
2026-06-08 10:55:11 -04:00
saltbo 87b40bb8ef test: stabilize cloud e2e auth flow 2026-06-03 03:10:44 -04:00
saltbo f5eab8f611 test: relax cloud e2e readiness timeouts 2026-06-01 12:27:04 -04:00
saltbo 76d615833d ci: stabilize cf cloud store e2e 2026-06-01 11:57:29 -04:00
saltbo 752c3cbecb ci: use real e2e server entrypoints 2026-06-01 11:30:59 -04:00
saltbo d8feabeaee ci: use system chrome for e2e 2026-06-01 11:21:36 -04:00
saltbo 2438275ea8 feat(archive): queue streaming archive jobs 2026-05-15 09:59:08 -04:00
saltbo ab9014133f test(e2e): isolate cloud runtime ports 2026-05-10 12:19:09 -04:00
saltbo 800cda9f9c test(cloud): add tunnel-backed store e2e 2026-05-09 22:17:52 -04:00
saltbo 193b5ffd7c test(e2e): reduce CI timeout amplification 2026-05-01 22:19:30 -04:00
saltbo f0f3769e84 fix(e2e): stabilize responsive playwright coverage 2026-04-20 22:10:51 -04:00
saltboandClaude Opus 4.6 3f15a6af52 fix(e2e): eliminate all skipped tests with setup project and admin login
- Replace globalSetup function with a setup project that runs after
  webServer starts, fixing the timing issue where seed API calls
  failed because the server wasn't ready yet
- Admin tests sign in with known credentials (fallback chain for
  CI vs local dev) instead of registering new users that may not
  get admin role
- Remove storage column tests that required seeded data — the
  overflow test covers the same responsive behavior
- Remove settings form test that couldn't navigate via page.goto
  due to SPA session loss

Result: 51 tests, 51 passed, 0 skipped, 0 failed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 21:08:01 -04:00
saltboandClaude Opus 4.6 6c1d7dc062 refactor(e2e): replace test.skip with grep tags for device filtering
Use @desktop/@tablet/@mobile/@all tags in test titles and project-level
grep patterns instead of runtime test.skip(). This eliminates ~90
spurious skipped tests — each project now only loads tests tagged for
its device.

Before: 144 total (43 pass, 101 skip)
After:  55 total (43 pass, 12 skip — admin-only skips)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:44:21 -04:00
saltboandClaude Opus 4.6 015415bd18 fix(e2e): use global setup to seed admin and storage before all tests
Add e2e/global-setup.ts that registers the first user (admin) and
creates a storage backend via API before any tests run. This replaces
the per-test seedStorage calls that failed when the test user wasn't
admin. All folder-dependent tests now work reliably in CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:15:15 -04:00
saltboandClaude Opus 4.6 d3d501524b fix(ci): fix E2E server startup in CI and increase dialog timeouts
- Use --env-file=.dev.vars only locally (CI injects env vars directly)
- Increase dialog close timeouts from 5s to 10s for CF Workers runtime
- Replace fragile class-based action button selectors with row-scoped
  role queries

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 19:57:31 -04:00
saltboandClaude Opus 4.6 bd26e54b3e feat(ui): add responsive layout for desktop, tablet, and mobile
Toolbar buttons collapse to icon-only on mobile with sr-only text.
Table columns (size, modified, email, quota, etc.) progressively hide
at sm/md/lg breakpoints. Admin and trash pages get matching treatment.
Playwright config gains tablet (768×1024) and mobile (390×844) projects
with 38 E2E tests covering overflow, column visibility, and sidebar
behavior across all three viewports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 17:58:23 -04:00
saltboandClaude Opus 4.6 a8f1154959 feat(ci): run E2E tests on both Node and CF Workers runtimes
Split E2E into two parallel jobs:
- e2e-node: Node backend + Vite (--mode node), uses process.env
- e2e-cf: CF Workers via cloudflare vite plugin, uses .dev.vars

Playwright config switches webServer based on E2E_RUNTIME env var.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 12:27:48 -04:00
saltboandClaude Opus 4.6 9b1cde68fa fix(e2e): use --mode node for Vite in Playwright to skip cloudflare plugin
E2E tests use the Node backend (tsx watch server/entry-node.ts).
Without --mode node, Vite loads the cloudflare() plugin which starts
a Workers runtime that fails on missing env bindings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 12:25:38 -04:00
saltboandClaude Opus 4.6 310e4950b3 refactor: flatten monorepo to single-package CF Pages Functions structure
Replace pnpm workspace monorepo (packages/server, packages/web, packages/shared)
with a flat single-package layout following Hono's pages-stack pattern. Switch from
pnpm to npm and from Workers+Assets to CF Pages Functions deployment model.

- Move source: packages/server/src/ → server/, packages/web/src/ → src/, packages/shared/src/ → shared/
- Add functions/api/[[route]].ts as CF Pages Functions entry (replaces entry-cloudflare.ts)
- Update 22 import paths: server uses relative, web uses @shared/@server aliases
- Merge three package.json into one, switch to npm
- Update wrangler.toml: remove main/assets (Pages auto-detects functions/ dir)
- Add per-directory tsconfig.json for VS Code type resolution
- Simplify Dockerfile for flat layout
- Fix react-pdf CSS import path (dist/esm/ → dist/)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:27:38 -04:00
saltboandClaude Opus 4.6 6b937948df feat: add project infrastructure — testing, CI, linting, logging
- Vitest unit/integration tests for server (22 tests) and shared (14 tests)
- Cloudflare Workers integration tests via @cloudflare/vitest-pool-workers (9 tests)
- Playwright E2E config with auto webServer startup
- GitHub Actions CI: lint → typecheck → test (Node + CF) → E2E
- Biome for linting + formatting (replaces ESLint + Prettier)
- Unified access log middleware for all API routes
- Lefthook pre-commit hooks: lint, typecheck, test
- Coverage threshold enforced at 90% (currently 96.9%)
- Drizzle D1 migrations generated from schema
- Fix pre-existing typecheck errors across all packages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 10:11:03 -04:00
saltboandClaude Opus 4.6 c6f94dcb43 feat: scaffold v2.0 monorepo with working auth flow
pnpm workspace monorepo with three packages:
- @zpan/server: Hono + Better Auth + Drizzle, dual entry (CF Pages / Node.js)
- @zpan/web: React 19 + Vite + TanStack Router + shadcn/ui
- @zpan/shared: TypeScript types and Zod schemas

Working features:
- Email/password registration and login via Better Auth
- Session-based auth with cookie management
- Authenticated route guard (redirects to /sign-in)
- Sidebar navigation (Files, Recycle Bin, Storage Backends, Users, Settings)
- Placeholder pages for all navigation items
- Vite proxy for local dev (/api/* -> server)
- Platform abstraction for CF D1 and Node.js SQLite

All 5 Playwright E2E tests passing:
- Auth redirect, sign-up, sign-in, sidebar, page navigation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 21:34:16 -04:00