Это касается всех, кто пытается написать автоматизированный тест, который нажимает на компонент выбора пользовательского интерфейса материала и по какой-то причине не отображает параметры выбора.

Вот причина: компонент Select больше не прослушивает клики, а слушает событие mouseDown. Измените событие click на mouseDown, и вуаля, ваш тест теперь будет иметь доступ к параметрам рендеринга.

// bad
fireEvent.click(getByText('Select component');
// good
fireEvent.mouseDown(getByText('Select component');

Щелчок вообще ни за что не распознается, поэтому ваш пользовательский интерфейс будет выглядеть так, как будто ничего не произошло.

Так было не всегда. До версии Material UI 4.7.1, выпущенной 1 декабря 2019 г., щелчок работал должным образом. С безобидно звучащим выпустить запись в журнале изменений[Выбрать] Улучшить реакцию, реагировать на нажатие мыши — было введено это ломающее и в остальном озадачивающее изменение.

Это описание правильное, но оно замалчивает тот факт, что компонент больше не реагирует на клики. В релевантном коммите поведение компонента меняется, как и все тесты — переход от click к mouseDown.

Через несколько дней после выпуска было поднято множество вопросов, ставящих под сомнение это изменение. В one пользователь Github pheeria спрашивает: Разве это не серьезное (или даже критическое) изменение? Ожидается, что вы случайно запустите npm update для увеличения версии патча, предполагая, что будут происходить только обратно совместимые исправления ошибок. А потом есть (потенциально) куча неудачных тестов.

Этой линии размышлений было достаточно, чтобы один из создателей Material UI, Оливье Тассинари, спросил свою команду: Что вы думаете об отмене этих изменений? Мы знаем, что этого не произошло, возможно, частично из-за Ответ Тассинари получил от члена команды Себастьяна Зильберманна: «Это был бы плохой прецедент. Это была ошибка. Люди, полагающиеся на эту ошибку (особенно в тесте), не должны блокировать исправление.

Вот оно. По-видимому, компонент Select никогда не предназначался для реакции на щелчок. Определенно кое-что, что нужно иметь в виду для остальной части пакета Material UI.

Если это утешит тех, кто потерял время, изменяя свои тесты и поднимая проблемы на Github по этому поводу, Тассинари признал, что изменение не должно было появиться в выпуске патча, а Зильберманн сказал, что запись в журнале изменений должна была быть более описательной.

Боковая панель по кликам, mouseDowns и mouseUps

Когда вы щелкаете мышью по элементу и отпускаете его, запускаются три события в следующем порядке: mouseDown, mouseUp, щелчок.

Если вы нажмете на элемент, отодвинете курсор от элемента, а затем отпустите, сработает только mouseDown. Противоположное происходит для mouseUp. Нет щелчка без mouseDown и mouseUp, то есть когда вы используете мышь.

Щелчок, смоделированный программно, — это отдельная история. Это просто щелчок без прикрепленного события мыши.

Посмотрите сами на этом Codepen, который я сделал.