Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

bug: calling configure() without reactStrictMode resets it to undefined, silently disabling strict mode

Aperta
#1,466 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@suhailopensource ci sta già lavorando.

Dal 29/7/2026.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
javascript
Ambito
testing

Direzione di ricerca

Inizia in src/config.js da configure(), quindi esamina come getConfig() espone il valore salvato di reactStrictMode. La correzione è completata quando una chiamata successiva a configure() che omette reactStrictMode conserva l’impostazione precedente, incluso il caso di plain object descritto nella riproduzione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Bug

Calling configure() with any config object that omits reactStrictMode silently resets the previously-configured strict mode flag to undefined.

Root cause

In src/config.js:

function configure(newConfig) {
  if (typeof newConfig === 'function') {
    newConfig = newConfig(getConfig())
  }

  const {reactStrictMode, ...configForDTL} = newConfig

  configureDTL(configForDTL)

  configForRTL = {
    ...configForRTL,
    reactStrictMode,          // <-- always overwrites, even when undefined
  }
}

When newConfig does not include a reactStrictMode key, destructuring yields reactStrictMode = undefined. The spread ...configForRTL correctly carries the previously saved value, but the explicit reactStrictMode property after it overwrites it with undefined.

Reproduction

import { configure, getConfig } from '@testing-library/react'

// Enable strict mode
configure({ reactStrictMode: true })
console.log(getConfig().reactStrictMode)  // true ✓

// Later, an unrelated configure() call — e.g. from a setup file
configure({ asyncUtilTimeout: 2000 })
console.log(getConfig().reactStrictMode)  // undefined ✗  (expected: true)

The second configure() call erases the strict-mode setting. The function-form callback is affected identically:

configure(prev => ({ ...prev, asyncUtilTimeout: 2000 }))
// Works because prev spreads reactStrictMode — but only if callers remember to spread prev.
// The plain-object form has no such safety net.

Impact

Tests that rely on global strict-mode configuration (e.g. set in a setupFilesAfterFramework) silently lose that configuration if any later configure() call omits reactStrictMode. This is particularly easy to hit when test utilities or libraries call configure() with their own options.

Fix

Only write reactStrictMode into configForRTL when it is explicitly present in newConfig:

configForRTL = {
  ...configForRTL,
  ...(reactStrictMode !== undefined && {reactStrictMode}),
}

PR #1461 implements exactly this fix.

Lingua principale
JavaScript
Stelle
19.7k
Fork
1.2k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di testing-library/react-testing-library

Tutte le issue di testing-library/react-testing-library

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.