Skip to content

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

Merged
PratimMallick merged 2 commits into
develop-v2from
andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record
Sep 3, 2026
Merged

Bump Compose BOM and Paparazzi, drop the snapshot diff threshold, re-record goldens#1795
PratimMallick merged 2 commits 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

Closes AND-1472

Prepare the develop-v2 build for the design refresh: 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 keeps the redesign's snapshot diffs purely about design.

Implementation

  • androidxComposeBom 2024.11.00 to 2025.08.01 and paparazzi 1.3.4 to 1.3.5, matching the chat SDK (which also runs this stack on compileSdk 35).
  • Removed MAX_PERCENT_DIFFERENCE from PaparazziComposeTest.kt and the maxPercentDifference argument from the 25 snapshot test classes. The 0.5 threshold only covered the font antialiasing difference between macOS (recording) and Linux (CI) on Paparazzi 1.3.4. 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 every golden shows as a rename. Git detects all 159 as 100% renames, so the images are byte-identical and the BOM bump caused no visual change.
  • apiDump: one synthetic ComposableSingletons lambda hash changed in the ui-compose api file. This is a Compose compiler artifact of the bump, not an API change.

Testing

Reviewer steps:

  1. Run ./gradlew :stream-video-android-ui-compose:verifyPaparazziDebug locally. Expected: green with the default threshold.
  2. Check the "Run unit tests" job on this PR. It verifies the macOS-recorded goldens on Linux with the default threshold, which is the acceptance criterion of the ticket.

Validation run locally on the rebased head:

  • ./gradlew spotlessCheck apiCheck testDebugUnitTest: green (detekt is not applied in this repo).
  • ./gradlew :stream-video-android-ui-compose:recordPaparazziDebug and verifyPaparazziDebug: green.

@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
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.
Title check ✅ Passed The title clearly summarizes the main changes: dependency bumps, removal of the snapshot diff threshold, and golden re-recording.
Description check ✅ Passed The description includes the goal, implementation details, issue reference, testing steps, validation results, and rationale for the golden changes. The UI Changes, contributor checklist, reviewer che…
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.)

Full details: Description check

Explanation

The description includes the goal, implementation details, issue reference, testing steps, validation results, and rationale for the golden changes. The UI Changes, contributor checklist, reviewer checklist, and GIF sections are not completed, but these omissions do not prevent the description from being mostly complete.

✨ 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.30 MB 12.45 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 🚀

Base automatically changed from chore/merge-develop-into-develop-v2 to develop-v2 September 2, 2026 11:21
@andremion
andremion force-pushed the andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record branch from 40d0ee3 to 7a5ff80 Compare September 2, 2026 12:57
@andremion
andremion marked this pull request as ready for review September 2, 2026 13:10
@andremion
andremion requested a review from a team as a code owner September 2, 2026 13:10
…ldens

- 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 force-pushed the andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record branch from 7a5ff80 to 72a7fb4 Compare September 2, 2026 15:22
The preview call's duration flow emits its first value after a one
second delay, so the first test in a class captured either the title or
"0s" in the call app bar, depending on JVM warm-up. previewCall now keeps
the duration flow collected and waits for its first value once, so every
composition sees the same value.

Snapshot structure:
- Full screens use two files (light and dark); the two-half helpers are
  for components only, since a full-screen composable takes the whole
  height and hides the second half. Applied to the call participants
  list.
- The two-half helpers take a background color, used by the livestream
  overlay test to stand in for the video it is drawn over.
- The livestream backstage pair is merged into one two-half snapshot.
- The deprecated CallContent overload gets its dark variant.
@sonarqubecloud

sonarqubecloud Bot commented Sep 2, 2026

Copy link
Copy Markdown

@PratimMallick
PratimMallick merged commit 9008ff9 into develop-v2 Sep 3, 2026
13 checks passed
@PratimMallick
PratimMallick deleted the andrerego/and-1472-bump-compose-bom-and-paparazzi-on-develop-v2-and-re-record branch September 3, 2026 10:52
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.

2 participants