wrolpi/app/src/reportWebVitals.test.js
lrnselfreliance 1c8bbf1f10
deps: cachetools 7 and the current web-vitals API (#771)
cachetools 6 removed cachetools.func.mru_cache; the Zim search estimate
cache was its only user, so it becomes an lru_cache and the pin moves
to 7.2.0 with the Dependabot ignore removed.

reportWebVitals still destructured the web-vitals 2.x names (getCLS,
getFID, ...) which no longer exist, so it silently did nothing.  Use
the on* names, replace FID with INP, return the import promise, and
accept any callable rather than instanceof Function.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 11:04:16 -06:00

28 lines
891 B
JavaScript

jest.mock('web-vitals', () => ({
onCLS: jest.fn(),
onINP: jest.fn(),
onFCP: jest.fn(),
onLCP: jest.fn(),
onTTFB: jest.fn(),
}));
import reportWebVitals from './reportWebVitals';
import * as webVitals from 'web-vitals';
describe('reportWebVitals', () => {
test('subscribes the callback to every current web-vitals metric', async () => {
const callback = jest.fn();
const pending = reportWebVitals(callback);
expect(pending).toBeDefined();
await pending;
for (const name of ['onCLS', 'onINP', 'onFCP', 'onLCP', 'onTTFB']) {
expect(webVitals[name]).toHaveBeenCalledWith(callback);
}
});
test('does nothing without a function', async () => {
jest.clearAllMocks();
expect(reportWebVitals(undefined)).toBeUndefined();
expect(webVitals.onCLS).not.toHaveBeenCalled();
});
});