Repository navigation
chore: stream-chat rc.31 compatibility - #3919
Merged
Merged
Conversation
Contributor
SDK Size
|
2 of 4 tasks
Contributor
|
🎉 This PR is included in version 10.0.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
isekovanic
pushed a commit
that referenced
this pull request
Nov 9, 2026
Ticket: https://linear.app/stream/issue/RN-449 ## 🎯 Goal Port the native iOS and Android e2e suites to the V10 Detox suite in `examples/E2ETestApp`, and bring its CI up to the native SDKs: per-test impact analysis on pull requests, a nightly run that builds the coverage map, and Allure TestOps reporting. ## 🛠 Implementation details **Tests** - 19 suites, 255 tests, ported from the Android compose and iOS UIKit suites (the union of both, with the native names and expectations). Every test links an Allure case in project 3. - When the SDK disagrees with the native expectation, the test keeps the native expectation and is skipped with `it.skip` and a comment that links a ticket. That covers 72 tests, tracked in RN-489 to RN-506 and RN-510. With those skipped, 183 tests run. - Robots, pages and support code grew to cover the suites: offline toggling (Android), the media library, JWT asserts, and Android system dialogs. **E2E app** - Offline support is on (`@op-engineering/op-sqlite`, `<Chat enableOfflineSupport>`). The database is wiped at login, so every test starts clean. - Added a JWT test screen, plus the channel details and thread screens the suites need. - No `setupCommandUIMiddlewares` call: since stream-chat `10.0.0-rc.31` (#3919), the client installs the command middlewares itself. **SDK** - Additive `testID`s only (channel preview, reactions, link previews, unread indicators, swipe actions, and a few others). There is no behaviour change. One snapshot changed because `ScrollToBottomButton` got a new `testID`. **Impact analysis (`e2e/README.md`, "Impact analysis")** - `E2E_COVERAGE=1` builds add a small Babel plugin (`e2e/coverage/babelPlugin.js`) that records which files run code. It isn't istanbul, because worklets capture istanbul's counters and then throw on the UI runtime. - After each test, the app reports its coverage to a collector in the test process, which writes one lcov file per test. - `build_e2e_coverage_map` and `select_e2e_tests` use `fastlane-plugin-stream_actions` (bumped from 0.4.14 to 0.4.19). - A PR runs only the tests its diff can reach. Changes to the harness, native code, dependencies or lanes still run everything. - The `Check E2E Required` job now also selects the tests, and skips e2e when none are selected. - Android runs in batches, like the native Android SDK: `Build Android` builds the APKs once, `Launch Allure TestOps (Android)` opens one launch, and `Test Android` runs up to 8 batches (one per selected test when fewer than 8 are selected), each taking a round-robin share of the selection. - A new nightly workflow, `e2e-test-cron.yml`, runs everything on Android with the coverage build and uploads the `e2e-coverage-map` artifact. It also runs every test on iOS. Until its first run on the default branch, every PR runs all tests. **Allure** - The Allure lanes moved into `examples/SampleApp/fastlane/Allurefile`, the same layout as stream-chat-swift. A new `allure_testcase` lane creates test cases. - Allure uses the `ALLURE_TOKEN` repository secret. **Mock server** - The suite runs the mock with `api_version=v2×tamps=ns`. That mode comes from GetStream/stream-chat-test-mock-server#98, which is now merged into `main`. ## 🎨 UI Changes None. The SDK changes are `testID`s only. ## 🧪 Testing - Full Android run (debug build, emulator): 255 tests, 182 passed, 70 skipped and 3 failed. All 3 passed when rerun: - A mock server start timeout, which is a harness issue. - RN-489 (the channel actions sheet sometimes opens empty). - RN-506 (after jumping to a quoted message, the list stays on the jumped page when the user sends). - Impact analysis: - Coverage collection checked on debug and release builds (17 of 17 tests collected). - A map built from those tests gave sensible selections from changed files. - A selection file ran exactly the selected tests. - First batched CI run (Android release build, 8 batches): batches 0 to 3 passed. Of the rest: - The two long-thread jump tests hung in release builds only: the open thread keeps enqueuing JS timers, so the app never becomes idle. Reproduced locally, ticketed as RN-510, and skipped. - The multiple-votes poll test pressed Back to hide a keyboard the CI emulator never showed, which closed the sheet. It now presses Back only when the keyboard is up. - One batch lost its emulator mid-run (runner issue, no test failure). - `yarn lint`, E2ETestApp `typecheck` and the SDK unit tests pass. - iOS isn't tuned yet. On PRs its e2e job runs on dispatch only; the nightly runs it. ## ☑️ Checklist - [x] I have signed the [Stream CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) (required) - [ ] PR targets the `develop` branch (targets `V10`: the suite needs the v10 SDK) - [x] Documentation is updated (`examples/E2ETestApp/e2e/README.md`) - [ ] New code is tested in main example apps, including all possible scenarios (e2e app only, no SampleApp/Expo changes)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tickets:
🎯 Goal
Bumps
stream-chatto10.0.0-rc.31and removes the SDK code it makes redundant. rc.31 includes GetStream/stream-chat-js#1982, GetStream/stream-chat-js#1985, GetStream/stream-chat-js#1986 and GetStream/stream-chat-js#1987.328ecfb7esetupCommandUIMiddlewares01671f45bf34a0b01cstream-chatto^10.0.0-rc.31🛠 Implementation details
REACT-1184 - remove
setupCommandUIMiddlewaresCommit:
328ecfb7eGetStream/stream-chat-js#1985 installs the four command middlewares in every composer by default: the active command guard and the command string extraction around the commands middleware, and the command injection after attachments, for messages and for drafts. Those are the same middlewares, with the same ids and positions, that
setupCommandUIMiddlewaresinserted, so the helper has nothing left to do and is removed. SampleApp no longer calls it.This is a breaking change. Apps that call
setupCommandUIMiddlewaresdelete the call. Apps that never called it now get the command behaviour too: typing/giphy catsmakesgiphythe active command and leavescatsin the input.ai-docs/ai-migration-v9-to-v10.mdandai-docs/v10-breaking-changes.mdare updated, and the note about the REACT-1489 fix to this helper is dropped since the helper is gone.REACT-1400 - pinned-message search
Commit:
01671f45bMessageSearchSourcematched message text by exact equality, soChannelPinnedMessageListProviderreplaced that filter with its owntext: { $q }. GetStream/stream-chat-js#1987 makes the defaulttext: { $autocomplete }, so the override is removed. Pinned-message search now matches by word prefix: "lun" finds "Lunch tomorrow?". An empty query still lists every pinned message.Bump
stream-chatto10.0.0-rc.31Commit:
f34a0b01cThe SDK and the four example apps move to
^10.0.0-rc.31. Besides the two changes above, it brings:ChannelManager.Neither needs a change here.
🎨 UI Changes
None.
🧪 Testing
/giphy catsshows the GIPHY chip withcatsin the input, and sending it shows the Giphy preview. Picking Giphy from the commands menu and typingdogsdoes the same.yarn typecheck,yarn lintandyarn buildpass.☑️ Checklist
developbranch