Root Makefile with timeout-protected test targets: - Tier 1 (<30s): make test, make test-unit, make test-frontend - Tier 2 (smart): make test-related F=file.py (via @RELATION BINDS_TO) - Tier 3 (<5min): make test-integration (Docker, --run-integration) - Coverage: make coverage (backend + frontend) - Lint: make lint (ruff + eslint) Smart test selector (scripts/find-related-tests.py): - Extracts module names from #region anchors, class/function defs - Searches 400 BINDS_TO entries across all test files - Confidence scoring: exact > case-insensitive > substring > heuristic - Fallback: filename-based fuzzy matching OpenCode commands: - /test.all — full suite + coverage - /test.unit — fast unit tests (<30s) - /test.related — smart selection by file - /test.coverage — coverage reports with thresholds Speckit workflow updated: - speckit.test.md: raw pytest → make targets with timeout safety - speckit.plan.md: quickstart uses make targets - speckit.tasks.md: verification uses make targets - speckit.implement.md: default stack uses make targets Frontend: added 'coverage' script to package.json
48 lines
1.3 KiB
JSON
Executable File
48 lines
1.3 KiB
JSON
Executable File
{
|
|
"name": "frontend",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"test:e2e:debug": "playwright test --debug",
|
|
"coverage": "vitest run --coverage",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.0.0",
|
|
"@playwright/test": "^1.60.0",
|
|
"@sveltejs/adapter-static": "^3.0.10",
|
|
"@sveltejs/kit": "^2.49.2",
|
|
"@sveltejs/vite-plugin-svelte": "^6.2.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/svelte": "^5.3.1",
|
|
"@vitest/coverage-istanbul": "^4.1.8",
|
|
"@vitest/coverage-v8": "^4.1.8",
|
|
"autoprefixer": "^10.4.0",
|
|
"eslint": "^9.0.0",
|
|
"eslint-plugin-svelte": "^3.0.0",
|
|
"globals": "^16.0.0",
|
|
"jsdom": "^28.1.0",
|
|
"postcss": "^8.4.0",
|
|
"svelte": "^5.56.4",
|
|
"tailwindcss": "^3.0.0",
|
|
"typescript-eslint": "^8.60.1",
|
|
"vite": "^7.2.4",
|
|
"vitest": "^4.1.8"
|
|
},
|
|
"dependencies": {
|
|
"@gradio/client": "^1.0.0",
|
|
"@humanspeak/svelte-markdown": "^1.6.0",
|
|
"date-fns": "^4.1.0",
|
|
"diff2html": "^3.4.56"
|
|
}
|
|
}
|