stackblitz / tutorialkit

TutorialKit by StackBlitz - Create interactive tutorials powered by the WebContainer API
https://tutorialkit.dev
MIT License
232 stars 22 forks source link

Visually hidden terminal is present in tab order and accessibility tree #245

Open AriPerkkio opened 4 weeks ago

AriPerkkio commented 4 weeks ago

Describe the bug

When terminal is hidden by default, it's still possible to navigate to that hidden element with keyboard or assistive technologies. Even writing commands to the terminal works.

Link to a StackBlitz project which shows the error

No response

Steps to reproduce

  1. Create lesson with:
---
type: lesson
title: Default
mainCommand: ''
prepareCommands: []
terminal:
  panels: terminal
---

# Terminal test - Default
  1. Navigate to Toggle terminal with keyboard
  2. Navigate 2-3 tab stops more
  3. Focus is now on visually invisible element
  4. Write commands like npm start
  5. Vite server from template starts

Expected behavior

When terminal is not visually present, it should not be part of tab order or accessibility tree. Maybe it shouldn't even be in the DOM.

Screenshots

JS console logs the document.activeElement while I'm navigating the DOM with keyboard. When textarea is reached, I'm writing npm run start.

https://github.com/user-attachments/assets/2511a479-d49f-4413-9301-3a646676a9e2

Platform

Additional context

No response

AriPerkkio commented 3 days ago

This seems to consider all usage of react-resizable-panels. When fixing this, make sure to check codebase for // TODO: Requires #245 comments and fix those as well.