useInteractionModality detects JAWS and NVDA as mouse in Chromium

Abierto
#10,310 6 comentarios 1 reacción 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

  • #10316 de @AKnassa — cerrado sin fusionar

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
react, typescript

Línea de trabajo

Comienza en el punto de entrada useInteractionModality de @react-aria/interactions y reproduce el comportamiento informado con JAWS o NVDA en Chrome. Compara los datos del evento con los escenarios del issue en Firefox y VoiceOver, y después verifica que estas interacciones de lectores de pantalla en Chromium se notifiquen como "virtual" sin cambiar los casos que ya son correctos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

accessibility bug help wanted
Provide a general summary of the issue here

Scenario: useInteractionModality reports "mouse" when screen reader user interacts
GIVEN a user has started their screenreader (JAWS or NVDA) and a chromium browser (Chrome)
WHEN the user interacts with the page clicking a button
THEN the hook useInteractionModality reports the modality as "mouse"

🤔 Expected Behavior?

JAWS/NVDA + Chromium interactions are detected as virtual

😯 Current Behavior

JAWS/NVDA + Chromium interactions are detected as mouse

💁 Possible Solution

We created a very simple 'codepen' to log the event information for every browser and screen reader, to check if there is any difference in terms of the received information.
https://es-d-95332884020260709-019f3c39-f927-7d3c-823e-4328eff26b40.codepen.dev/

We detected that the combination JAWS/NVDA + Chrome throws a clickevent and a pointerdown event after interacting with a button by pressing Enter. In addition, we receive pointerType as mouse.

JAWS/NVDA + Firefox and VoiceOver does not trigger a pointerdown event and the pointerType comes as an empty string, so we can detect the device is assistive technology.

We need another type of check for failing combinations to evaluate them as virtual interactions.


Test scenario

1- Navigate to https://codepen.io/editor/jesusgonzaleza/pen/019f3c39-f927-7d3c-823e-4328eff26b40
2- Start your screen reader
3- Interact with the "Simulate click" button
4- Check the reported data from the event

JAWS + Chrome

Insights: a pointerdown event is triggered and pointerType is mouse
Image

JAWS + Firefox

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

Image
VoiceOver + Firefox

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

Image
VoiceOver + Chrome

Insights: it works correctly. a pointerdown event is not triggered and pointerType is an empty string

Image
🔦 Context

We detect if a user is a screen reader user in a SPA. In that case, we focus the title of the page in certain navigations so they are aware of changes.
We use useInteractionModality from @react-aria/interactions for some other component related complex accessibility logics.

🖥️ Steps to Reproduce

1- Start JAWS
2- Open Chrome
3- Interact with any button using the screen reader
4- Modality is reported as mouse

Version

3.28.1

What browsers are you seeing the problem on?

Chrome

If other, please specify.

No response

What operating system are you using?

Windows

🧢 Your Company/Team

No response

🕷 Tracking Issue

No response

Lenguaje dominante
TypeScript
Estrellas
16k
Forks
1.6k
Merge medio
2 d 19 h
PR fusionados (30 d)
41

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de adobe/react-spectrum

Todos los issues de adobe/react-spectrum

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.