`fireEvent.mouseEnter` does not forward `relatedTarget` (relatedTarget is the window instead)
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 55/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, react
- Área
- frontend, testing-qa
Línea de trabajo
Reproduce el problema usando TestMouseEnter.test.tsx y compáralo con TestMouseOver.test.tsx; después, sigue el punto de entrada fireEvent.mouseEnter. Se considera completado cuando el relatedTarget especificado llega al controlador onMouseEnter y una prueba de regresión pasa sin romper el comportamiento de mouseOver.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Versions
@testing-library/reactversion:16.3.0- Testing Framework and version:
[email protected] - DOM Environment:
[email protected]
Relevant code or config:
Test component using onMouseEnter:
// TestMouseEnter.tsx
import { type MouseEvent } from 'react';
export function Test() {
const handleMouseEnter = (e: MouseEvent) => {
console.log('mouseEnter', e.relatedTarget);
};
return (
<>
<div onMouseEnter={handleMouseEnter}>
Hello
</div>
</>
);
}
Unit test for dummy component using onMouseEnter:
// TestMouseEnter.test.tsx
import { describe, expect, it, vi } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/react';
import { Test } from './test';
describe('Test', () => {
it('handles mouse enter event', () => {
const consoleSpy = vi.spyOn(console, 'log');
render(<Test />);
const element = screen.getByText('Hello');
const mockRelatedTarget = document.createElement('div');
fireEvent.mouseEnter(element, {
relatedTarget: mockRelatedTarget,
});
expect(consoleSpy).not.toHaveBeenCalledWith('mouseEnter', window);
// FAILS: Compared values have no visual difference
expect(consoleSpy).toHaveBeenCalledWith('mouseEnter', mockRelatedTarget);
// FAILS: 1st log call: ["mouseEnter", [Object]]
});
});
The same dummy component but this time using onMouseOver:
// TestMouseOver.tsx
import { type MouseEvent } from 'react';
export function Test() {
const handleMouseOver = (e: MouseEvent) => {
console.log('mouseOver', e.relatedTarget);
};
return (
<>
<div onMouseOver={handleMouseOver}>
Hello
</div>
</>
);
}
Unit test for dummy component using onMouseOver:
// TestMouseOver.test.tsx
import { describe, expect, it, vi } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/react';
import { Test } from './test';
describe('Test', () => {
it('handles mouse over event', () => {
const consoleSpy = vi.spyOn(console, 'log');
render(<Test />);
const element = screen.getByText('Hello');
const mockRelatedTarget = document.createElement('div');
fireEvent.mouseOver(element, {
relatedTarget: mockRelatedTarget,
});
expect(consoleSpy).not.toHaveBeenCalledWith('mouseOver', window);
// OK
expect(consoleSpy).toHaveBeenCalledWith('mouseOver', mockRelatedTarget);
// OK
});
});
What you did:
I am using fireEvent.mouseEnter and want to specify a specific element as relatedTarget.
What happened:
In the event handler, e.relatedTarget is a reference to window instead of the specified element.
mouseOver does not have this issue.
Problem description:
It should be possible to specify the relatedTarget for mouseEnter events as the same works for mouseOver events.
StackBlitz Link
https://stackblitz.com/edit/rtl-template-mqbjsare?file=src%2Fcomponents%2FTestMouseEnter.test.tsx
- Lenguaje dominante
- JavaScript
- Estrellas
- 19.7k
- Forks
- 1.2k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de testing-library/react-testing-library
-
fireEvent.select does not wrap its automatic native focus in actPosiblemente ocupada @sergioperezcheco la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug: calling configure() without reactStrictMode resets it to undefined, silently disabling strict modeQuizá libre de nuevo @suhailopensource la tomó hace 73 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
testing-library/react-testing-library#1466 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
testing-library/react-testing-library#1459 · 2 comentarios ·
-
perf: optimize container lookup with early exitQuizá libre de nuevo @Ch-Abhinav-Chowdary la tomó hace 299 días y no hay ningún pull request abierto. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 35/100
testing-library/react-testing-library#1430 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
testing-library/react-testing-library#1421 · 1 comentario ·
Todos los issues de testing-library/react-testing-library
Issues similares
-
bug release:v5.56
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Jason-Vaughan/TangleClaw#2270 ·
Los mantenedores suelen responder en 1 día
-
priority: medium tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
LeeAdcock/robocodeJs.com#411 ·
Los mantenedores suelen responder en 1 día
-
status: needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
mastra-ai/mastra#26635 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
chore good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pedrorchagas/blog-api#21 ·