Advertisement · 728 × 90

Posts by Alex Zhukovich

Preview
Mastering Android Screenshot Testing This comprehensive guide explores automated visual testing in Android development. Learn the fundamental principles, frameworks, and best practices to catch visual regressions across devices and configurations before they reach production.

Early supporters get:
• All future updates at a reduced price
• Help decide which topics get covered in the remaining chapters

If you want to ship quality apps with confidence, join the waitlist: alexzh.com/books/maste...

1 month ago 0 0 0 0

The first release covers 10 chapters, which is 50% of the full book.

The remaining chapters will be shaped by feedback from Android developers, making the final version more practical and impactful.

1 month ago 0 0 1 0

Plus hands-on examples of screenshot testing a real app:

• Themes
• Localization
• Adaptive UIs
• Font sizes
• CI/CD integration
• Future trends
• AI-assisted screenshot testing

1 month ago 0 0 1 0

The book dives deep into:

• Why screenshot testing matters for mobile apps
• In-depth comparison of frameworks: Android Testify, Dropshots, Paparazzi, Roborazzi, Shot, and Compose Preview Screenshot Testing
• Practical use of ComposablePreviewScanner and AndroidUiTestingUtils

1 month ago 0 0 1 0
Post image

2.5 years: 1,000+ hours of writing, 2 full drafts, and over 50,000 words, and that's not even counting the code.

I'm writing a book on Android screenshot testing, and the first release is coming in April 2026.

Here's what it covers ⬇️

1 month ago 0 0 1 0

Just found out you can now generate widget previews using Jetpack Compose.

Override "providePreview" in your widget class.

⚠️ Android 15+ only (Glance 1.2.0-rc01).
For older versions, combine with XML (12+) or images as a fallback.

1 month ago 1 0 0 0
Post image

Your date formatter may work locally, but break elsewhere.

SimpleDateFormat(...) and DateTimeFormatter.ofLocalizedDate(...) do not guarantee the result your users expect.

Use DateFormat.getBestDateTimePattern() for the right locale pattern.

#AndroidDev

1 month ago 2 0 0 0
Post image

"Just display the number. What could go wrong?"
Localize your app into Arabic and find out.

Instead of using raw numbers in your UI, use NumberFormat.
Not only digits depend on the locale, but also decimal separators, thousand groupings, and many other formatting conventions.

2 months ago 0 0 0 0
Preview
How to fix the Compose preview naming problem If you use PreviewParameterProvider, you've probably struggled with index-based names like "uiState 0" and "uiState 1." Starting with ui-tooling-preview:1.10.0, you can finally add custom display names to your preview states.

Full guide: alexzh.com/how-to-fix-...

2 months ago 0 0 0 0
Advertisement

Starting with ui-tooling-preview:1.10.0, you can override "getDisplayName()" in your PreviewParameterProvider to replace index-based naming with meaningful labels.

It takes less than 5 minutes to set up, but it removes the confusion every time you open the preview panel.

2 months ago 0 0 1 0
Post image

Last week I published a short article about a small but annoying problem with PreviewParameterProvider in Jetpack Compose.

If you've ever used PreviewParameterProvider, you know the pain: your previews have names like "uiState 0", "uiState 1", "uiState 2".

Here's how to fit ⬇️

2 months ago 1 0 1 0
Preview
How to fix the Compose preview naming problem If you use PreviewParameterProvider, you've probably struggled with index-based names like "uiState 0" and "uiState 1." Starting with ui-tooling-preview:1.10.0, you can finally add custom display names to your preview states.

If you use PreviewParameterProvider in Jetpack Compose, you know the frustration of seeing index-based preview names, like uiState 1.

Good news: ui-tooling-preview:1.10.0 finally lets you add custom names to your preview states.

Here's how to use it:
alexzh.com/how-to-fix-...

2 months ago 3 0 0 0
Post image

How many preview functions do you use per component or screen in Jetpack Compose?

If it's more than two, consider using PreviewParameterProvider.

Less code. Same coverage.

#AndroidDev #JetpackCompose

2 months ago 2 0 0 0

Screenshot testing is no longer optional.

Most devs never check out your branch; instead, they read the diff and approve.

Now AI writes code faster than humans can review. As a result, more and more UI bugs go to production.

Catch them before your users do.

#AndroidDev

3 months ago 2 0 0 0
Preview
Compose Material 3  |  Jetpack  |  Android Developers

Recommended website to download Material Icons: fonts.google.com/icons

Link to official update: developer.android.com/jetpack/and...

4 months ago 0 0 0 0

Do you use the "material-icons" library for Jetpack Compose?

