INTER-2348: Close coverage gaps and drop dead wait-until helper#208
INTER-2348: Close coverage gaps and drop dead wait-until helper#208JuroUhlar wants to merge 44 commits into
Conversation
Widen the react peer range to >=18 <20, verify the SDK against React 19 via a second CI matrix job (catalog stays pinned to 18 as the default dev/test toolchain), and bump the Next.js examples to 16.2.10. Add @next/eslint-plugin-next lint rules scoped to the Next examples instead of eslint-config-next, since the latter bundles eslint-plugin-react which only supports ESLint below version 10. Re-add the two @eslint-react rule overrides for React 19-only idioms so linting stays green under both supported versions.
Next.js 16 requires Node >=20.9.0; declare it explicitly so contributors on older Node get a clear engine error instead of a confusing runtime failure.
no-html-link-for-pages (and other core-web-vitals rules) default to looking for pages/app at the repo root, so they silently no-op since both Next examples live under examples/. Set settings.next.rootDir to point at them explicitly.
Add a CI matrix that boots each example app with Playwright and asserts the
Fingerprint React SDK identifies the visitor (a visitor ID renders in the
browser). Each example is tested against the React versions it supports.
- e2e/: a single Playwright harness driven by an EXAMPLE env var, with a
per-example registry (examples.ts) and one framework-agnostic spec.
- .github/workflows/e2e.yml: matrix of {example} x {React 18, 19}. React 19
jobs flip the pnpm catalog so the SDK and every example move in lockstep
(a single @types/react, which the Next App Router type-check requires).
The preact example runs once (it uses Preact via preact/compat).
- examples: optional region env support (the CI key is EU) that leaves the
default behavior unchanged. Also fixes pre-existing build breakage: the CRA
example was missing react-app-env.d.ts, and the preact example's ESM
preact.config.js failed to load on Node 22 (and was redundant with
preact-cli's native .env / PREACT_APP_* injection) so it was removed and a
scoped process type declaration added.
INTER-2322
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014F14pjZxadmtLq8uTuzwXb
Read the Fingerprint region from the FPJS_REGION Actions variable (defaulting to eu) instead of hardcoding it, so the region is configurable alongside the public key secret. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014F14pjZxadmtLq8uTuzwXb
Drop the eu fallback so the region comes solely from the FPJS_REGION repo variable, and fail fast in the pre-flight check when it (or the API key secret) is missing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014F14pjZxadmtLq8uTuzwXb
The Fingerprint public key isn't sensitive, so read FPJS_PUBLIC_API_KEY from either a repo secret or a repo variable. Fixes the matrix failing when the key was added under the Variables tab alongside FPJS_REGION. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014F14pjZxadmtLq8uTuzwXb
preact-cli's dev server (`preact watch`) fails to resolve its entrypoint on the CI Node version and never serves, so the e2e job timed out. Build the example once and serve the static output with sirv instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014F14pjZxadmtLq8uTuzwXb
Align examples on a shared data-testid for successful identifies, flip React via pnpm overrides instead of sed, and verify the installed React major in CI.
Coverage report
Test suite run success42 tests passing in 16 suites. Report generated by 🧪jest coverage report action from fb82343 Show full coverage report
|
Co-authored-by: Dan McNulty <212590662+mcnulty-fp@users.noreply.github.com>
Co-authored-by: Dan McNulty <212590662+mcnulty-fp@users.noreply.github.com>
|
@copilot resolve the merge conflicts in this pull request |
Addressed in |
There was a problem hiding this comment.
Pull request overview
This PR strengthens test coverage around provider initialization/rebuild behavior, SSR usage, hook race/error handling, and environment detection, while removing low-value tests and deleting an unused wait-until utility.
Changes:
- Added targeted tests for
FingerprintProvider(Next.js integrationInfo, force rebuild, custom agent loader fallback, provider-levelgetOptionsmerge, SSR guard). - Expanded
useVisitorDatacoverage for mid-flight option changes, null params rejection, and error normalization/preservation. - Improved environment detection coverage (no-window path;
getEnvironmentparsing vs detection fallback) and removed dead/low-signal tests and helpers.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/utils/wait-until.ts | Removes an unused async polling helper. |
| tests/with-environment.test.tsx | Drops a low-value props echo test. |
| tests/use-visitor-data.test.tsx | Adds coverage for race/error paths and stricter error handling expectations. |
| tests/fpjs-provider.test.tsx | Adds coverage for provider init/rebuild behavior, SSR guard, Next detection, and option merging. |
| tests/detect-env.test.ts | Adds coverage for window-unavailable detection and getEnvironment JSON parsing fallbacks. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🚀 Following releases will be created using changesets from this PR:@fingerprint/react@3.1.0Minor Changes
Patch Changes
|
wait-untilhelper left over from the v4 agent migrationVerification