Lightweight replacement for the upstream La Suite Numérique drive (Django/Celery/Next.js) built as a single Deno binary. Server (Deno + Hono): - S3 file operations via AWS SigV4 (no SDK) with pre-signed URLs - WOPI host for Collabora Online (CheckFileInfo, GetFile, PutFile, locks) - Ory Kratos session auth + CSRF protection - Ory Keto permission model (OPL namespaces, not yet wired to routes) - PostgreSQL metadata with recursive folder sizes - S3 backfill API for registering files uploaded outside the UI - OpenTelemetry tracing + metrics (opt-in via OTEL_ENABLED) Frontend (React 19 + Cunningham v4 + react-aria): - File browser with GridList, keyboard nav, multi-select - Collabora editor iframe (full-screen, form POST, postMessage) - Profile menu, waffle menu, drag-drop upload, asset type badges - La Suite integration service theming (runtime CSS) Testing (549 tests): - 235 server unit tests (Deno) — 90%+ coverage - 278 UI unit tests (Vitest) — 90%+ coverage - 11 E2E tests (Playwright) - 12 integration service tests (Playwright) - 13 WOPI integration tests (Playwright + Docker Compose + Collabora) MIT licensed.
21 lines
595 B
TypeScript
21 lines
595 B
TypeScript
import { test, expect } from '@playwright/test'
|
|
|
|
test('debug: check console errors', async ({ page }) => {
|
|
const errors: string[] = []
|
|
page.on('console', msg => {
|
|
if (msg.type() === 'error') errors.push(msg.text())
|
|
})
|
|
page.on('pageerror', err => errors.push(err.message))
|
|
|
|
await page.goto('/')
|
|
await page.waitForTimeout(3000)
|
|
|
|
console.log('=== Console errors ===')
|
|
for (const e of errors) console.log(e)
|
|
console.log('=== End errors ===')
|
|
|
|
const content = await page.content()
|
|
console.log('=== Page HTML (first 2000 chars) ===')
|
|
console.log(content.slice(0, 2000))
|
|
})
|