Stand up a client test suite on Node's built-in runner (no vitest/jsdom — the targeted modules are plain ESM with no browser/DOM deps) and cover the meaningful client logic, not presentational components: - api/client.js: the fetch wrapper — always sends the session cookie, maps a non-2xx response to a thrown ApiError (body.message → statusText fallback), resolves an empty body to null, sets Content-Type for JSON but NOT for raw FormData uploads, and builds/encodes query strings + path params. - lib/shardEvents.js: describe() across event kinds (payload vs live frame, actor name→acct→"Someone" fallback, sale pluralization, champ.update branches) and the categoryOf table-consistency check. - data/regionBuckets.js: the presence roll-up, incl. the first-match-wins ordering and the "buckets always reconcile to the total" invariant. - lib/heroLayout.js: parseLayout's version/shape guard and heroBackground's default-vs-custom branch. - lib/format.js: the date/label formatters + relative-time buckets. Wiring so these actually count: - client/package.json gains a `test` script (node --test); - pr-checks.yml runs the client tests as a PR gate; - sonarqube.yml generates a client LCOV report and sonar-project.properties feeds it alongside the server report (SF paths resolve to client/src/...). 43 client tests; coverage on the tested modules: format/regionBuckets/ heroLayout 100%, api client 86%, shardEvents 80%. Co-Authored-By: Claude <noreply@anthropic.com>
29 lines
669 B
JSON
29 lines
669 B
JSON
{
|
|
"name": "runic-gateway-client",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"test": "node --test"
|
|
},
|
|
"dependencies": {
|
|
"@tiptap/extension-image": "^2.27.2",
|
|
"@tiptap/extension-link": "^2.27.2",
|
|
"@tiptap/extension-text-align": "^2.27.2",
|
|
"@tiptap/react": "^2.27.2",
|
|
"@tiptap/starter-kit": "^2.27.2",
|
|
"diff": "^5.2.2",
|
|
"dompurify": "^3.4.11",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-router-dom": "^6.26.2"
|
|
},
|
|
"devDependencies": {
|
|
"@vitejs/plugin-react": "^4.3.2",
|
|
"vite": "^5.4.8"
|
|
}
|
|
}
|