mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-06 19:00:14 +00:00
Closes manual release-test gaps for mobile (Detox + Maestro), automating new test cases and hardening flaky/CI-only failures uncovered along the way. ### New coverage automated - **MM-T416** offline/online post-retry (Android via airplane mode; iOS ultimately marked unsupported — see below) - **MM-T1194 / MM-T1193** custom ToS accept/decline survives relaunch - **MM-T3251** status change via account UI (cross-user visibility) - **MM-T510** channel-wide/keyword mention delivery — later expanded to a full 5-channel mention matrix with exact server-side counts - **MM-T3261 (_1/_2)** Report a Problem external hand-off (browser link mode, email mode) - **MM-T2940** iOS managed-config (MDM) pre-fill/autoconnect - **MM-T3271/3272** opening the app from a push notification (synthetic notification payloads, background/closed states) - Un-skipped several tests that turned out to already pass (stale skips) ### Root-caused failing tests - **Android SQLite corruption**: traced to native Kotlin DB connections not opening in WAL mode while JSI did (post #10109) — journal-mode mismatch corrupted the store on push-triggered writes. Fixed properly with a **WAL patch** (#10117) rather than the original destructive "wipe app database" workaround, which was reverted. - **Fabric crash** (`addViewAt`/reparent) on `SlideUpPanelItem` taps — root-caused to view flattening racing sheet mounts; fixed with `collapsable={false}` (went through a revert/re-revert once CI reproduced the crash without it). - **Search race**: stale in-flight search results could overwrite a cleared search box — fixed with request-id tagging. - **iOS offline detection**: multiple iterations (AAAA sampling → Cloudflare-prefix check → final decision) landed on refusing iOS offline simulation outright, since all E2E servers are Cloudflare-fronted/anycast and the address space can't be enumerated/blocked. - **MM-T3261 config patch** intermittently silently ignored by the server — root-caused to `ReportAProblemType` being environment-managed on PR Spinwicks (config PATCH returns 200 but is silently dropped); now detected and reported as a skip with proven cause, not a failure. - **MM-T416 failed-post timing**: multiple rounds of tightening the wait bound to match the client's actual retry/backoff/timeout ceiling (ended at ~150s, derived from OkHttp/retry-interceptor math, not guessed). - **MM-T5603 upload wait**: raised to match the client's real 180s upload timeout. - **Classification banner suite**: fixed to verify config state directly instead of trusting a PATCH reply that the cloud sometimes drops. ### CI/reporting infra fixes - Dedicated Maestro steps (MM-T3261, MM-T67856_4) weren't feeding into the merged JUnit report and couldn't gate pass/fail — fixed report merging/naming so they now count. - Android Maestro logcat capture added (previously iOS-only diagnostics). - Jest retry logic no longer discards passing results from a shard killed by timeout. - Sharding raised 24→28. - Removed dead Detox Pilot/Playbooks scaffolding (unused, uncovered by CI). ### Cleanup - Comment/docs pass stripping narrative session-archaeology from long explanatory comments, keeping only load-bearing facts and CI references. |
||
|---|---|---|
| .. | ||
| animated_number | ||
| announcement_banner | ||
| app_version | ||
| autocomplete | ||
| autocomplete_selector | ||
| badge | ||
| block_renderer | ||
| burn_on_read_label | ||
| button | ||
| channel_actions | ||
| channel_banner | ||
| channel_bookmarks | ||
| channel_icon | ||
| channel_item | ||
| channel_list_row | ||
| chips | ||
| common_post_options | ||
| compass_icon | ||
| connection_banner | ||
| copy_text_option | ||
| custom_status | ||
| date_time_selector | ||
| document | ||
| draft_scheduled_post | ||
| draft_scheduled_post_header | ||
| drafts_buttton | ||
| edited_indicator | ||
| emoji | ||
| emoji_category_bar | ||
| error_text | ||
| expo_image | ||
| external_image | ||
| files | ||
| files_search | ||
| floating_input | ||
| formatted_date | ||
| formatted_markdown_text | ||
| formatted_relative_time | ||
| formatted_text | ||
| formatted_time | ||
| friendly_date | ||
| global_classification_banner | ||
| illustrations | ||
| jumbo_emoji | ||
| loading | ||
| loading_error | ||
| markdown | ||
| math_view | ||
| menu_divider | ||
| navigation_button | ||
| navigation_header | ||
| navigation_header_title | ||
| no_results_with_term | ||
| option_box | ||
| option_item | ||
| other_mentions_badge | ||
| post_draft | ||
| post_list | ||
| post_priority | ||
| post_with_channel_info | ||
| pressable_opacity | ||
| profile_picture | ||
| progress_bar | ||
| progressive_image | ||
| remove_markdown | ||
| rounded_header_context | ||
| scheduled_post_indicator | ||
| search | ||
| section_notice | ||
| selected_users | ||
| server_icon | ||
| server_user_list | ||
| server_version | ||
| settings | ||
| slide_up_panel_item | ||
| status_label | ||
| syntax_highlight | ||
| system_avatar | ||
| system_header | ||
| tablet_title | ||
| tag | ||
| team_list | ||
| team_sidebar | ||
| threads_button | ||
| toast | ||
| touchable_emoji | ||
| touchable_with_feedback | ||
| tutorial_highlight | ||
| upload_item_shared | ||
| user_avatars_stack | ||
| user_item | ||
| user_list | ||
| user_list_row | ||
| user_status | ||
| keyboard_aware_post_draft_container.tsx | ||