Important news: Google team will no longer publish updates for this library, as it's not the recommended way for displaying Material Icons in Compose.

Recommended way: Downloading a Vector Drawable XML from the official website (link ⬇️).

4 months ago 0 0 1 0
Post image

Compose Preview Screenshot Testing forces moving your previews into the "screenshotTest" source set, which leads to code duplication or losing your previews.

Instead, reuse your preview functions in the screenshotTest source set.

Previews + screenshot tests. No duplication.

#AndroidDev

4 months ago 1 0 0 0
Advertisement
Preview
Not all UI tests are the same The article explores different types of UI testing, such as end-to-end testing, UI testing with fake data, pixel perfection testing, and accessibility testing. The article also includes information on how to get started with UI testing in any project.

Want to dive deeper into each test type? I wrote a detailed breakdown of UI testing types with practical examples: alexzh.com/not-all-ui-...

4 months ago 0 0 0 0

When you match the right type of tests to the right job, your E2E suite shrinks dramatically—and execution time stops being a problem.

Stop asking "how do we make E2E faster?" Start asking "should this even be an E2E test?"

What percentage of your UI tests are currently E2E?

4 months ago 0 0 1 0

The only way to make your UI tests fast and reliable is to replace most of your E2E tests with different test types:

• E2E tests → Verify production environment integrations
• UI tests with fake data → Verify state handling (loading, success, error)
• Screenshot tests → Verify the pixel perfectness

4 months ago 0 0 1 0

Most teams believe end-to-end tests are the only UI testing strategy available. So they focus on improving infrastructure or switching to a "better" framework.

But E2E tests were never designed to test everything. They verify one thing: how your app talks to the production environment.

4 months ago 0 0 1 0

"How do we make our E2E tests fast and stable?"

I've answered this question after every UI testing talk I've ever given, and my response always surprises people.

4 months ago 0 0 1 0
Preview
Visual Testing for Android This comprehensive guide explores automated visual testing in Android development. Learn the fundamental principles, frameworks, and best practices to catch visual regressions across devices and configurations before they reach production.

But, there's a crucial point: your tests might pass even if your UI is broken.

That's why I'm writing a book on Visual Testing for Android.

Join the waitlist to find out when it launches and to access early bird pricing: alexzh.com/android-vis...

4 months ago 0 0 0 0
Preview
The Complete Android UI Testing Landscape: From Journey to Traditional Approaches Don't know where to start with Android UI testing? The new AI-powered Journey tests offer a low-code entry point that gets you testing immediately. I…

Thank you to everyone who attended my talk at @droidcon.it about tools and frameworks for E2E and UI tests with fake data, including:

• Android Journey
• Maestro
• Espresso
• Compose UI Test
• Kaspresso

Slides from my talk:
speakerdeck.com/alexzhukovi...

#DroidconIt #AndroidDev

4 months ago 3 0 1 0

3/3 I realized this after spending some time improving my layout for the medium layout and checking it on a single device. We should design layouts based on screen sizes, not device types.

Does your application support foldable devices?

5 months ago 1 0 0 0

2/3 Here's the problem:
Google's window size classes aren't device categories—they're viewport measurements. The Pixel 9 Pro Fold jumps straight from compact to expanded, never using medium.

On the other side, Samsung's Z Fold 5 uses medium.

Same device category, but different screen sizes.

5 months ago 0 0 1 0
Advertisement
Post image

1/3 Foldable devices always use the medium window size class.

I believed this too. Then I opened my app on a Pixel 9 Pro Fold and was surprised that the "foldable" layout was skipped, and the "tablet" layout appeared on the screen.

#AndroidDev #KMP #MaterialDesign

5 months ago 2 0 1 0
Video

Did you know that the OutputTransformation API lets you format text fields in Jetpack Compose in real time?

Here's how to improve entering a card number. You can also use it for phone numbers, dates, postcodes, and more.

Do you already use OutputTransformation in your project?

5 months ago 1 0 0 0
Preview
Mobile development with Alex A blog about Android development & testing, Best Practices, Tips and Tricks

Your preview functions can be used not only for development but also as a tool to releasing apps without pixel imperfections.

Want to dive deeper into visual testing? Subscribe to my newsletter. Plus, you’ll be the first to know when my book on visual testing is released!

alexzh.com/

#AndroidDev

5 months ago 1 0 0 0

You now need only to make minor adjustments to implement visual tests.

Start strategically:
• Convert your design system and/or common components first
• Add preview functions for the most critical screens
• Gradually expand coverage to less critical screens

5 months ago 0 0 1 0