docs: readme, schnellstart, bebilderte anleitung und changelog 0.1.0
QUICKSTART fuehrt von null zur laufenden Instanz und enthaelt die vollstaendige Nginx-Proxy-Manager-Konfiguration - inklusive der beiden Stellen, an denen es sonst klemmt: client_max_body_size fuer grosse Anleitungs-PDFs und X-Forwarded-For fuer das Rate-Limit. Die Anleitung ist bebildert. Die 16 Screenshots entstehen automatisiert mit `pnpm screenshots` gegen das Produktions-Image im Container, nicht gegen den Dev-Server: der brach unter Last reproduzierbar mit ChunkLoadError ab, und die Bilder zeigen so ohnehin genau das, was nach `docker compose up` zu sehen ist. Nebenbei behoben: in der Mehrfachauswahl verdeckte die Aktionsleiste die letzte Kachelreihe. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,23 +1,31 @@
|
||||
import path from 'node:path';
|
||||
import { defineConfig, devices } from '@playwright/test';
|
||||
|
||||
/**
|
||||
* Produces the screenshots for docs/ANLEITUNG.md.
|
||||
*
|
||||
* Kept apart from the smoke test on purpose: this run needs seeded example
|
||||
* data and writes files into the repository, which a test never should.
|
||||
* Runs against the production container, not the dev server: the dev server
|
||||
* compiles routes on demand, which made the capture run flaky, and the manual
|
||||
* should show exactly what a user gets after `docker compose up`.
|
||||
*
|
||||
* pnpm screenshots
|
||||
*/
|
||||
const PORT = 3220;
|
||||
const BASE_URL = `http://localhost:${PORT}`;
|
||||
|
||||
// Docker wants forward slashes, also on Windows.
|
||||
const dataDir = path.resolve(process.cwd(), 'data-shots').replace(/\\/g, '/');
|
||||
|
||||
export default defineConfig({
|
||||
testDir: './e2e',
|
||||
testMatch: 'screenshots.spec.ts',
|
||||
globalSetup: './e2e/screenshots-setup.ts',
|
||||
fullyParallel: false,
|
||||
workers: 1,
|
||||
timeout: 240_000,
|
||||
// The run registers a user, so a second attempt would start from a state
|
||||
// that no longer matches the script.
|
||||
retries: 0,
|
||||
timeout: 300_000,
|
||||
expect: { timeout: 30_000 },
|
||||
reporter: 'list',
|
||||
use: {
|
||||
baseURL: BASE_URL,
|
||||
@@ -27,18 +35,19 @@ export default defineConfig({
|
||||
...devices['Pixel 7'],
|
||||
},
|
||||
webServer: {
|
||||
command: `pnpm exec next dev -p ${PORT}`,
|
||||
command: [
|
||||
'docker run --rm --name bricktrack-shots',
|
||||
`-p ${PORT}:3000`,
|
||||
`-e BASE_URL=${BASE_URL}`,
|
||||
'-e BETTER_AUTH_SECRET=screenshot-run-secret-0123456789abcdefgh',
|
||||
'-e TZ=Europe/Berlin',
|
||||
`-v "${dataDir}:/data"`,
|
||||
'bricktrack:shots',
|
||||
].join(' '),
|
||||
url: `${BASE_URL}/api/health`,
|
||||
reuseExistingServer: false,
|
||||
timeout: 180_000,
|
||||
stdout: 'pipe',
|
||||
stderr: 'pipe',
|
||||
env: {
|
||||
NODE_ENV: 'development',
|
||||
DATA_DIR: './data-shots',
|
||||
BASE_URL,
|
||||
BETTER_AUTH_SECRET: 'screenshot-run-secret-0123456789abcdefgh',
|
||||
MAX_UPLOAD_MB: '25',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user