Skip to content

Контрольный список ручного регрессионного тестирования WeChat Mini Program ​

Для пользователей (или мейнтейнеров), чтобы проходить проверки в инструментах разработчика WeChat. Сборочный smoke-тест гарантирует лишь, что WXSS валиден и проект компилируется; корректность поведения нужно проверять вручную — vitest выполняется в H5-семантике, а отличия событий и рендеринга на стороне MP им не проверяются.

Сборка: pnpm dev:mp-weixin (или pnpm build:mp-weixin), артефакт в dist/dev/mp-weixin (или dist/build/mp-weixin) — откройте этот каталог в инструментах разработчика WeChat.

Требование: базовая библиотека WeChat ≥ 2.25.2 (зависимость root-portal; на более старых версиях работает ветка деградации с фиксированным позиционированием внутри страницы — если нужно специально проверить путь деградации, переведите базовую библиотеку на версию ниже 2.25.2 и прогоните три пункта из раздела «Компоненты-слои» ещё раз).

Общая база (проверять на каждой странице) ​

#ПунктКритерий прохождения
G1ОткрытиеСтраница рендерится без белого экрана, нет ошибки «компонент не зарегистрирован»
G2Тёмная темаПереключение тёмной темы на входе меняет цвета всех компонентов на странице (а не только фон)
G3ЯзыкПереключение языка на входе меняет тексты внутри компонентов (сообщения валидации form, тексты кнопок)
G4КонсольНа протяжении всего прохода нет console.error (особенно не должно быть предупреждения о «нет точки монтирования» от message/loading)

Список компонентов ​

Путь страницыКомпонентКлючевые взаимодействия (помимо общей базы)
pages/button/buttonbuttonКлик с состоянием отжатия; loading / disabled / plain / round / circle / block рендерятся; у кнопки с иконкой glyph iconfont отображается
pages/icon/iconiconВсе 37 иконок отображаются (не пустые квадраты); size / color работают; иконка loading вращается
pages/tag/tagtagЦвета каждого type корректны; переключение round / hit; closable срабатывает по клику и вызывает колбэк
pages/input/inputinputДвусторонний v-model; стиль плейсхолдера применяется через placeholder-style (::placeholder не проверяем); textarea с авторазмером; подсчёт символов; clearable очищает; в состоянии error граница краснеет
pages/switch/switchswitchПереключение по клику с анимацией ползунка; loading / disabled не реагируют на клик; activeText/inactiveText отображаются
pages/checkbox/checkboxcheckbox / checkbox-groupОдиночный выбор ставит галочку; множественный выбор в группе не влияет на соседние пункты; disabled не реагирует; полуотмеченное состояние indeterminate
pages/radio/radioradio / radio-groupПункты взаимоисключающие (клик по другому снимает прежний); disabled не реагирует
pages/form/formform / form-itemВалидация по blur / input; текст ошибки нормально отображается в <text>; Promise из validate() корректно разрешается в кнопке «Отправить»; обязательные поля с звёздочкой
pages/select/selectselectПо клику открывается listbox (root-portal, слой над маской); выбор пункта по клику закрывает; clearable очищает; filterable — поле ввода внутри слоя; отсутствие клавиатурной навигации — нормально (удалено в MP)
pages/tooltip/tooltiptooltipКлик по trigger открывает пузырёк; позиция соответствует placement (после измерения за два кадра, в первом кадре не должно быть мерцания или смещения); закрытие по клику вне; trigger="hover" в MP не должен срабатывать — это нормально
pages/dialog/dialogdialogОткрывается с маской и переходом; клик по маске закрывает при closeOnClick-modal; для bottom на полноэкранных устройствах работает safe-area-inset-bottom; Esc и lockScroll в MP не работают — это нормально; полноэкранный режим заливает весь экран
pages/services/servicesmessage / loadingСм. следующий раздел

message / loading: отдельные пункты ​

#ПунктКритерий прохождения
S1Сообщения разных типовПять типов success / info / warning / danger / loading появляются, иконки и цвета правильные
S2АвтозакрытиеПо умолчанию исчезает через 3 секунды с переходом (не мгновенно)
S3Закрытие вручнуюТип loading не закрывается автоматически; исчезает только после handle.close()
S4Стопка сообщенийПри нескольких вызовах подряд сообщения стопкой не перекрывают друг друга; при превышении max старые вытесняются
S5Полноэкранная маскаloading.show выводит полноэкранную маску; пока она висит, нижний слой не реагирует на клики
S6Колбэк закрытияonClose срабатывает, когда сообщение исчезает
S7Предупреждение о точке монтирования(Проверка специально: удалить <lh-message /> со страницы и вызвать) — в консоли должен быть явный console.error, без молчаливой деградации

Известные «не-дефекты» платформы MP (не заводите баг, если столкнулись) ​

  • select / dialog / tooltip без клавиатурной навигации / Esc / focus-trap / lockScroll — удаляются на этапе компиляции, см. Поддержка платформ.
  • trigger="hover" у tooltip не срабатывает на платформе MP — нет семантики hover, используйте click.
  • message / loading требуют точки монтирования — это дизайн, а не баг.
  • icon рендерится шрифтом; fill / stroke в CSS не работают, только color.

Запись результатов регрессии ​

Добавьте справа к таблицам колонку «Пройдено / Провалено (симптом)»; для провалившихся пунктов сначала приложите снимки панелей Console и WXML из инструментов разработчика, а затем сверьтесь с матрицей платформенных возможностей из docs/uniapp/uniapp组件库计划.md, чтобы определить, это «ожидаемая деградация» или настоящий дефект.