Skip to content

Bump Compose BOM and Paparazzi, drop the snapshot diff threshold, re-record goldens - #1795

Draft
andremion wants to merge 1 commit into
chore/merge-develop-into-develop-v2from
andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record
Draft

Bump Compose BOM and Paparazzi, drop the snapshot diff threshold, re-record goldens#1795
andremion wants to merge 1 commit into
chore/merge-develop-into-develop-v2from
andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record

Conversation

@andremion

@andremion andremion commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Goal

Prepare the develop-v2 build for the design refresh (AND-1472). We bump the Compose BOM and Paparazzi to the versions the chat SDK runs, drop the platform diff threshold, and re-record the snapshot goldens once, before the redesign starts. This way the redesign's snapshot diffs stay purely about design.

Stacked on #1790 (develop into develop-v2 merge-down). Do not merge before #1790; after it merges this PR will be retargeted to develop-v2.

Implementation

  • androidxComposeBom 2024.11.00 to 2025.08.01 and paparazzi 1.3.4 to 1.3.5, matching the chat SDK exactly (chat also runs this stack on compileSdk 35).
  • Removed MAX_PERCENT_DIFFERENCE from PaparazziComposeTest.kt and the maxPercentDifference argument from all 25 snapshot test classes. The 0.5 threshold only existed because Paparazzi 1.3.4 antialiased fonts differently between macOS (recording) and Linux (CI verification). Paparazzi now runs with its default threshold.
  • Re-recorded all 159 goldens on macOS. Paparazzi 1.3.5 names snapshot files with underscores instead of spaces, so the diff shows every golden as a rename. Git detects all 159 as 100% renames, meaning the new images are byte-identical to the old ones: the BOM bump from 2024.11 to 2025.08 caused no visual change in our components.
  • apiDump: one synthetic ComposableSingletons lambda hash changed in the ui-compose api file. This is a Compose compiler artifact of the version bump, not a real API change.

🎨 UI Changes

None. All 159 re-recorded goldens are pixel-identical to the previous ones (verified with a per-pixel comparison, and confirmed by git detecting them as 100% renames).

Testing

  • :stream-video-android-ui-compose:recordPaparazziDebug green.
  • :stream-video-android-ui-compose:verifyPaparazziDebug green locally (macOS) with the default threshold.
  • spotlessCheck and apiCheck green.
  • The real proof for the acceptance criteria is the snapshot verification job on this PR's CI: Linux verification against macOS-recorded goldens with the default threshold.

Summary by CodeRabbit

  • Maintenance

    • Updated the Android UI toolkit and visual validation tooling for improved compatibility with current development environments.
  • Tests

    • Refined visual snapshot comparisons to use the standard validation settings across Compose UI tests.
    • Refreshed snapshot test configuration while preserving existing coverage and rendered scenarios.

…e-record goldens

- androidxComposeBom 2024.11.00 -> 2025.08.01 and paparazzi 1.3.4 -> 1.3.5, matching the chat SDK.
- Remove MAX_PERCENT_DIFFERENCE: the 0.5 threshold only existed because Paparazzi 1.3.4 antialiased fonts differently between macOS (recording) and Linux (CI verification). Paparazzi now runs with its default threshold.
- Re-record all 159 goldens. Paparazzi 1.3.5 names snapshot files with underscores instead of spaces, so every file is deleted and re-added. The new images are pixel-identical to the old ones; the BOM bump caused no visual change.
@andremion andremion added the pr:dependencies Dependency updates label Sep 1, 2026
@andremion

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

PR checklist ✅

All required conditions are satisfied:

  • Title length is OK (or ignored by label).
  • At least one pr: label exists.
  • Sections ### Goal, ### Implementation, and ### Testing are filled, or the PR is bot-authored.
  • An issue is linked (Linear ticket or GitHub issue), or the PR is bot-authored.

🎉 Great job! This PR is ready for review.

@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 260d47e2-54ac-420c-86be-cff78d4faf90

📥 Commits

Reviewing files that changed from the base of the PR and between 4fe1b3e and 40d0ee3.

