fireEvent.select does not wrap its automatic native focus in act
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, react
- Domaine
- testing
Piste de recherche
Commence dans src/fire-event.js à fireEvent.select, où l'appel natif node.focus() se trouve en dehors du eventWrapper configuré utilisé par les dispatches select/keyup environnants. Lis comment eventWrapper est configuré (voir le wrapping act introduit dans #685) et encapsule ce même appel natif de focus, sans synthétiser d'événements de focus ni les réordonner. Le fait d'être terminé signifie que le repro de l'issue passe — les attributs data-focused et data-blurred sont vidés avant le retour de fireEvent.select et il n'y a aucun avertissement de outside-act — avec la suite src/__tests__ existante au vert ; ajoute un test de régression à côté des tests de select.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
This report was prepared with autonomous AI-agent assistance; it has not received human review.
On current main with React 18.3.1, fireEvent.select focuses an unfocused input or textarea, but React state updates in its onFocus and the previous element's onBlur are not flushed before the call returns. React also reports updates outside act.
import * as React from 'react'
import {render, screen, fireEvent} from '@testing-library/react'
function Example() {
const [focused, setFocused] = React.useState(false)
const [blurred, setBlurred] = React.useState(false)
return <>
<input aria-label="previous" onBlur={() => setBlurred(true)} />
<input aria-label="selection" onFocus={() => setFocused(true)}
data-focused={focused} data-blurred={blurred} />
</>
}
render(<Example />)
screen.getByRole('textbox', {name: 'previous'}).focus()
const input = screen.getByRole('textbox', {name: 'selection'})
fireEvent.select(input)
expect(document.activeElement).toBe(input) // passes
expect(input.getAttribute('data-focused')).toBe('true') // receives false
expect(input.getAttribute('data-blurred')).toBe('true')
The existing native node.focus() call in src/fire-event.js is outside the configured eventWrapper, unlike the surrounding select and keyup dispatches. Wrapping that same native focus call fixes the focus/blur updates without synthesizing focus events or changing their order.
Verified against rebuilt original and fixed public dist/pure exports on macOS, Node 18.20.8/24.21.0, React 18.3.1 and jsdom 20.0.3. Formal regressions fail twice on original production with two passing controls. The existing worker_threads MessageChannel test shim keeps raw Jest alive after tests in this environment; an evidence-only native Node setImmediate bridge permits natural exit. No forced exit or repository configuration change is part of the fix.
Related: #685 established automatic act wrapping; #1214 proposes a broader asynchronous fireEvent API, and #1429 changes event argument forwarding. Neither wraps select's native focus call.
- Langage dominant
- JavaScript
- Étoiles
- 19.7k
- Forks
- 1.2k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de testing-library/react-testing-library
-
bug: calling configure() without reactStrictMode resets it to undefined, silently disabling strict modePeut-être à nouveau libre @suhailopensource l’a pris il y a 85 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
testing-library/react-testing-library#1466 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
testing-library/react-testing-library#1459 · 2 commentaires ·
-
perf: optimize container lookup with early exitPeut-être à nouveau libre @Ch-Abhinav-Chowdary l’a pris il y a 311 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 35/100
testing-library/react-testing-library#1430 · 1 commentaire ·
-
`fireEvent.mouseEnter` does not forward `relatedTarget` (relatedTarget is the window instead)Peut-être pris @swarnim02 l’a pris il y a 329 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
testing-library/react-testing-library#1421 · 1 commentaire ·
Toutes les issues de testing-library/react-testing-library
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
uoftblueprint/canada-basketball#67 ·
Les mainteneurs répondent en général sous 1 jour
-
打开群聊的设置同时打开侧边栏会出现侧边只出现一半Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 61/100
Fei2411/DeepSeek-Bot#456 ·
Les mainteneurs répondent en général sous 1 jour
-
área:app área:produto sem-fase tipo:decisão
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
Varanda-org/varanda#91 ·
-
0️⃣ phase/new
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
auth0/express-openid-connect#901 ·
Les mainteneurs répondent en général sous 1 jour