Skip to content

build: update Paparazzi to 2.0.0-alpha05 - #3937

Closed
AlvaroBrey wants to merge 1 commit into
build/bump-kotlin-pokofrom
build/bump-paparazzi
Closed

build: update Paparazzi to 2.0.0-alpha05#3937
AlvaroBrey wants to merge 1 commit into
build/bump-kotlin-pokofrom
build/bump-paparazzi

Conversation

@AlvaroBrey

@AlvaroBrey AlvaroBrey commented Aug 11, 2026

Copy link
Copy Markdown
Member

Part of the AGP 9 upgrade pre-work. Paparazzi alpha02 cannot run on Gradle 9 in two separate ways, so it has to move before the AGP/Gradle bump.

Agent description

Motivation

Part of the AGP 9 upgrade, split into small independently-shippable PRs. Paparazzi is a hard
prerequisite for Gradle 9, for the two reasons in the summary above.

The AGP-9 support claim needed checking, because the sources conflict. The alpha05 changelog
says "This release supports pre-AGP 9.0 consumers", which reads like AGP 9 is unsupported, and
the PR carrying the AGP-9 API migration (cashapp/paparazzi#2106, "[DNM] AGP 9.0 API Changes") was
closed unmerged. Resolved it against the 2.0.0-alpha05 tag's actual source instead:

  • PaparazziPlugin.kt imports com.android.build.api.dsl.CommonExtension and contains no
    BaseExtension reference at all
    , so the migration did land, just via a different change.
  • It contains isAgpAtLeast(major = 9), used to enable ASM instrumentation on AGP 9+: an
    AGP-9-aware feature branch, not a version cap.
  • Issue [Paywalls V2] Add CarouselComponentView #2095 is closed / completed, milestoned 2.0.0-alpha05.

So alpha05 supports AGP 9, and the changelog line means it also retains pre-AGP-9 support.

On the golden images. alpha05 bumps LayoutLib 16.1.1 → 16.2.1 and Compose to 1.11.2, which can
legitimately shift rendering, so the two committed ui/debugview PNGs were the main risk. What the
measurements showed:

notConfigured configured
alpha02 (baseline, local macOS) 0.047221% 0.455492%
alpha05 (local macOS) 0.055340% 0.467417%

Both already fail locally on unmodified main by the first row's margins, while
ci/circleci: test_defaults_debug is green on main (that job runs testDefaultsDebugUnitTest
across all modules, which includes DebugViewSnapshotTest). So the goldens match CI's Linux
rendering and simply do not match macOS. alpha05 adds roughly +0.008% / +0.012% on top of that
pre-existing gap, which is the same order as the environment noise itself.

Re-recording on macOS would therefore replace CI-valid images with locally-valid ones and break the
job that currently passes. Leaving them untouched; CI is the authority here, and if alpha05's
rendering change does cross the threshold on Linux, test_defaults_debug on this PR will say so.

Description

  • gradle/libs.versions.toml: paparrazzi (sic) 2.0.0-alpha022.0.0-alpha05, and removed the
    now-false # Can't use alpha04 because it requires higher Kotlin version than we're using
    comment, which this PR's Kotlin dependency resolves.

Also checked while here, no changes needed:

  • Paparazzi task names are unchanged between alpha02 and alpha05, and
    fastlane/Fastfile's <module>:recordPaparazziDebug (which has no flavor, while both modules
    carry the apis dimension) resolves correctly to recordPaparazziDefaultsDebug via Gradle's
    camel-case abbreviation. Confirmed with --dry-run.
  • fastlane/Fastfile carries a commented-out paparazzi.snapshot.dir property noting it is
    unsupported in the current version. Left alone; not required here and worth its own look.

