Skip to content

WeChat Mini Program Manual Regression Checklist ​

For consumers (or maintainers) to walk through in the WeChat DevTools. The build smoke test only guarantees valid WXSS and a successful compile; behavioral correctness must be regressed manually — vitest runs H5 semantics, and the event and rendering differences of the MP target cannot be covered by it.

Build: pnpm dev:mp-weixin (or pnpm build:mp-weixin); the output is in dist/dev/mp-weixin (or dist/build/mp-weixin). Open that directory in the WeChat DevTools.

Prerequisite: WeChat base library ≥ 2.25.2 (root-portal depends on it; lower versions take the in-page fixed degradation branch — if you specifically want to verify the degradation path, set the base library below 2.25.2 and run the three "overlay" items again).

Common baseline (check on every page) ​

#ItemPass criteria
G1OpenThe page renders without a white screen and without a "component not registered" error
G2Dark modeSwitch to dark mode at the entry; all component colors on the page follow (not just the background)
G3Chinese / EnglishSwitch the language at the entry; in-component copy (such as form validation messages and button text) follows the switch
G4ConsoleNo console.error throughout (in particular, the "no mount point" warning of message/loading should not appear)

Component checklist ​

Page pathComponentKey interactions (beyond the common baseline)
pages/button/buttonbuttonTap shows a press state; loading / disabled / plain / round / circle / block all render; the iconfont of icon buttons renders correctly
pages/icon/iconiconAll 37 icons render (not blank squares); size / color take effect; the loading icon spins
pages/tag/tagtagEach type has the correct color; round / hit toggle; closable triggers a close on tap and the callback fires
pages/input/inputinputv-model is two-way; placeholder styling via placeholder-style takes effect (do not check ::placeholder); textarea auto-sizes in height; word counter; clearable clears; the error state turns the border red
pages/switch/switchswitchTapping toggles with a thumb animation; loading / disabled do not respond to taps; activeText/inactiveText are displayed
pages/checkbox/checkboxcheckbox / checkbox-groupA single tap checks the box; multiple selections inside a group do not interfere with each other; disabled items do not respond; indeterminate shows the half-selected state
pages/radio/radioradio / radio-groupOptions are mutually exclusive (tapping another cancels the previous); disabled items do not respond
pages/form/formform / form-itemblur / input triggers validation; error text is displayed properly by <text>; the Promise returned by validate() resolves correctly inside the "submit" button; the required asterisk is displayed
pages/select/selectselectTapping opens the listbox (root-portal, stacked above the mask); tapping an option selects it and closes; clearable clears; the in-overlay input of filterable is usable; the absence of keyboard navigation is normal (removed on MP)
pages/tooltip/tooltiptooltipTapping the trigger opens the bubble; the position matches the placement (positioned after two-frame measurement — no flicker or misplacement should be seen on the first frame); tapping outside closes; trigger="hover" having no effect on MP should be treated as normal
pages/dialog/dialogdialogOpening shows a mask and a transition; tapping the mask closes per closeOnClick-modal; the bottom positioning honors safe-area-inset-bottom on full-screen devices; Esc and lockScroll being no-ops on MP is normal; the full-screen mode fills the viewport
pages/services/servicesmessage / loadingSee the next section

message / loading specifics ​

#ItemPass criteria
S1All message typessuccess / info / warning / danger / loading show; the icon and color of each are correct
S2Auto closeDisappears after 3 seconds by default, with a leave transition (not instantaneous)
S3Manual closeThe loading type does not auto close; it disappears only after handle.close()
S4Stacking of multipleSuccessive calls stack vertically without overlapping; once the max count is exceeded the oldest ones are pushed out
S5Full-screen maskloading.show shows a full-screen mask; the layer below is not clickable while the mask is up
S6Close callbackThe onClose callback fires when the message disappears
S7Unmounted warning(Verify specifically: remove <lh-message /> from the page, then call) The console should emit a clear console.error warning, not silent

Known MP-target "non-defects" (do not report these as bugs if you hit them) ​

  • select / dialog / tooltip have no keyboard navigation / Esc / focus-trap / lockScroll — removed at compile time; see Platform Support.
  • tooltip's trigger="hover" does not trigger on the MP target — there is no hover semantics; use click.
  • message / loading require a mount point first; this is by design, not a bug.
  • icon is font-rendered; fill / stroke have no effect in CSS — only color works.

Recording regression results ​

Add a "pass / fail (observed)" column to the right of the tables. For failing items, first attach screenshots of the DevTools Console and the WXML panel, then compare against the platform capability matrix in docs/uniapp/uniapp组件库计划.md to judge whether it is an "expected degradation" or a real defect.