Files
ss-tools/frontend/playwright.config.js
busya 9228d071ef fix(translate): fix batch sizing — use real available input budget, respect job.batch_size, lazy playwright in docker
- _batch_sizer.py: compute per_batch_budget from actual available_input_budget
  (context_window - max_output_tokens) instead of sum of first N rows
- _batch_sizer.py: cap max_rows_hard_cap with job.batch_size (user config)
- _token_budget.py: add available_input_budget and max_output_tokens to return
- preview.py: validate required config fields before preview
- requirements-docker.txt: add playwright pip package (~5 MB)
- backend.entrypoint.sh: lazy playwright install chromium on first start
- build.sh: switch tar to tar.xz (-T0 -9), 5.5x smaller bundles
- README.md: add offline bundle deployment instructions
- playwright.config.js: add testMatch for *.e2e.js files
- frontend: preview tab config validation, i18n keys, translationRun store
2026-05-17 23:32:00 +03:00

53 lines
1.6 KiB
JavaScript

// #region PlaywrightConfig [C:3] [TYPE Config] [SEMANTICS e2e, playwright, test, config]
// @BRIEF Playwright E2E test configuration for ss-tools frontend.
// @RELATION DEPENDS_ON -> [EnvConfig]
// @INVARIANT All E2E tests run against a fully deployed stack (DB + backend + frontend).
// @UX_STATE ConfigLoaded -> Browser contexts are created with predefined env settings.
import { defineConfig, devices } from '@playwright/test';
const BACKEND_URL = process.env.BACKEND_URL || 'http://127.0.0.1:8101';
const FRONTEND_URL = process.env.FRONTEND_URL || 'http://127.0.0.1:8102';
const AUTH_USERNAME = process.env.E2E_USERNAME || 'admin';
const AUTH_PASSWORD = process.env.E2E_PASSWORD || 'admin123';
export default defineConfig({
testDir: './e2e/tests',
testMatch: '**/*.e2e.js',
fullyParallel: false,
retries: process.env.CI ? 1 : 0,
workers: 1, // sequential tests — settings mutate global state
reporter: [
['list'],
['html', { outputFolder: 'playwright-report' }],
],
timeout: 60_000,
expect: {
timeout: 15_000,
},
use: {
baseURL: FRONTEND_URL,
trace: 'retain-on-failure',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
},
projects: [
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
viewport: { width: 1440, height: 900 },
},
},
],
// Global setup — runs once per worker
globalSetup: './e2e/fixtures/global-setup.js',
// Expose env vars to tests
globalTeardown: undefined,
// Share backend URL via env
// Each test file can access process.env.BACKEND_URL
});
export { BACKEND_URL, FRONTEND_URL, AUTH_USERNAME, AUTH_PASSWORD };
// #endregion PlaywrightConfig