Простой ответ: Вы не можете.
Более сложный ответ:
Переопределите функцию Element.prototype.attachShadow
, чтобы переопределить настройку closed
и установить значение open
.
Или переписать свои компоненты, чтобы не использовать closed
.Это можно сделать с помощью компонентов, проверяющих параметр запроса и использующих большую часть времени закрытых и открытых в режиме тестирования.
ОБНОВЛЕНИЕ
Закрытый компонент является попыткойпредоставить создателю компонента некоторый уровень безопасности, чтобы никто другой не мог испортить его компонент.Хотя инструменты разработчика по-прежнему могут видеть изнутри, внешний код не может видеть, если компонент каким-либо образом не выставляет shadowRoot
.
Что должен делать закрытый компонент, вместо предоставления своего shadowRoot
, чтобы обеспечитьдостаточно свойств и функций, чтобы пользователь компонента мог делать все, что ему нужно.
Подумайте об элементе <video>
.У них есть десятки свойств между ним и его родительским элементом HTMLMediaElement
и десятки функций и событий.Компонент имеет все необходимое для того, чтобы пользователи <video>
могли делать практически все.
Если мы пишем наш компонент таким образом, то проблема с близостью не должна быть проблемой.
Иногдалюди хотят тестировать каждый аспект веб-компонента, но им следует сосредоточиться только на общедоступном интерфейсе и не беспокоиться о внутреннем DOM.
Как вы тестируете элемент <input>
.Большую часть времени вы устанавливаете .value = "some value";
или добавляете прослушиватель событий на change
или input
.
Пока ваши компоненты должным образом предоставляют все, что нужно для их тестирования, тогда близость больше не должнабыть проблемой.