⛔ Files ignored due to path filters (161)
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_CompoundComponentFactoryTest_compound_component_factory_overrides_a_single_component.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_call_app_bar_with_default_title.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_call_lobby_controls.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_control_actions_with_default_handler.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_empty_defaults.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_incoming_call_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_incoming_call_content_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_outgoing_call_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_outgoing_call_content_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_participant_video_fallback.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_picture_in_picture_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_screen_sharing_fallback.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.theme_VideoComponentFactoryTest_factory_video_moderation_warning.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.base_DialogsTest_stream_dialog.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.base_DialogsTest_stream_dialog_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.base_DialogsTest_stream_dialog_with_input.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.base_DialogsTest_stream_dialog_with_input_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.activecall.internal_InviteUsersDialogTest_invite_users_dialog.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.activecall.internal_InviteUsersDialogTest_invite_users_dialog_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_accept_call_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_cancel_call_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_chat_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_closed_captions_toggle_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_decline_call_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_flip_camera_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_leave_call_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_settings_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_toggle_camera_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_toggle_hifi_audio_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_toggle_microphone_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.controls.actions_ControlActionsTest_toggle_speakerphone_action.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.moderation_ModerationWarningTest_moderation_warning.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.pinning_ParticipantActionsTest_participant_actions.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.pinning_ParticipantActionsTest_participant_actions_dialog.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_1.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_1_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_2.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_2_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_3.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_3_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_4.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_4_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_5.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_5_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_6.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_6_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_7.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_participants_7_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_screen_sharing_content_for_myself.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_screen_sharing_content_for_myself_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_screen_sharing_content_for_other_participant.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_LandscapeVideoRendererTest_landscape_screen_sharing_content_for_other_participant_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_1.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_1_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_2.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_2_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_3.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_3_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_4.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_4_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_5.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_5_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_6.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_6_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_7.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_participants_7_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_screen_sharing_content_for_myself.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_screen_sharing_content_for_myself_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_screen_sharing_content_for_other_participant.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_PortraitVideoRendererTest_portrait_screen_sharing_content_for_other_participant_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererLandscapeTest_spotlight_participants_landscape.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererLandscapeTest_spotlight_participants_landscape_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererLandscapeTest_spotlight_three_participants_landscape.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererLandscapeTest_spotlight_three_participants_landscape_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererTest_spotlight_participants.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererTest_spotlight_participants_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererTest_spotlight_two_participants.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.call.renderer.internal_SpotlightVideoRendererTest_spotlight_two_participants_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.livestream_LivestreamBackstageTest_livestream_backstage.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose.ui.components.livestream_LivestreamBackstageTest_livestream_backstage_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_call_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_call_content_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_call_content_without_header.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_call_content_without_header_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_only_call_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_only_call_content_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_only_call_content_without_header.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_audio_only_call_content_without_header_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_app_bar.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_control_actions.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_control_actions_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_participants_grid.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_participants_grid_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_room.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_audio_room_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_avatar_initials.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_user_avatar.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_badges_with_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_button_with_icons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_different_size_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_generic_container.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_input_fields.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_input_fields_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_regular_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_regular_buttons_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_regular_icon_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_show_progress_into_icon_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_toggle_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_toggle_icon_buttons.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_call_app_bar.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_call_content_deprecated_overload.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_call_content_with_multiple_participants.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_call_content_with_multiple_participants_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_minimum_parameters.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_minimum_parameters_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_multiple_participants.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_multiple_participants_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_one_participant.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_content_with_one_participant_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_details_audio.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_details_video.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_incoming_call_options.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_minimum_parameters_and_audio_type.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_minimum_parameters_and_audio_type_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_minimum_parameters_and_video_type.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_minimum_parameters_and_video_type_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_multiple_participants.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_multiple_participants_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_one_participant.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_content_with_one_participant_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_details_video.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_outgoing_call_options.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_call_control_actions.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_call_controls.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_call_lobby.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_call_lobby_deprecated_overload.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_call_lobby_with_camera_disabled.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_connection_quality_indicator.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_participant_label.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_sound_indicator.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_livestream_player.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_livestream_player_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_livestream_player_overlay.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_participants_row.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call participants list.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participant_local.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participant_local_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participant_remote.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participant_remote_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participants_info_app_bar.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participants_info_options.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_call_participants_list.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_invite user list.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_invite_user_list.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_local_video_content.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_local_video_content_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_participant_avatars.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_participant_information.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_participant_video.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_participant_video_in_dark_mode.png is excluded by !**/*.png
  • stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_participants_column.png is excluded by !**/*.png
📒 Files selected for processing (27)
  • gradle/libs.versions.toml
  • stream-video-android-ui-compose/api/stream-video-android-ui-compose.api
  • stream-video-android-ui-compose/src/test/kotlin/io/getstream/video/android/compose/ui/PaparazziComposeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AudioCallContentTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AudioRoomTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AvatarTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/BaseComponentsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallComponentsPortraitTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallContentTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallControlsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallLobbyTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/IndicatorsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/LivestreamTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ParticipantLandscapeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ParticipantsPortraitTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/theme/CompoundComponentFactoryTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/theme/VideoComponentFactoryTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/base/DialogsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/internal/InviteUsersDialogTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ControlActionsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/moderation/ModerationWarningTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActionsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideoRendererLandscapeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamBackstageTest.kt
💤 Files with no reviewable changes (25)
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AudioCallContentTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/IndicatorsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallContentTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamBackstageTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/BaseComponentsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideoRendererLandscapeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/theme/VideoComponentFactoryTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/base/DialogsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/theme/CompoundComponentFactoryTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallControlsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallLobbyTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/CallComponentsPortraitTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AudioRoomTest.kt
  • stream-video-android-ui-compose/src/test/kotlin/io/getstream/video/android/compose/ui/PaparazziComposeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/LivestreamTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ParticipantsPortraitTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ParticipantLandscapeTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ControlActionsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActionsTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideoRendererTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/internal/InviteUsersDialogTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/ui/components/call/moderation/ModerationWarningTest.kt
  • stream-video-android-ui-compose/src/testDebug/kotlin/io/getstream/video/android/compose/AvatarTest.kt

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


Walkthrough

The pull request updates Compose and Paparazzi versions, refreshes a generated API accessor name, and removes the shared custom Paparazzi difference threshold from Compose snapshot tests.

Changes

Compose and Paparazzi updates

Layer / File(s) Summary
Dependency and generated API updates
gradle/libs.versions.toml, stream-video-android-ui-compose/api/...
The Compose BOM and Paparazzi versions were updated. The generated lambda accessor name changed while retaining its Function3 return type.
Paparazzi tolerance migration
stream-video-android-ui-compose/src/test/kotlin/..., stream-video-android-ui-compose/src/testDebug/kotlin/...
The shared MAX_PERCENT_DIFFERENCE constant, related imports, and Paparazzi arguments were removed. Snapshot tests now use Paparazzi’s default comparison threshold.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 40d0e

This PR updates Compose and Paparazzi versions, removes a platform-specific snapshot threshold, and refreshes snapshot filenames without reported UI changes; no actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: pratimmallick, aleksandar-apostolov

Poem

A rabbit hops through Compose bright
Paparazzi trims its threshold light
The BOM blooms fresh in August air
A lambda gets a name to wear
Snapshots rest on defaults tonight

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: dependency updates, removal of the snapshot diff threshold, and golden re-recording.
Description check ✅ Passed The description provides clear Goal, Implementation, UI Changes, and Testing sections. It explains the dependency updates, snapshot changes, validation results, and stacked-PR dependency. The contribu…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description provides clear Goal, Implementation, UI Changes, and Testing sections. It explains the dependency updates, snapshot changes, validation results, and stacked-PR dependency. The contributor and reviewer checklists and GIF section are omitted, but the core description is complete.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

SDK Size Comparison 📏

SDK Before After Difference Status
stream-video-android-core 12.29 MB 12.43 MB 0.14 MB 🟢
stream-video-android-ui-xml 5.70 MB 5.75 MB 0.05 MB 🟢
stream-video-android-ui-compose 6.23 MB 5.82 MB -0.41 MB 🚀

@sonarqubecloud

sonarqubecloud Bot commented Sep 1, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant