Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
¿Cómo probar si el botón cierra la ventana emergente con éxito?

Tengo una ventana emergente simple que quiero probar si el botón en el que se hizo clic cierra la ventana emergente usando testing-library/react. La forma que se muestra en los documentos no funciona para mí por alguna razón. Puedo consolar el registro del botón, por lo que la consulta funciona pero fireEvent no activa el botón.

 test("close the popup", () => { render( <Popup> <div id="content"></div> </Popup> ); const button = screen.getByText("Got It"); fireEvent.click(button); expect(button).not.toBeInTheDocument(); }); import React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; const Popup = (props) => { const id = "popup-active" const [popupActive, setPopupActive] = useState(() => { const value = window.localStorage.getItem(id); return value !== null ? JSON.parse(value) : true; }); useEffect(() => { window.localStorage.setItem(id, popupActive); }, [popupActive]); const handleX = () => { setPopupActive(!popupActive); }; return ( <div style={{ visibility: popupActive ? "visible" : "hidden", opacity: popupActive ? "1" : "0", }} className={popupStyles.overlay} > <div className={popupStyles.popup}> <div className={popupStyles.content}>{props.children}</div> <button data-testid="button-popup" className={popupStyles.button} onClick={handleX} > Got It </button> </div> </div> ); }; export default Popup;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe usar el comparador toBeVisible .

Esto le permite verificar si un elemento está actualmente visible para el usuario. Un elemento es visible si se cumplen todas las condiciones siguientes:

  • está presente en el documento
  • no tiene su visualización de propiedad css establecida en ninguno
  • no tiene la visibilidad de su propiedad css configurada como oculta o colapsada
  • no tiene su propiedad css opacidad establecida en 0
  • su elemento principal también es visible (y así sucesivamente hasta la parte superior del árbol DOM)
  • no tiene el atributo oculto
  • si <details /> tiene el atributo abierto

P.ej

index.tsx :

 import React from 'react'; import { useEffect, useState } from 'react'; const id = 'popup-active'; const Popup = (props) => { const [popupActive, setPopupActive] = useState(() => { const value = window.localStorage.getItem(id); return value !== null ? JSON.parse(value) : true; }); useEffect(() => { window.localStorage.setItem(id, popupActive); }, [popupActive]); const handleX = () => { setPopupActive(!popupActive); }; return ( <div style={{ visibility: popupActive ? 'visible' : 'hidden', opacity: popupActive ? '1' : '0', }} > <div> <div>{props.children}</div> <button data-testid="button-popup" onClick={handleX}> Got It </button> </div> </div> ); }; export default Popup;

index.test.tsx :

 import { fireEvent, render, screen } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; import React from 'react'; import Popup from './'; describe('73407176', () => { test('should pass', () => { render( <Popup> <div id="content"></div> </Popup> ); const button = screen.getByText('Got It'); fireEvent.click(button); expect(button).not.toBeVisible(); }); });

Resultado de la prueba:

 PASS stackoverflow/73407176/index.test.tsx (11.549 s) 73407176 ✓ should pass (73 ms) -----------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -----------|---------|----------|---------|---------|------------------- All files | 100 | 83.33 | 100 | 100 | index.tsx | 100 | 83.33 | 100 | 100 | 8 -----------|---------|----------|---------|---------|------------------- Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 12.167 s

También verifique esta pregunta: ¿Cuál es la diferencia entre toBeInTheDocument() y toBeVisible()?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda