Files
LocalAI/core/http/react-ui/vite.config.js
Richard Palethorpe 8d70855ea6 test: add Go + React UI coverage gates and fill test gaps (#9989)
- Strict monotonic Go coverage gate (make test-coverage-check, 45% baseline)
  run in CI; fixes ginkgo dropping all-but-one coverprofile across multiple
  recursive roots, builds with -tags auth, and folds in the in-process
  tests/e2e suite via --coverpkg.
- React UI e2e coverage (make test-ui-coverage: vite-plugin-istanbul + nyc,
  nix-provided Chromium) plus e2e specs for 6 previously-untested pages, and a
  UI coverage gate (make test-ui-coverage-check) with a small tolerance since
  e2e line coverage jitters ~0.5pp run-to-run.
- pre-commit hook: lint + coverage on Go changes, Playwright e2e + UI coverage
  gate on react-ui changes; install with make install-hooks.
- New Go handler tests (settings, branding), hermetic base64 download test.
- fix(ui): model editor reads vram_display (snake_case), so the VRAM estimate
  renders again; covered by a regression test.

Assisted-by: Claude:claude-opus-4-7

Signed-off-by: Richard Palethorpe <io@richiejp.com>
2026-05-26 22:06:10 +02:00

55 lines
1.6 KiB
JavaScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import istanbul from 'vite-plugin-istanbul'
const backendUrl = process.env.LOCALAI_URL || 'http://localhost:8080'
// COVERAGE=true produces an instrumented build whose modules report istanbul
// counters on window.__coverage__, harvested by the Playwright coverage
// fixture (e2e/coverage-fixtures.js). Off by default so normal/dev/prod builds
// carry no instrumentation overhead.
const coverage = process.env.COVERAGE === 'true'
export default defineConfig({
plugins: [
react(),
...(coverage
? [
istanbul({
include: 'src/**/*',
extension: ['.js', '.jsx', '.ts', '.tsx'],
requireEnv: false,
// The e2e suite runs against `vite build` output, not the dev
// server, so instrumentation must be applied to the production
// build too (the plugin only instruments dev mode otherwise).
forceBuildInstrument: true,
}),
]
: []),
],
base: '/',
server: {
port: 3000,
proxy: {
'/api': backendUrl,
'/v1': backendUrl,
'/tts': backendUrl,
'/video': backendUrl,
'/backend': backendUrl,
'/models': backendUrl,
'/backends': backendUrl,
'/swagger': backendUrl,
'/static': backendUrl,
'/generated-audio': backendUrl,
'/generated-images': backendUrl,
'/generated-videos': backendUrl,
'/version': backendUrl,
'/system': backendUrl,
},
},
build: {
outDir: 'dist',
assetsDir: 'assets',
},
})