Tested: build configures cleanly on Kotlin 2.2.10 with no stdlib conflict;
:ui:revenuecatui:testDefaultsDebugUnitTest 1678/1679 pass, the single failure being the
pre-existing PaywallComponentsTemplatePreviewRecorder error from an uninitialized
upstream/paywall-preview-resources submodule in this environment; detektAll clean;
:ui:debugview:recordPaparazziDefaultsDebug still succeeds, so the path CI actually uses works
(re-recorded output was reverted, goldens are byte-identical to main).

@AlvaroBrey AlvaroBrey self-assigned this Aug 11, 2026
@emerge-tools

emerge-tools Bot commented Aug 11, 2026

Copy link
Copy Markdown

📸 Snapshot Test

31 modified, 590 unchanged

Name Added Removed Modified Renamed Unchanged Errored Approval
TestPurchasesUIAndroidCompatibility Paparazzi
com.revenuecat.testpurchasesuiandroidcompatibility.paparazzi
0 0 31 0 251 0 ✅ Approved
TestPurchasesUIAndroidCompatibility
com.revenuecat.testpurchasesuiandroidcompatibility
0 0 0 0 339 0 N/A

🛸 Powered by Emerge Tools

@AlvaroBrey
AlvaroBrey force-pushed the build/bump-paparazzi branch from 5f2ed7c to b7f28bf Compare August 11, 2026 16:22
@AlvaroBrey
AlvaroBrey force-pushed the build/bump-kotlin-poko branch from 985d606 to e9f498e Compare August 13, 2026 09:21
@AlvaroBrey
AlvaroBrey force-pushed the build/bump-paparazzi branch from b7f28bf to 1e86caf Compare August 13, 2026 09:21
@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.72%. Comparing base (1382809) to head (1c2e5a2).

Additional details and impacted files
@@                   Coverage Diff                   @@
##           build/bump-kotlin-poko    #3937   +/-   ##
=======================================================
  Coverage                   82.72%   82.72%           
=======================================================
  Files                         425      425           
  Lines                       17472    17472           
  Branches                     2629     2629           
=======================================================
  Hits                        14453    14453           
  Misses                       2132     2132           
  Partials                      887      887           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AlvaroBrey
AlvaroBrey force-pushed the build/bump-kotlin-poko branch from e9f498e to 0912ec0 Compare August 13, 2026 09:52
@AlvaroBrey
AlvaroBrey force-pushed the build/bump-paparazzi branch from 1e86caf to 9353c88 Compare August 13, 2026 09:52
@AlvaroBrey
AlvaroBrey force-pushed the build/bump-kotlin-poko branch from 0912ec0 to 1382809 Compare August 13, 2026 10:34
alpha02 cannot run on Gradle 9: its plugin reads AGP's BaseExtension, which
AGP 9 removes (cashapp/paparazzi#2095), and its forked test-report renderer
calls the changed internal TestResultsProvider.hasOutput, crashing
record/verify (cashapp/paparazzi#2227). alpha05 fixes both: verified against
the alpha05 tag's source that PaparazziPlugin.kt now uses
com.android.build.api.dsl.CommonExtension with no BaseExtension reference,
and branches on isAgpAtLeast(9).

Requires Kotlin 2.2.10 (alpha05 ships kotlin-stdlib 2.3.0), which is why the
stale "can't use alpha04" comment goes away with it.

Golden images are deliberately not re-recorded. The two committed
ui/debugview snapshots pass on CI but fail locally on macOS both before and
after this bump, by near-identical margins (0.047%/0.455% on alpha02 vs
0.055%/0.467% on alpha05), so the local delta is rendering-environment noise
rather than drift. Re-recording here would bake macOS output into images CI
verifies on Linux.
@AlvaroBrey
AlvaroBrey force-pushed the build/bump-paparazzi branch from 9353c88 to 1c2e5a2 Compare August 13, 2026 10:34
@AlvaroBrey AlvaroBrey closed this Aug 13, 2026
@AlvaroBrey

Copy link
Copy Markdown
Member Author

See #3934 (comment)

@AlvaroBrey
AlvaroBrey deleted the build/bump-paparazzi branch August 13, 2026 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant