QA验收 #1 » mini-final-case-results.md
QA 测试结果 - 预约纪要统一意图 - Mini最终第2轮 - 2026-10-07
前置:本地当前未提交候选、Node test;命令 node --test --test-reporter=tap tests/*.test.cjs。HEAD dda147326123846629dd16705ef51a4cf177a536;概览文案修复后执行,日志 mini-final-tests.tap。78用例77Pass/1Fail。模拟执行/静态断言不等于真实登录或成功预约。
每行操作:执行命名测试中的断言;预期:所有断言成立;实际:Pass表示断言成立,Fail见指定日志。第1轮编号不沿用,按测试名称比对;新增最终030为概览文案;旧卡片失败从060变为061,非新增业务缺陷。
| ID | 用例/操作与预期 | 实际 | 证据/缺陷 |
|---|---|---|---|
| FINAL-MINI-001 | login persists only short JWT/expiry; first phone bind uses server match,命名行为断言应成立 | Pass | mini-final-tests.tap: 1 |
| FINAL-MINI-002 | unmatched phone sends email code and submitted application becomes pending,命名行为断言应成立 | Pass | mini-final-tests.tap: 2 |
| FINAL-MINI-003 | expired session clears identity; a late profile read never restores logged-out state,命名行为断言应成立 | Pass | mini-final-tests.tap: 3 |
| FINAL-MINI-004 | HTTP errors retain semantic code, status and requestId,命名行为断言应成立 | Pass | mini-final-tests.tap: 4 |
| FINAL-MINI-005 | v2 transport uses /api/v2 and never clears a new JWT for a late old-session 401,命名行为断言应成立 | Pass | mini-final-tests.tap: 5 |
| FINAL-MINI-006 | multipart upload sends card and fields, and a late 401 cannot clear a newer session,命名行为断言应成立 | Pass | mini-final-tests.tap: 6 |
| FINAL-MINI-007 | gather and search remove the duplicate online-meeting category,命名行为断言应成立 | Pass | mini-final-tests.tap: 7 |
| FINAL-MINI-008 | content, topics and experts only use the V2 catalog API,命名行为断言应成立 | Pass | mini-final-tests.tap: 8 |
| FINAL-MINI-009 | home recommendations and industry filters only use the V2 catalog API,命名行为断言应成立 | Pass | mini-final-tests.tap: 9 |
| FINAL-MINI-010 | the mini-program has no legacy API origin or request client,命名行为断言应成立 | Pass | mini-final-tests.tap: 10 |
| FINAL-MINI-011 | content cards open the dedicated V2 detail page,命名行为断言应成立 | Pass | mini-final-tests.tap: 11 |
| FINAL-MINI-012 | catalog adapters preserve public presentation and never add private expert fields,命名行为断言应成立 | Pass | mini-final-tests.tap: 12 |
| FINAL-MINI-013 | catalog error states are retryable except for unavailable content,命名行为断言应成立 | Pass | mini-final-tests.tap: 13 |
| FINAL-MINI-014 | catalog lists isolate pagination, stop at total, preserve time ranges, and expose retries,命名行为断言应成立 | Pass | mini-final-tests.tap: 14 |
| FINAL-MINI-015 | list, detail and calendar render the same Beijing time from the real templates,命名行为断言应成立 | Pass | mini-final-tests.tap: 15 |
| FINAL-MINI-016 | UTC and offset ISO timestamps convert across midnight independently of device timezone,命名行为断言应成立 | Pass | mini-final-tests.tap: 16 |
| FINAL-MINI-017 | summary remains date-only; missing/invalid times are not shown as ISO or Invalid Date,命名行为断言应成立 | Pass | mini-final-tests.tap: 17 |
| FINAL-MINI-018 | double tap sends once; next completed business action gets a new key,命名行为断言应成立 | Pass | mini-final-tests.tap: 18 |
| FINAL-MINI-019 | timeout retains the key across page/app runner recreation,命名行为断言应成立 | Pass | mini-final-tests.tap: 19 |
| FINAL-MINI-020 | ambiguous server outcomes retain keys; definitive validation failures release them,命名行为断言应成立 | Pass | mini-final-tests.tap: 20 |
| FINAL-MINI-021 | different accounts, meetings and actions never share an in-flight request,命名行为断言应成立 | Pass | mini-final-tests.tap: 21 |
| FINAL-MINI-022 | registration shows the customer charge before submitting; pending is never called confirmed,命名行为断言应成立 | Pass | mini-final-tests.tap: 22 |
| FINAL-MINI-023 | meeting detail downloads and opens the generated minutes attachment,命名行为断言应成立 | Pass | mini-final-tests.tap: 23 |
| FINAL-MINI-024 | meeting content requires a valid session before download and opens login only once,命名行为断言应成立 | Pass | mini-final-tests.tap: 24 |
| FINAL-MINI-025 | meeting content login prompt can be cancelled without leaving or downloading,命名行为断言应成立 | Pass | mini-final-tests.tap: 25 |
| FINAL-MINI-026 | registration is not submitted when the price prompt is cancelled,命名行为断言应成立 | Pass | mini-final-tests.tap: 26 |
| FINAL-MINI-027 | timeout retries reuse the same key without optimistic registration,命名行为断言应成立 | Pass | mini-final-tests.tap: 27 |
| FINAL-MINI-028 | favorites stay independent while minutes reservation requires customer authentication,命名行为断言应成立 | Pass | mini-final-tests.tap: 28 |
| FINAL-MINI-029 | started meeting reserves minutes once with a price confirmation and authoritative reread,命名行为断言应成立 | Pass | mini-final-tests.tap: 29 |
| FINAL-MINI-030 | started meeting overview guidance follows the minutes reservation action without changing registration gates,命名行为断言应成立 | Pass | mini-final-tests.tap: 30 |
| FINAL-MINI-031 | attendance and minutes reservation coexist without changing registration or join authorization,命名行为断言应成立 | Pass | mini-final-tests.tap: 31 |
| FINAL-MINI-032 | minutes-only reservation never creates a client-side attendance projection or join link,命名行为断言应成立 | Pass | mini-final-tests.tap: 32 |
| FINAL-MINI-033 | cancelled price confirmation does not reserve minutes,命名行为断言应成立 | Pass | mini-final-tests.tap: 33 |
| FINAL-MINI-034 | published analyst minutes block reservation even when the attachment is missing; AI minutes do not,命名行为断言应成立 | Pass | mini-final-tests.tap: 34 |
| FINAL-MINI-035 | reservation read failures never become an unreserved state or consult legacy subscriptions,命名行为断言应成立 | Pass | mini-final-tests.tap: 35 |
| FINAL-MINI-036 | reservation retries reuse the business key and never optimistically mark success,命名行为断言应成立 | Pass | mini-final-tests.tap: 36 |
| FINAL-MINI-037 | reservation results from an old login session never pollute the current session,命名行为断言应成立 | Pass | mini-final-tests.tap: 37 |
| FINAL-MINI-038 | minutes can never be written through the legacy notification subscription API,命名行为断言应成立 | Pass | mini-final-tests.tap: 38 |
| FINAL-MINI-039 | missing active contract keeps reservation unconfirmed and points to staff handling,命名行为断言应成立 | Pass | mini-final-tests.tap: 39 |
| FINAL-MINI-040 | cancellation asks only for confirmation and allows registration again,命名行为断言应成立 | Pass | mini-final-tests.tap: 40 |
| FINAL-MINI-041 | unavailable registration read disables mutation, logout removes a visible link,命名行为断言应成立 | Pass | mini-final-tests.tap: 41 |
| FINAL-MINI-042 | secondary failures stay local while meeting detail remains available,命名行为断言应成立 | Pass | mini-final-tests.tap: 42 |
| FINAL-MINI-043 | completed and cancelled meetings override unbound identity guidance,命名行为断言应成立 | Pass | mini-final-tests.tap: 43 |
| FINAL-MINI-044 | legacy IDs never enter v2 mutation routes or reveal the legacy public link,命名行为断言应成立 | Pass | mini-final-tests.tap: 44 |
| FINAL-MINI-045 | phone, contact and meeting eligibility gate registration; settlement errors stay explicit,命名行为断言应成立 | Pass | mini-final-tests.tap: 45 |
| FINAL-MINI-046 | offline home renders a persistent network/service error and a retry button, never the empty state,命名行为断言应成立 | Pass | mini-final-tests.tap: 46 |
| FINAL-MINI-047 | only successful empty responses show empty state; loading and repeated retry clicks stay distinct,命名行为断言应成立 | Pass | mini-final-tests.tap: 47 |
| FINAL-MINI-048 | ten home shows cache static requests, refresh dynamic data, and preserve visible cards,命名行为断言应成立 | Pass | mini-final-tests.tap: 48 |
| FINAL-MINI-049 | home merges in-flight requests and ignores an older response resolved last,命名行为断言应成立 | Pass | mini-final-tests.tap: 49 |
| FINAL-MINI-050 | login connection failure is Chinese and releases the button for a fresh login attempt,命名行为断言应成立 | Pass | mini-final-tests.tap: 50 |
| FINAL-MINI-051 | login launched as the first page relaunches home after success,命名行为断言应成立 | Pass | mini-final-tests.tap: 51 |
| FINAL-MINI-052 | transport errors are localized without losing HTTP business errors or diagnostic codes,命名行为断言应成立 | Pass | mini-final-tests.tap: 52 |
| FINAL-MINI-053 | page owns the complete, deterministic mini-program token baseline,命名行为断言应成立 | Pass | mini-final-tests.tap: 53 |
| FINAL-MINI-054 | tab bar fixed colors stay aligned with the page tokens,命名行为断言应成立 | Pass | mini-final-tests.tap: 54 |
| FINAL-MINI-055 | native tab bar keeps all four primary destinations in a stable order,命名行为断言应成立 | Pass | mini-final-tests.tap: 55 |
| FINAL-MINI-056 | shared button preserves loading and disabled semantics with an adaptive touch target,命名行为断言应成立 | Pass | mini-final-tests.tap: 56 |
| FINAL-MINI-057 | header, search, calendar and tab controls consume the common touch target,命名行为断言应成立 | Pass | mini-final-tests.tap: 57 |
| FINAL-MINI-058 | tabs use tokenized dual-cue state and compositor-only motion,命名行为断言应成立 | Pass | mini-final-tests.tap: 58 |
| FINAL-MINI-059 | color tabs use the shared design-asset arc indicator,命名行为断言应成立 | Pass | mini-final-tests.tap: 59 |
| FINAL-MINI-060 | round-two contrast and option hit-target fixes stay enforced,命名行为断言应成立 | Pass | mini-final-tests.tap: 60 |
| FINAL-MINI-061 | cards, tags and skeleton share design tokens without hiding existing data,命名行为断言应成立 | Fail | mini-final-tests.tap: 61;旧卡片样式断言,不回退UI,协调方决定缺陷归属 |
| FINAL-MINI-062 | scoped UI files stop using the four known low-contrast literals,命名行为断言应成立 | Pass | mini-final-tests.tap: 62 |
| FINAL-MINI-063 | home hides the complete hot-topic section when there are no topics,命名行为断言应成立 | Pass | mini-final-tests.tap: 63 |
| FINAL-MINI-064 | list pages share visual spacing and semantic layer tokens without changing their state machines,命名行为断言应成立 | Pass | mini-final-tests.tap: 64 |
| FINAL-MINI-065 | talk and topic detail keep navigation and sharing titles unambiguous,命名行为断言应成立 | Pass | mini-final-tests.tap: 65 |
| FINAL-MINI-066 | meeting detail gives the login-to-registration task primary weight while preserving terminal and billing guards,命名行为断言应成立 | Pass | mini-final-tests.tap: 66 |
| FINAL-MINI-067 | my page uses one primary login CTA and retains gated routes,命名行为断言应成立 | Pass | mini-final-tests.tap: 67 |
| FINAL-MINI-068 | home banners expose a readable purpose and press affordance,命名行为断言应成立 | Pass | mini-final-tests.tap: 68 |
| FINAL-MINI-069 | secondary navigation arrows remain visible on white surfaces,命名行为断言应成立 | Pass | mini-final-tests.tap: 69 |
| FINAL-MINI-070 | identity authentication shows phone, review states and form while preserving native WeChat actions,命名行为断言应成立 | Pass | mini-final-tests.tap: 70 |
| FINAL-MINI-071 | Ardot visual mapping stays inside existing mini-program business boundaries,命名行为断言应成立 | Pass | mini-final-tests.tap: 71 |
| FINAL-MINI-072 | home uses one swiper data source and stable layout prop,命名行为断言应成立 | Pass | mini-final-tests.tap: 72 |
| FINAL-MINI-073 | meeting banners are filtered, sorted, limited, and never collide with fixed entries,命名行为断言应成立 | Pass | mini-final-tests.tap: 73 |
| FINAL-MINI-074 | conference card layout API and press feedback are wired to the root,命名行为断言应成立 | Pass | mini-final-tests.tap: 74 |
| FINAL-MINI-075 | tab and list transitions animate compositor properties only,命名行为断言应成立 | Pass | mini-final-tests.tap: 75 |
| FINAL-MINI-076 | local v2 build is explicit and development config fails closed,命名行为断言应成立 | Pass | mini-final-tests.tap: 76 |
| FINAL-MINI-077 | minutes and AI report disabled states remain independent,命名行为断言应成立 | Pass | mini-final-tests.tap: 77 |
| FINAL-MINI-078 | terminal meetings hide registration actions behind the terminal-state guard,命名行为断言应成立 | Pass | mini-final-tests.tap: 78 |