VKUI
VKUI copied to clipboard
[Feature][EPIC]: Поддержать возможность передачи data-testid во всех компонентах, особенно в интерактивные подкомпоненты
Описание
Часто, для e2e тестирования требуется получить доступ к компоненту, или его части для взаимодействия. Построение запросов через контент или accessibility (лэйблы, роли) не всегда возможно, когда речь идёт об интерфейсе с локализацией.
Самый лучший запасной варинат это data-* аттрибуты, а частности data-testid.
Следует пройтись по всем компонентам и их подкомпонентам и добавить возможность передачи data-testid.
По умолчанию мы позволяем передавать data-testid в компонент как есть, но это работает только с простыми блоками. Труднее всего с интерактивными элементами компонентов собранных из подкомпонентов, типа Alert. Где есть кнопка закрытия, но доступ к ней получить не легко.
Варианты решения.
-
подкомпонентный подход https://github.com/VKCOM/VKUI/issues/4699 но не все компоненты можно так разложить + требует много времени для реализации. Также этот подход может быть болезненным, когда требуется лишь передать testId, хочется избежать переписывания компонента.
-
добавление новый свойств, например
closeButtonTestId
. Более дешёвый способ, позволяющий уже сейчас получить желаемый результат. В части компонентов уже применён. -
slots
и концепия перезаписи пропсов. Потребует сильной переработки компонентов. Надеюсь, что мы к этому придём, но не в скором времени.
Related
- https://github.com/VKCOM/VKUI/issues/6175
- https://github.com/VKCOM/VKUI/issues/7688