Skip to content
Open
Show file tree
Hide file tree
Changes from 232 commits
Commits
Show all changes
235 commits
Select commit Hold shift + click to select a range
f6ebaea
Migrate auto complete tests. Some Emulator and test fixes
yasserfaraazkhan Mar 12, 2026
f1858a5
ci: run smoke E2E tests automatically on every PR push
yasserfaraazkhan Mar 12, 2026
a27ce1b
Fix iOS simulator runtime version and update detox CLAUDE.md
yasserfaraazkhan Mar 12, 2026
46589b5
Fix Android AVD device definition for CI runners
yasserfaraazkhan Mar 12, 2026
d8928d9
Cache iOS simulator and Android APK builds between CI runs
yasserfaraazkhan Mar 12, 2026
d035e4c
Fix detox device config: restore placeholders and fix iOS version fal…
yasserfaraazkhan Mar 12, 2026
695dfd2
Fix Detox iOS framework missing on CI test runners
yasserfaraazkhan Mar 12, 2026
1692767
Fix Android emulator GPU crash on CI: use swiftshader_indirect
yasserfaraazkhan Mar 12, 2026
1bb09e3
Fix Android AVD name mismatch: use __AVD_NAME__ placeholder
yasserfaraazkhan Mar 12, 2026
6660787
lint
yasserfaraazkhan Mar 12, 2026
eee6daf
Fix ESLint dot-location and retry flaky Android SDK install
yasserfaraazkhan Mar 13, 2026
60f948a
Fix E2E smoke test failures: timing, session handling, and timeout
yasserfaraazkhan Mar 13, 2026
0c9476c
Fix scroll start position in ThreadScreen.openPostOptionsFor to avoid…
yasserfaraazkhan Mar 13, 2026
dd9cab9
Fix E2E smoke test inter-file state isolation and iOS timeout root cause
yasserfaraazkhan Mar 13, 2026
abd6549
perf(ci): Cut iOS/Android E2E build times from 25-45min to 1-2min for…
yasserfaraazkhan Mar 13, 2026
c0d807c
test(ci): JS-only change to verify build cache hit (~1-2 min build time)
yasserfaraazkhan Mar 13, 2026
39351f2
fix(ci): Compute build cache key before prepare actions to prevent ha…
yasserfaraazkhan Mar 13, 2026
53468da
test(ci): Remove test comment — JS-only change to verify cache hit
yasserfaraazkhan Mar 13, 2026
9476a98
fix(ci): Change Android E2E ABI from arm64-v8a to x86_64
yasserfaraazkhan Mar 13, 2026
231d0cb
Fix Android APK cache poisoning: add x86_64 ABI to cache key
yasserfaraazkhan Mar 13, 2026
b5f2b56
Fix UITransitionView blocking ChannelScreen.openPostOptionsFor on iOS
yasserfaraazkhan Mar 13, 2026
f89aede
Address CodeRabbit review comments on CI optimization PR
yasserfaraazkhan Mar 13, 2026
10f827a
Fix no-process-env lint error in disable_ios_autofill.js
yasserfaraazkhan Mar 13, 2026
ba4cc84
Fix remaining CodeRabbit review comments (second batch)
yasserfaraazkhan Mar 13, 2026
99b6f85
Revert AVD device profile to pixel_4_xl
yasserfaraazkhan Mar 13, 2026
61999a7
Fix APK path trailing slash and add Gradle save guards
yasserfaraazkhan Mar 13, 2026
f66beee
Fix applesimutils Homebrew cache path for ARM runners
yasserfaraazkhan Mar 13, 2026
c0462bf
Fix Android longPress timeout in ChannelScreen.openPostOptionsFor
yasserfaraazkhan Mar 13, 2026
3d272c3
Fix post longPress flakiness caused by keyboard animation
yasserfaraazkhan Mar 13, 2026
b31ad92
Fix keyboard animation blocking longPress gestures app-wide
yasserfaraazkhan Mar 13, 2026
6cddc2a
Increase longPress and element-wait timeouts in Detox threads test
yasserfaraazkhan Mar 13, 2026
816c48c
Fix: use blurAndDismissKeyboard context instead of Keyboard.dismiss a…
yasserfaraazkhan Mar 13, 2026
4e710a3
Fix followingButton timing and complete exhaustive-deps for doSubmitM…
yasserfaraazkhan Mar 13, 2026
8226fda
Revert app-side keyboard changes that broke messaging smoke tests
yasserfaraazkhan Mar 13, 2026
c183205
Migrate Rainforest test cycles to Detox: account settings, channel se…
yasserfaraazkhan Mar 16, 2026
aa88286
Migrate Rainforest test cycles to Detox and Maestro: channels, ipad, …
yasserfaraazkhan Mar 25, 2026
a5e8c6b
Fix remaining lint issues and stage in-progress working tree changes …
yasserfaraazkhan Mar 25, 2026
4ed942f
Merge main into SEC-9886: adapt Maestro jobs to Matterwick workflow_d…
yasserfaraazkhan Mar 25, 2026
f11adb4
Fix duplicate testID in FloatingInputContainer and update post_priori…
yasserfaraazkhan Mar 25, 2026
d43a08e
Add iPad Detox CI job and e2e:ios-ipad-test npm script (SEC-9886)
yasserfaraazkhan Mar 25, 2026
314a8e3
Fix post_priority_picker tablet test: accessibilityViewIsModal condit…
yasserfaraazkhan Mar 25, 2026
876ccda
Fix e2e-maestro-template startup_failure: remove invalid expression d…
yasserfaraazkhan Mar 25, 2026
6053e0e
Fix startup_failure in iOS and Android E2E templates: remove invalid …
yasserfaraazkhan Mar 25, 2026
5c08391
Fix startup_failure: change parallelism input from type: number to ty…
yasserfaraazkhan Mar 25, 2026
e3779db
Merge remote-tracking branch 'origin/main' into SEC-9886
yasserfaraazkhan Mar 25, 2026
14dcc1c
fix(e2e): Use SITE_2_URL for iPad and Maestro iOS, SITE_3_URL for Mae…
yasserfaraazkhan Mar 25, 2026
c84958e
fix(e2e): Replace blocked third-party actions in Maestro template
yasserfaraazkhan Mar 25, 2026
56aaae3
feat(e2e): Add commit status checks for iPad/Maestro and add jobs to …
yasserfaraazkhan Mar 25, 2026
751981e
feat(e2e): Add Android Detox and Maestro Android to CMT workflow
yasserfaraazkhan Mar 25, 2026
3d09273
fix(e2e): Fix Maestro simulator version, auth credentials, and APK path
yasserfaraazkhan Mar 25, 2026
dfb6ac3
fix(e2e): Fix globalSetup path in Jest config
yasserfaraazkhan Mar 25, 2026
85cb07d
fix(e2e): Pass Matterwick admin credentials through to Maestro template
yasserfaraazkhan Mar 25, 2026
8322725
fix(e2e): Use Matterwick admin credentials directly in Maestro template
yasserfaraazkhan Mar 25, 2026
fb65c09
fix(e2e): Use placeholders in detoxrc and fix iOS 26.3 references
yasserfaraazkhan Mar 26, 2026
3795b8c
fix(e2e): Use same org secrets for Maestro as Detox
yasserfaraazkhan Mar 26, 2026
712f871
fix review comments
yasserfaraazkhan Mar 26, 2026
927f3fb
fix review comments
yasserfaraazkhan Mar 26, 2026
d74ea49
fix review comments
yasserfaraazkhan Mar 26, 2026
41bf60f
fix app install
yasserfaraazkhan Mar 26, 2026
69b0502
lint fix
yasserfaraazkhan Mar 26, 2026
cfe2b53
lint fix
yasserfaraazkhan Mar 26, 2026
a547388
fix test
yasserfaraazkhan Mar 26, 2026
788bd2a
Fix login issues
yasserfaraazkhan Mar 27, 2026
9b9515a
Add native build fingerprint caching for E2E CI
yasserfaraazkhan Mar 27, 2026
862a73a
cache apk and simulator
yasserfaraazkhan Mar 27, 2026
526140d
Fix sha256sum failing on directory entries in build fingerprint
yasserfaraazkhan Mar 27, 2026
3b6eab8
chore: remove unused jest-html-reporters from Detox E2E config
yasserfaraazkhan Mar 27, 2026
d430c9a
feat: add Maestro JUnit parser and unified HTML report generator
yasserfaraazkhan Mar 27, 2026
9719201
feat: add Maestro outputs/S3, expand Detox outputs, remove per-platfo…
yasserfaraazkhan Mar 27, 2026
a8a1fed
feat: add unified E2E report job with single PR comment, S3 HTML, and…
yasserfaraazkhan Mar 27, 2026
b8981e8
fix: add JSON.parse error handling in unified report generator
yasserfaraazkhan Mar 27, 2026
949e206
fix: consolidate Maestro Android emulator setup into single step
yasserfaraazkhan Mar 27, 2026
ed99a61
fix: resolve axios-cookiejar-support incompatibility with custom agents
yasserfaraazkhan Mar 27, 2026
8028479
fix: show failure count in Maestro commit status descriptions
yasserfaraazkhan Mar 27, 2026
c1efe7c
fix: skip agents test bodies when plugin is not installed
yasserfaraazkhan Mar 27, 2026
8b71369
feat: auto-request trial Enterprise license for E2E test servers
yasserfaraazkhan Mar 27, 2026
b44b395
fix: add required blank line before comment in setup.ts
yasserfaraazkhan Mar 27, 2026
3639c66
feat: auto-install agents plugin from Marketplace in E2E tests
yasserfaraazkhan Mar 27, 2026
d45f87c
feat: provision servers before E2E tests, not during test runtime
yasserfaraazkhan Mar 27, 2026
b0989bc
fix: add error handling for plugin enable calls and license check
yasserfaraazkhan Mar 27, 2026
eac32a9
fix: Maestro login timing, trial license seats, agents plugin install
yasserfaraazkhan Mar 27, 2026
a8e8310
fix: S3 bucket from secret, iPad parallelism to 2
yasserfaraazkhan Mar 27, 2026
509c3f3
chore: increase iPad parallelism to 4 shards
yasserfaraazkhan Mar 27, 2026
72aa6dc
fix: resolve Android E2E test failures from fragile tooltip handling …
yasserfaraazkhan Mar 27, 2026
2c42549
fix: add retry logic to loginAsAdmin and fix tooltip handling in conv…
yasserfaraazkhan Mar 27, 2026
4c8b48d
fix: pre-terminate iOS app with timeout to prevent simctl terminate hang
yasserfaraazkhan Mar 27, 2026
bb77b59
fix: remove delete:true from first app launch to avoid simctl termina…
yasserfaraazkhan Mar 27, 2026
fddfbd3
fix: use hardcoded S3 bucket name instead of non-existent secret
yasserfaraazkhan Mar 27, 2026
f15def8
fix: resolve iOS 26 accessibility tree hiding FloatingTextInput testI…
yasserfaraazkhan Mar 27, 2026
4366326
fix: remove E2E build caching, fix Maestro S3 report upload, add serv…
yasserfaraazkhan Mar 27, 2026
0875b1e
fix: handle HTTP redirects in Maestro seed script
yasserfaraazkhan Mar 27, 2026
fb91fbf
fix: make accessible={false} iOS-only, fix Maestro report, add E2E ca…
yasserfaraazkhan Mar 28, 2026
2cf99d8
fix: prevent E2E label removal on workflow cancellation
yasserfaraazkhan Mar 28, 2026
52f2d8f
chore: remove Maestro from SEC-9886; keep iPad/Detox only (SEC-9886)
yasserfaraazkhan Mar 28, 2026
9dda736
fix(ci): remove Maestro jobs from e2e-detox-pr.yml (SEC-9886)
yasserfaraazkhan Mar 28, 2026
01836e6
fix(ci): prevent command injection in e2e-ios-template.yml
yasserfaraazkhan Mar 28, 2026
7de73cb
fix(e2e): correct iPad simulator OS version to iOS 26.2
yasserfaraazkhan Mar 28, 2026
36a8582
fix: restart SpringBoard after pkill-9 to prevent Detox simctl termin…
yasserfaraazkhan Mar 28, 2026
1d6c547
fix: apply forceTerminateIosApp to non-first-launch path
yasserfaraazkhan Mar 28, 2026
eb19bec
fix: install app via simctl before tests, guard SpringBoard restart
yasserfaraazkhan Mar 28, 2026
4278391
fix: update stale delete:true comment in beforeAll
yasserfaraazkhan Mar 28, 2026
d17e3e9
fix: prompt user to install iOS app locally if missing from simulator
yasserfaraazkhan Mar 28, 2026
c77e103
fix: remove forceTerminateIosApp from first-launch path
yasserfaraazkhan Mar 28, 2026
5760264
fix: drop newInstance on first launch to avoid Detox simctl terminate…
yasserfaraazkhan Mar 28, 2026
3c9c581
fix: iOS simulator install crash (ls -d), Android E2E flakes, and PR …
yasserfaraazkhan Mar 28, 2026
75bff51
fix: iOS simulator install crash (ls -d), Android E2E flakes, and PR …
yasserfaraazkhan Mar 28, 2026
9534312
fix: update stale newInstance comment in subsequent-launch path
yasserfaraazkhan Mar 28, 2026
ca7529a
fix: replace pkill with simctl-spawn launchd kill; protect pre-warm f…
yasserfaraazkhan Mar 28, 2026
c9aa4b0
fix: add simulator reset and retry logic for iOS e2e test failures
yasserfaraazkhan Mar 28, 2026
5ad0e8c
Revert "fix: add simulator reset and retry logic for iOS e2e test fai…
yasserfaraazkhan Mar 28, 2026
eea149e
fix: restore iOS-only toBeVisible guard to prevent Android timeout re…
yasserfaraazkhan Mar 28, 2026
cc98256
fix: strip setup.ts to minimal lifecycle, fix Android bridge-idle syn…
yasserfaraazkhan Mar 28, 2026
d6473b3
fix: restore file-level eslint-disable for no-await-in-loop in setup.ts
yasserfaraazkhan Mar 28, 2026
42b190c
revert: remove AppDelegate.mm @try/@catch — not needed in production
yasserfaraazkhan Mar 28, 2026
b087cec
fix: switch Android E2E from API 35 to API 34 for local/CI parity
yasserfaraazkhan Mar 29, 2026
000d619
fix review comments
yasserfaraazkhan Mar 29, 2026
50ab6b1
fix: harden E2E session handling — one-time server setup, 401 auto-re…
yasserfaraazkhan Mar 29, 2026
b0ea5aa
fix: pin Detox to CI simulator, Android timeouts, graceful skip for m…
yasserfaraazkhan Mar 29, 2026
55ca6a7
fix: replace disabled ScrollView with View in post message to fix And…
yasserfaraazkhan Mar 29, 2026
b98c1d0
fix: remove duplicate plugin disable from setup.ts — already runs onc…
yasserfaraazkhan Mar 29, 2026
62ac30e
fix: lower Detox visibility threshold from 75% to 50% for Android edg…
yasserfaraazkhan Mar 29, 2026
85a02d8
fix: use Boolean() instead of !! for no-implicit-coercion lint rule
yasserfaraazkhan Mar 29, 2026
bd8a3c0
fix: increase iOS server.screen timeout from 30s to 60s — matches And…
yasserfaraazkhan Mar 29, 2026
8b0132c
fix: iOS not-hittable waits, Android longPress 5 retries, emoji sync …
yasserfaraazkhan Mar 29, 2026
a61627d
fix: dismiss keyboard before Android longPress to prevent gesture con…
yasserfaraazkhan Mar 29, 2026
eaea632
fix: revert pressBack keyboard dismiss, patch Detox 50% visibility, b…
yasserfaraazkhan Mar 29, 2026
ef08d4f
fix: revert keyboard dismiss attempts — just wait, let retry handle it
yasserfaraazkhan Mar 29, 2026
a6007a3
fix: add patch-package to detox package for visibility threshold patch
yasserfaraazkhan Mar 29, 2026
d7c43f8
fix: Android longPress regression — conditional touch handlers + on-d…
yasserfaraazkhan Mar 29, 2026
a99e752
fix: auto-remove E2E label even when pr_number not passed by Matterwick
yasserfaraazkhan Mar 29, 2026
499bf27
fix: update detox package-lock.json for patch-package dependency
yasserfaraazkhan Mar 29, 2026
5333106
fix: remove stale Gradle wrapper hunk from Detox patch
yasserfaraazkhan Mar 29, 2026
c1ff0f6
fix: launchApp retry for iPad/iOS flakes, fix 3 flaky new tests, UI s…
yasserfaraazkhan Mar 29, 2026
f2c8f98
fix: replace delete:true with data container clearing on iOS, add rec…
yasserfaraazkhan Mar 29, 2026
8910e2e
chore: remove FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 to silence deprecati…
yasserfaraazkhan Mar 29, 2026
3d94442
fix(e2e): replace broken `timeout` with PID kill, add per-attempt lau…
yasserfaraazkhan Mar 29, 2026
331551e
fix(e2e): remove debug instrumentation, harden iOS "Save Password" di…
yasserfaraazkhan Mar 29, 2026
774a3cc
fix(e2e): handle "Logout not complete" dialog on iOS and Android
yasserfaraazkhan Mar 29, 2026
2b1f992
fix(e2e): harden tests for iOS 26.2 timing, fix testIDs, and improve …
yasserfaraazkhan Mar 29, 2026
4f58547
fix(e2e): harden CI infrastructure and address CodeRabbit review issues
yasserfaraazkhan Mar 29, 2026
2ea7d5c
fix(e2e): fix day-of-week flakes, skip product bugs, harden cross-pla…
yasserfaraazkhan Mar 30, 2026
a12bfab
fix(e2e): harden teardown chain, SVG overlay, system dialogs, and pos…
yasserfaraazkhan Mar 30, 2026
ccc464d
fix(e2e): upgrade Detox to 20.50.1, fix swipe→tap races, kill iOS cre…
yasserfaraazkhan Mar 30, 2026
f670ed9
fix(e2e): address CodeRabbit review findings
yasserfaraazkhan Mar 30, 2026
4020dc2
fix(e2e): remove detox patch file to unblock Android CI build
yasserfaraazkhan Mar 30, 2026
1e9820c
fix(e2e): restore VisibleMatcher 50% threshold via postinstall script
yasserfaraazkhan Mar 30, 2026
76e22be
fix(e2e): increase PER_ATTEMPT_MS to 90s to fix hung-shard launch tim…
yasserfaraazkhan Mar 30, 2026
25dd040
fix(e2e): use toBeVisible(50) for code block assertions on iOS
yasserfaraazkhan Mar 30, 2026
9060b3b
fix(e2e): remove Save Password dialog defensive code; fix detoxrc iOS…
yasserfaraazkhan Mar 31, 2026
70f4b05
fix(e2e): remove os version from detoxrc simulator device config
yasserfaraazkhan Mar 31, 2026
aff1521
fix(e2e): fix iOS element-not-hittable failures in archive/browse/con…
yasserfaraazkhan Mar 31, 2026
a2fc671
fix(e2e): fix Android 30s element-visibility-timeout cascade failures
yasserfaraazkhan Mar 31, 2026
051b87a
fix(e2e): fix Android Server List MM-T4691 suite — bypass bridge-sync…
yasserfaraazkhan Mar 31, 2026
5ef2224
fix(e2e): fix iOS element-not-found failures in plus.button and categ…
yasserfaraazkhan Mar 31, 2026
62865b5
fix(e2e): fix iOS 30s timeout cascade + Android visibility + longpres…
yasserfaraazkhan Mar 31, 2026
35ec21d
fix(e2e): increase Android empty-state toExist timeout to HALF_MIN
yasserfaraazkhan Mar 31, 2026
a3fa0aa
fix(e2e): use toExist() for markdown code block visibility check
yasserfaraazkhan Mar 31, 2026
86e5318
fix(e2e): fix iOS priorities 5-8 — 10s timeouts, not-visible, multipl…
yasserfaraazkhan Mar 31, 2026
f1b7e2d
fix(e2e): reduce MAX_LAUNCH_ATTEMPTS to 2 to fit within 240s beforeAll
yasserfaraazkhan Mar 31, 2026
9b3e279
fix(e2e): fix hardcoded 5s timeout in notification_settings Android b…
yasserfaraazkhan Mar 31, 2026
f8c0f0e
fix(e2e): increase Android notification_settings back button wait to …
yasserfaraazkhan Mar 31, 2026
73e5ec3
fix(e2e): use waitForElementToExist for Android bridge-busy empty-sta…
yasserfaraazkhan Mar 31, 2026
519a94d
fix(e2e): fix curly-quote mismatch in browse_channels + skip Android …
yasserfaraazkhan Mar 31, 2026
a2234ae
fix(e2e): fix 4 regressions identified in CI run 23786133564
yasserfaraazkhan Mar 31, 2026
9eebb54
fix(e2e): skip 18 persistently flaky/unconfigured tests for CI pass rate
yasserfaraazkhan Mar 31, 2026
9771e63
fix(e2e): enable ExperimentalEnableAutomaticReplies globally in CI setup
yasserfaraazkhan Mar 31, 2026
1b97668
style(e2e): fix blank line in global_setup.js config patch
yasserfaraazkhan Mar 31, 2026
62fc00c
fix(e2e): address CodeRabbit review findings from PR #9587
yasserfaraazkhan Mar 31, 2026
fdb8931
fix(e2e): update Android AVD to detox_pixel_8_api_35 for local testing
yasserfaraazkhan Mar 31, 2026
2e56d13
fix(e2e): fix Android API 35 CI alignment and reduce iOS launch timeo…
yasserfaraazkhan Apr 1, 2026
a499c23
fix(e2e): fix lines-around-comment lint errors in permalink and setup
yasserfaraazkhan Apr 1, 2026
c59f0a5
fix(e2e): revert PER_ATTEMPT_MS to 90s — 55s caused iOS launch timeouts
yasserfaraazkhan Apr 1, 2026
996ed3a
ci(e2e): upgrade iOS E2E runner from macos-15 to macos-26
yasserfaraazkhan Apr 1, 2026
d878e1a
fix(e2e): fix Android API 35 emulator timing and archived channel sea…
yasserfaraazkhan Apr 1, 2026
1de38dd
fix(e2e): restore ScrollView in message.tsx and fix show-more button …
yasserfaraazkhan Apr 1, 2026
c845bf9
fix(e2e): harden Android app launch in beforeAll to prevent logout ca…
yasserfaraazkhan Apr 1, 2026
d1d64ce
fix(e2e): MM-T3197 correct post-archive navigation with ExperimentalV…
yasserfaraazkhan Apr 1, 2026
5b7173c
fix(e2e): fix Android pinned messages BridgeIdlingResource and thread…
yasserfaraazkhan Apr 1, 2026
52202e2
test: update createThreadFromNewPost unit test for is_following=true …
yasserfaraazkhan Apr 2, 2026
950fbac
fix(e2e): increase launch timeout for iPad simulator in setup.ts
yasserfaraazkhan Apr 2, 2026
4f3d6c6
fix(e2e): fix Android CI failures across 5 failure categories
yasserfaraazkhan Apr 2, 2026
0d08de9
fix(ci): remove simctl privacy deny commands that corrupt iOS 26.x TC…
yasserfaraazkhan Apr 2, 2026
387d94a
fix(e2e): fix 6 remaining Android CI failure categories
yasserfaraazkhan Apr 2, 2026
9d0cc60
fix(e2e): fix Android DM screen open and tutorial dismissal
yasserfaraazkhan Apr 2, 2026
70bc75a
fix(e2e): use openPostOptionsFor for longPress in smoke messaging MM-…
yasserfaraazkhan Apr 2, 2026
e06ba64
fix(e2e): use 10.0.2.2 fallback for server 2/3 URLs on Android
yasserfaraazkhan Apr 2, 2026
50d64a3
fix(e2e): fix Android favorite/mute channel test by reloading before …
yasserfaraazkhan Apr 2, 2026
ff69b46
chore(e2e): remove Maestro workflow template from PR
yasserfaraazkhan Apr 2, 2026
2f6a61b
fix: address code review findings in app-side changes
yasserfaraazkhan Apr 3, 2026
1d48ac6
fix(e2e): explicitly disable Detox sync after launchApp to unblock iO…
yasserfaraazkhan Apr 3, 2026
a51ce19
fix(e2e): re-enable Detox sync after launch detection to not break te…
yasserfaraazkhan Apr 3, 2026
5987b8c
fix(test): remove impossible-input test for processReceivedThreads
yasserfaraazkhan Apr 3, 2026
f763e4e
fix(lint): remove extra blank line in thread.test.ts
yasserfaraazkhan Apr 3, 2026
b598ca1
fix(e2e): re-enable MM-T4729_5 and MM-T5000_2 E2E tests
yasserfaraazkhan Apr 3, 2026
3041b06
fix(e2e): remove device.disableSynchronization() from iOS launch loop
yasserfaraazkhan Apr 3, 2026
16fb375
fix(e2e): fix 5 Android test failures from CI run 23929770244
yasserfaraazkhan Apr 3, 2026
f078d6d
fix(ios): fix deadlocks and GCD lifecycle in RNUtilsWrapper
yasserfaraazkhan Apr 3, 2026
67e8574
Revert "fix(ios): fix deadlocks and GCD lifecycle in RNUtilsWrapper"
yasserfaraazkhan Apr 3, 2026
2a1896f
fix(ci): disable Intune in E2E iOS build to test main queue idle
yasserfaraazkhan Apr 3, 2026
5714513
fix(ci): prevent command injection in E2E workflow summary steps
yasserfaraazkhan Apr 3, 2026
cbe8e07
fix(e2e): replace polling loop with waitFor().withTimeout() for iOS 26.x
yasserfaraazkhan Apr 3, 2026
0fe69e4
fix(e2e): restore applesimutils --restartSB to unblock iOS 26.x waitF…
yasserfaraazkhan Apr 3, 2026
5bdbe53
fix(e2e): observe delete_at in channel list to fix archive/unarchive …
yasserfaraazkhan Apr 3, 2026
6a1aec6
fix(e2e): use polling for ChannelScreen and ManageChannelMembers visi…
yasserfaraazkhan Apr 3, 2026
9d0447b
fix(e2e): rewrite unarchive_channel tests to set ExperimentalViewArch…
yasserfaraazkhan Apr 3, 2026
600c9b2
fix(e2e): fix iOS and Android Detox test failures across multiple tes…
yasserfaraazkhan Apr 4, 2026
f376fe8
fix(e2e): fix thread follow/unfollow test failures on iOS and Android
yasserfaraazkhan Apr 4, 2026
23532f5
fix(e2e): fix pin/unpin message test failures on iOS and Android
yasserfaraazkhan Apr 4, 2026
fe2f08c
fix(e2e): fix iOS thread reply test failure — add missing waitFor import
yasserfaraazkhan Apr 4, 2026
18e0718
fix(e2e): clear iOS App Group container between tests and dismiss ser…
yasserfaraazkhan Apr 4, 2026
bb89070
fix(e2e): fix permalink, channel link, and channel mention test failures
yasserfaraazkhan Apr 4, 2026
c1adcef
fix(e2e): fix Android longPress failures by dismissing keyboard via s…
yasserfaraazkhan Apr 4, 2026
727d680
fix: await switchToChannelById in browse channels to prevent navigati…
yasserfaraazkhan Apr 4, 2026
938c60c
fix(e2e): enable ScheduledPosts config for scheduled message tests
yasserfaraazkhan Apr 4, 2026
583c6b2
fix(e2e): update archive_channel teardown for await switchToChannelBy…
yasserfaraazkhan Apr 4, 2026
276cee3
fix(e2e): fix archive channel iOS visibility, server upgrade dialog, …
yasserfaraazkhan Apr 4, 2026
4338826
fix(e2e): fix message edit visibility and extend archive channel sync…
yasserfaraazkhan Apr 4, 2026
4837158
fix(e2e): fix scheduled messages by disabling Detox sync during sched…
yasserfaraazkhan Apr 4, 2026
cc1cdb0
fix(e2e): prevent iOS cascading failures after 240s Jest timeout
yasserfaraazkhan Apr 4, 2026
1368133
fix(e2e): disable Detox sync during thread schedule picker longPress
yasserfaraazkhan Apr 4, 2026
b1953ad
fix(e2e): fix at-mention, pin visibility, and server login flaky fail…
yasserfaraazkhan Apr 4, 2026
becdad0
fix(e2e): fix cross-team search config — use ServiceSettings not Sear…
yasserfaraazkhan Apr 4, 2026
7207f0f
fix(e2e): fix mute/unmute toast timing and convert-to-private scroll …
yasserfaraazkhan Apr 4, 2026
2abdabc
fix(e2e): fix Android flaky tests — tutorial ordering, alert timeout,…
yasserfaraazkhan Apr 4, 2026
4357d3a
chore: linter whitespace fixes
yasserfaraazkhan Apr 4, 2026
e48aa96
add logger if getching post fails
yasserfaraazkhan Apr 5, 2026
a9b7095
Merge remote-tracking branch 'origin/main' into SEC-9886
yasserfaraazkhan Apr 6, 2026
1be12cb
feat(e2e): add Maestro E2E testing framework
yasserfaraazkhan Apr 6, 2026
2739a92
chore: add .pi/ directory to .gitignore
yasserfaraazkhan Apr 6, 2026
d672947
Merge remote-tracking branch 'origin/main' into SEC-9886
yasserfaraazkhan Apr 15, 2026
16311ff
Merge remote-tracking branch 'origin/main' into SEC-9886
yasserfaraazkhan Apr 15, 2026
1938bb1
feat(e2e): print server version and build info in detox global setup
yasserfaraazkhan Apr 15, 2026
25b8976
fix(e2e): resolve CI test failures and pre-existing TS type gap
yasserfaraazkhan Apr 16, 2026
491abc1
fix(e2e): eliminate remaining iOS sync stalls and Android long-press …
yasserfaraazkhan Apr 16, 2026
8d1573d
fix(e2e): address CodeRabbit review comments
yasserfaraazkhan Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/actions/generate-specs/split-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ class Specs {
const stats = fs.statSync(filePath);

if (stats.isDirectory()) {
// iPad tests are iOS-only; exclude from Android and other non-iPad runs.
// They run in their own isolated job with search_path pointing directly at ipad/.
if (file === 'ipad') {
return;
}
walkSync(filePath);
} else if (fileRegex.test(filePath)) {
const relativeFilePath = filePath.replace(dirPath + '/', '');
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/prepare-ios-build/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ runs:
path: |
ios/Pods
libraries/@mattermost/intune/ios/Frameworks
key: ${{ runner.os }}-pods-v4-intune-${{ inputs.intune-enabled }}-${{ steps.intune-hash.outputs.hash }}-${{ hashFiles('ios/Podfile.lock') }}-${{ github.ref_name }}
key: ${{ runner.os }}-pods-v4-intune-${{ inputs.intune-enabled }}-${{ steps.intune-hash.outputs.hash }}-${{ hashFiles('ios/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-v4-intune-${{ inputs.intune-enabled }}-${{ steps.intune-hash.outputs.hash }}-${{ hashFiles('ios/Podfile.lock') }}-
${{ runner.os }}-pods-v4-intune-${{ inputs.intune-enabled }}-${{ steps.intune-hash.outputs.hash }}-

- name: ci/install-pods-dependencies
shell: bash
Expand Down
8 changes: 0 additions & 8 deletions .github/actions/prepare-node-deps/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@ runs:
node node_modules/\@sentry/cli/scripts/install.js
echo "::endgroup::"

- name: Cache Node.js modules
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-

- name: ci/patch-npm-dependencies
shell: bash
run: |
Expand Down
14 changes: 13 additions & 1 deletion .github/actions/test/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,19 @@ runs:
shell: bash
run: |
echo "::group::check-styles"
npm run check
npm run lint &
LINT_PID=$!
npm run tsc &
TSC_PID=$!
set +e
wait "$LINT_PID"
LINT_EXIT=$?
wait "$TSC_PID"
TSC_EXIT=$?
set -e
if [ $LINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then
exit 1
fi
echo "::endgroup::"

- name: ci/run-tests
Expand Down
104 changes: 104 additions & 0 deletions .github/workflows/compatibility-matrix-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,42 @@ jobs:
name: ios-build-simulator-${{ github.run_id }}
path: Mattermost-simulator-x86_64.app.zip

build-android-apk:
runs-on: ubuntu-latest-8-cores
needs:
- update-initial-status
env:
ORG_GRADLE_PROJECT_jvmargs: -Xmx8g
steps:
- name: Prune Docker to free up space
run: docker system prune -af

- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ inputs.MOBILE_VERSION }}

- name: Prepare Android Build
uses: ./.github/actions/prepare-android-build
env:
STORE_FILE: ${{ secrets.MM_MOBILE_STORE_FILE }}
STORE_ALIAS: ${{ secrets.MM_MOBILE_STORE_ALIAS }}
STORE_PASSWORD: ${{ secrets.MM_MOBILE_STORE_PASSWORD }}
MATTERMOST_BUILD_GH_TOKEN: ${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}

- name: Detox build
run: |
cd detox
npm ci --prefer-offline --no-audit --no-fund
npm install -g detox-cli
npm run e2e:android-build

- name: Upload Android Build
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: android-build-files-${{ github.run_id }}
path: "android/app/build/**/*"

detox-e2e:
name: mobile-cmt-${{ matrix.server.version }}
uses: ./.github/workflows/e2e-ios-template.yml
Expand All @@ -113,12 +149,80 @@ jobs:
MM_TEST_SERVER_URL: ${{ matrix.server.url }}
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}

detox-ipad-e2e:
name: mobile-cmt-ipad-${{ matrix.server.version }}
uses: ./.github/workflows/e2e-ios-template.yml
needs:
- build-ios-simulator
strategy:
fail-fast: false
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
secrets: inherit
with:
run-type: "RELEASE"
MM_TEST_SERVER_URL: ${{ matrix.server.url }}
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}
ios_device_name: "iPad Pro 13-inch (M5)"
ios_device_os_name: "iOS 26.2"
search_path: "detox/e2e/test/products/channels/ipad"
parallelism: "1"
detox_config: "ios.ipad.debug"

maestro-ios-e2e:
name: mobile-cmt-maestro-ios-${{ matrix.server.version }}
uses: ./.github/workflows/e2e-maestro-template.yml
needs:
- build-ios-simulator
strategy:
fail-fast: false
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
secrets: inherit
with:
platform: ios
run-type: "RELEASE"
MM_TEST_SERVER_URL: ${{ matrix.server.url }}
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}

detox-android-e2e:
name: mobile-cmt-android-${{ matrix.server.version }}
uses: ./.github/workflows/e2e-android-template.yml
needs:
- build-android-apk
strategy:
fail-fast: false
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
secrets: inherit
with:
run-android-tests: true
run-type: "RELEASE"
MM_TEST_SERVER_URL: ${{ matrix.server.url }}
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}

maestro-android-e2e:
name: mobile-cmt-maestro-android-${{ matrix.server.version }}
uses: ./.github/workflows/e2e-maestro-template.yml
needs:
- build-android-apk
strategy:
fail-fast: false
matrix: ${{ fromJson(inputs.CMT_MATRIX) }}
secrets: inherit
with:
platform: android
run-type: "RELEASE"
MM_TEST_SERVER_URL: ${{ matrix.server.url }}
MOBILE_VERSION: ${{ inputs.MOBILE_VERSION }}

update-final-status:
runs-on: ubuntu-22.04
if: always()
needs:
- calculate-commit-hash
- detox-e2e
- detox-android-e2e
- detox-ipad-e2e
- maestro-ios-e2e
- maestro-android-e2e
steps:
- uses: mattermost/actions/delivery/update-commit-status@main
env:
Expand Down
Loading
Loading