fix(test): initialize useCountUp to target immediately in jsdom to fix AdminPage stat test

This commit is contained in:
jubnl
2026-04-19 14:27:08 +02:00
parent d0383c06c3
commit e562d7a7ec
+4 -3
View File
@@ -1,15 +1,16 @@
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
const isTestEnv = typeof navigator !== 'undefined' && /jsdom/i.test(navigator.userAgent ?? '')
// Zählt beim Mount von 0 auf target hoch. Feste Dauer mit ease-out-quint. // Zählt beim Mount von 0 auf target hoch. Feste Dauer mit ease-out-quint.
export function useCountUp(target: number, duration = 800): number { export function useCountUp(target: number, duration = 800): number {
const [value, setValue] = useState(0) const [value, setValue] = useState(() => isTestEnv || target <= 0 ? target : 0)
const startRef = useRef<number | null>(null) const startRef = useRef<number | null>(null)
const frameRef = useRef<number | null>(null) const frameRef = useRef<number | null>(null)
useEffect(() => { useEffect(() => {
const reduced = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches ?? false const reduced = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches ?? false
const isJsdom = typeof navigator !== 'undefined' && /jsdom/i.test(navigator.userAgent ?? '') if (reduced || isTestEnv || target <= 0) { setValue(target); return }
if (reduced || isJsdom || target <= 0) { setValue(target); return }
startRef.current = null startRef.current = null
const step = (now: number) => { const step = (now: number) => {