diff --git a/AGENTS.md b/AGENTS.md index 2065a60..49862ed 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -165,7 +165,7 @@ Permission dependencies in `api/dependencies/permissions.py`: **Frontend Unit Tests (Jest):** - 97% coverage - Component, hook, and utility testing -- Run: `bun test` +- Run: `bun run test` - Coverage: `bun run test:coverage` **Frontend E2E Tests (Playwright):** diff --git a/CLAUDE.md b/CLAUDE.md index 43636ef..a9be814 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -51,7 +51,7 @@ EOF **Testing Commands:** - Backend unit/integration: `IS_TEST=True uv run pytest` (always prefix with `IS_TEST=True`) - Backend E2E (requires Docker): `make test-e2e` -- Frontend unit: `bun test` +- Frontend unit: `bun run test` - Frontend E2E: `bun run test:e2e` - Use `make test` or `make test-cov` in backend for convenience diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5221099..74ff9e6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -131,7 +131,7 @@ cp .env.local.example .env.local bun run generate:api # Run tests -bun test +bun run test bun run test:e2e:ui # Start dev server diff --git a/README.md b/README.md index 309dd44..6a06208 100644 --- a/README.md +++ b/README.md @@ -390,7 +390,7 @@ open htmlcov/index.html cd frontend # Run unit tests -bun test +bun run test # Run with coverage bun run test:coverage diff --git a/frontend/README.md b/frontend/README.md index 6bce9ef..682160e 100755 --- a/frontend/README.md +++ b/frontend/README.md @@ -86,7 +86,7 @@ bun run type-check # TypeScript type checking bun run validate # Run all checks (lint + format + type-check) # Testing -bun test # Run unit tests +bun run test # Run unit tests bun run test:watch # Watch mode bun run test:coverage # Coverage report bun run test:e2e # Run E2E tests @@ -184,7 +184,7 @@ See [docs/I18N.md](./docs/I18N.md) for complete guide. ```bash # Run all tests -bun test +bun run test # Watch mode bun run test:watch diff --git a/frontend/bun.lock b/frontend/bun.lock index 9416be6..996efe4 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -78,9 +78,6 @@ }, }, }, - "overrides": { - "glob": "^10.4.1", - }, "packages": { "@adobe/css-tools": ["@adobe/css-tools@4.4.4", "", {}, "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg=="], @@ -1316,6 +1313,8 @@ "framer-motion": ["framer-motion@12.34.3", "", { "dependencies": { "motion-dom": "^12.34.3", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-v81ecyZKYO/DfpTwHivqkxSUBzvceOpoI+wLfgCgoUIKxlFKEXdg0oR9imxwXumT4SFy8vRk9xzJ5l3/Du/55Q=="], + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], @@ -1442,6 +1441,10 @@ "indent-string": ["indent-string@4.0.0", "", {}, "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="], + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], @@ -1930,6 +1933,8 @@ "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], @@ -2604,6 +2609,8 @@ "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "test-exclude/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + "use-intl/@formatjs/fast-memoize": ["@formatjs/fast-memoize@3.1.0", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg=="], "use-intl/intl-messageformat": ["intl-messageformat@11.1.2", "", { "dependencies": { "@formatjs/ecma402-abstract": "3.1.1", "@formatjs/fast-memoize": "3.1.0", "@formatjs/icu-messageformat-parser": "3.5.1", "tslib": "^2.8.1" } }, "sha512-ucSrQmZGAxfiBHfBRXW/k7UC8MaGFlEj4Ry1tKiDcmgwQm1y3EDl40u+4VNHYomxJQMJi9NEI3riDRlth96jKg=="], diff --git a/frontend/docs/ARCHITECTURE.md b/frontend/docs/ARCHITECTURE.md index e56c7ef..efa6e35 100755 --- a/frontend/docs/ARCHITECTURE.md +++ b/frontend/docs/ARCHITECTURE.md @@ -1538,7 +1538,7 @@ jobs: - name: Install dependencies run: bun install --frozen-lockfile - name: Run tests - run: bun test + run: bun run test - name: Run linter run: bun run lint - name: Type check diff --git a/frontend/docs/COMMON_PITFALLS.md b/frontend/docs/COMMON_PITFALLS.md index c68d184..b7646c1 100644 --- a/frontend/docs/COMMON_PITFALLS.md +++ b/frontend/docs/COMMON_PITFALLS.md @@ -914,7 +914,7 @@ bun run type-check bun run lint # Tests -bun test +bun run test # Build check bun run build diff --git a/frontend/docs/DEMO_MODE.md b/frontend/docs/DEMO_MODE.md index d409aff..4e501ca 100644 --- a/frontend/docs/DEMO_MODE.md +++ b/frontend/docs/DEMO_MODE.md @@ -233,7 +233,7 @@ MSW never initializes during Jest tests: - 97%+ coverage maintained ```bash -bun test # MSW will NOT interfere +bun run test # MSW will NOT interfere ``` ### E2E Tests (Playwright) diff --git a/frontend/package.json b/frontend/package.json index 465b454..0a79eb4 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -99,6 +99,5 @@ ] }, "overrides": { - "glob": "^10.4.1" } }