major
#29373
Buttons reagieren nicht auf programmatische DOM-Klicks (UI-Testautomatisierung mit Playwright)
Beim Steuern der TopLogic-UI mit Playwright (Testautomatisierung, MCP-Browser) reagieren zentrale Buttons nicht auf programmatisch ausgelöste Klicks. Nur "echte" positionsbasierte Maus-Events (page.mouse.click(x, y)) funktionieren zuverlässig. Das erschwert automatisierte UI-Tests erheblich und deutet zugleich auf Accessibility-Probleme hin.
Beobachtet in der Demo-Anwendung (DEV-SNAPSHOT, Chrome/Chromium):
1. Login-Dialog: "Anmelden"-Button ignoriert Klicks
Ein Playwright-Klick auf den Anmelden-Button (sowohl getByRole('link', { name: 'Anmelden' }).click() als auch Text-Locator-Klicks) löst den Login nicht aus — es passiert schlicht nichts, kein Request erreicht den Server. Der Button ist als Link (<a href="#"> mit <h4>Anmelden</h4>) gerendert.
Workaround: Felder füllen und Enter im Passwortfeld drücken.
2. Toolbar-Buttons: Klick fokussiert nur, aktiviert aber nicht
Toolbar-Buttons (z.B. Bearbeiten-Stift eines Formulars, Speichern-Haken, Undo/Redo in der Tabellen-Toolbar) reagieren nicht auf locator.click():
- Der Accessibility-Tree-Ref des Buttons löst auf ein Proxy-Element #c<nnn>-input auf; ein Klick darauf setzt nur den Fokus ([active]), führt das Kommando aber nicht aus.
- Auch Enter auf dem fokussierten Button aktiviert ihn nicht (Tastaturbedienung ebenfalls betroffen).
- Nur ein reales Koordinaten-Klick-Event (page.mouse.click(x, y) an der aus einem Screenshot abgelesenen Position) löst das Kommando aus.
Erwartung
- Buttons sollten auf Standard-DOM-Klick-Events reagieren (unabhängig davon, ob sie von echter Hardware oder programmatisch/assistiv ausgelöst werden).
- Buttons sollten per Tastatur aktivierbar sein (Enter/Space auf fokussiertem Element) und eine korrekte ARIA-Rolle (button) tragen.
Vermutliche Ursache: Die Client-Controls binden ihre Handler an mousedown/`mouseup` bzw. spezifische Event-Sequenzen statt an das click-Event, und/oder das fokussierbare Proxy-<input> ist nicht das Element, das den Handler trägt.