mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-04 01:48:59 +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.
159 lines
2.6 KiB
Plaintext
159 lines
2.6 KiB
Plaintext
assets/override
|
|
dist
|
|
build-ios
|
|
*.zip
|
|
server.PID
|
|
mattermost.keystore
|
|
tmp/
|
|
.env
|
|
env.d.ts
|
|
*.apk
|
|
*.aab
|
|
*.ipa
|
|
.tsbuildinfo.precommit
|
|
|
|
*/**/compass-icons.ttf
|
|
|
|
# OSX
|
|
#
|
|
.DS_Store
|
|
|
|
# Xcode
|
|
#
|
|
ios/build/*
|
|
*.pbxuser
|
|
!default.pbxuser
|
|
*.mode1v3
|
|
!default.mode1v3
|
|
*.mode2v3
|
|
!default.mode2v3
|
|
*.perspectivev3
|
|
!default.perspectivev3
|
|
xcuserdata
|
|
*.xccheckout
|
|
*.moved-aside
|
|
DerivedData
|
|
*.hmap
|
|
*.xcuserstate
|
|
project.xcworkspace
|
|
ios/Pods
|
|
.podinstall
|
|
ios/.xcode.env.local
|
|
|
|
# Android/IntelliJ
|
|
#
|
|
.idea
|
|
.gradle
|
|
local.properties
|
|
*.iml
|
|
*.hprof
|
|
.cxx/
|
|
*.keystore
|
|
!debug.keystore
|
|
android/app/bin
|
|
android/app/build
|
|
android/build
|
|
.settings
|
|
.project
|
|
.classpath
|
|
.kotlin
|
|
|
|
# node.js
|
|
#
|
|
node_modules/
|
|
npm-debug.log
|
|
.npminstall
|
|
yarn-error.log
|
|
.yarninstall
|
|
|
|
# Vim
|
|
[._]*.s[a-w][a-z]
|
|
[._]s[a-w][a-z]
|
|
*.un~
|
|
Session.vim
|
|
.netrwhist
|
|
*~
|
|
tags
|
|
|
|
# fastlane
|
|
#
|
|
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
|
# screenshots whenever they are needed.
|
|
# For more information about the recommended setup visit:
|
|
# https://docs.fastlane.tools/best-practices/source-control/
|
|
|
|
**/fastlane/report.xml
|
|
**/fastlane/Preview.html
|
|
**/fastlane/screenshots
|
|
**/fastlane/test_output
|
|
**/fastlane/.env
|
|
|
|
# Sentry
|
|
android/sentry.properties
|
|
ios/sentry.properties
|
|
|
|
# Testing
|
|
.nyc_output
|
|
coverage
|
|
.tmp
|
|
|
|
# E2E testing
|
|
mattermost-license.txt
|
|
*.mattermost-license
|
|
detox/artifacts
|
|
detox/detox_pixel_*
|
|
detox/e2e/support/fixtures/*.tar.gz
|
|
|
|
# Bundle artifact
|
|
*.jsbundle
|
|
.bundle
|
|
|
|
#editor-settings
|
|
.vscode
|
|
.scannerwork
|
|
launch.json
|
|
|
|
# Notice.txt generation
|
|
!build/notice-file
|
|
|
|
# Temporary files created by Metro to check the health of the file watcher
|
|
.metro-health-check*
|
|
|
|
libraries/**/**/build
|
|
libraries/**/**/.build
|
|
|
|
# Android sounds
|
|
android/app/src/main/res/raw/*
|
|
.aider*
|
|
|
|
# Intune submodule (private repository - internal builds only)
|
|
# Track submodule reference but ignore content
|
|
libraries/@mattermost/intune/*
|
|
!libraries/@mattermost/intune/.gitkeep
|
|
|
|
# Prevent committing Intune module in node_modules
|
|
node_modules/@mattermost/intune
|
|
# Claude Code
|
|
.claude/settings.local.json
|
|
.codex/
|
|
.cursor/*
|
|
!.cursor/README.md
|
|
!.cursor/cursor.md
|
|
!.cursor/Dockerfile
|
|
!.cursor/environment.json
|
|
!.cursor/scripts/
|
|
.cursor/scripts/*
|
|
!.cursor/scripts/cloud-agent-install.sh
|
|
!.cursor/scripts/cloud-agent-start.sh
|
|
!.cursor/scripts/cloud-agent-smoke.sh
|
|
.planning/
|
|
|
|
# Local Maestro test env (generated by fixtures/seed.ts)
|
|
detox/maestro/.maestro-test-env*.sh
|
|
detox/maestro/.maestro-test-env*.bak
|
|
|
|
.e2e-debug/
|
|
# Maestro takeScreenshot output when a flow is run locally without
|
|
# --test-output-dir; the name is the flow's own label, so match any of them.
|
|
detox/maestro/*.png
|