<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Surya Polavarapu</title>
    <description>The latest articles on DEV Community by Surya Polavarapu (@surya_p).</description>
    <link>https://dev.to/surya_p</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4075883%2F3193c314-52cc-4573-bbf1-70ee27c16a1b.png</url>
      <title>DEV Community: Surya Polavarapu</title>
      <link>https://dev.to/surya_p</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/surya_p"/>
    <language>en</language>
    <item>
      <title>Liquid Glass Is Here: Testing Considerations for Developers and Quality Engineers</title>
      <dc:creator>Surya Polavarapu</dc:creator>
      <pubDate>Thu, 03 Sep 2026 11:12:57 +0000</pubDate>
      <link>https://dev.to/qapilot/liquid-glass-is-here-testing-considerations-for-developers-and-quality-engineers-mm9</link>
      <guid>https://dev.to/qapilot/liquid-glass-is-here-testing-considerations-for-developers-and-quality-engineers-mm9</guid>
      <description>&lt;p&gt;Liquid Glass is Apple's new design language announced at WWDC 2025 &amp;amp; shipped with iOS 26. Apple calls it their "broadest software design update ever" - the most significant visual overhaul since iOS 7 moved from skeuomorphism to flat design in 2013. &lt;/p&gt;

&lt;p&gt;All UI elements like tab bars, buttons, switches, sliders - are now translucent and dynamic. They mimic real glass: they refract light, reflect their surroundings, and change appearance based on what's underneath them. Scroll a page and the navigation bar shifts in real time based on the content beneath it. The same button can look completely different against a dark wallpaper vs a light one.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;strong&gt;What happened when it reached real devices?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In beta builds, users reported a lot of functional rather than purely aesthetic problems: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notifications on the lock screen were barely visible against transparent background. The Control Centre blended into whatever was behind it, making toggles hard to find&lt;/li&gt;
&lt;li&gt;Navigation became unpredictable: Safari's forward button appears and disappears depending on context, search bars moved, and back buttons sometimes vanished entirely.&lt;/li&gt;
&lt;li&gt;Touch targets got smaller and more crowded - tab bars were squeezed, spacing reduced&lt;/li&gt;
&lt;li&gt;Contrast was insufficient for anyone with even mild vision difficulties - many users immediately turned on "Reduce Transparency" and "Increase Contrast" in accessibility settings just to make their phones usable
 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Nielsen Norman Group published a detailed analysis in March 2026 that was unusually pointed for a publication that typically stays measured: the interface is restless, less predictable, less legible, and constantly pulling focus rather than supporting seamless access to content. They specifically called out that Apple has crowded and shrunk touch targets, seemingly tossing out the long-standing guideline of at least 0.4cm between targets and 1cm × 1cm tap areas.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Apple eventually responded in iOS 26.1 beta 4 by introducing a "Tinted" setting that tones down the transparency - a soft reversal of one of its most disputed visual decisions. The community largely received this as an acknowledgement that the initial implementation went too far.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;strong&gt;The Mandate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apple understood that a change this large needed a runway. So when iOS 26 shipped, they built an opt-out into Xcode, but requires all iOS apps to fully support the Liquid Glass design system by September 2026. &lt;br&gt;
This isn't optional. The iOS 27 beta, released at WWDC June 2026, confirms that &lt;em&gt;UIDesignRequiresCompatibility&lt;/em&gt; , the flag teams used to opt out of Liquid Glass - is ignored when building with the iOS 27 SDK. Teams that used this flag to defer the migration now have regressions hidden in their code that QA never considered. Those regressions will all surface simultaneously when they adopt the new SDK.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;strong&gt;Critical Considerations&lt;/strong&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
The most important action for any team still using the compatibility flag is to remove the flag, build against the iOS 26 SDK, run the app on a physical device, and do a full regression pass now - before Xcode 27 is made mandatory, before a bug fix release forces the issue. &lt;br&gt;
Visual testing breaks down. Tools comparing pixel to pixel will flag everything during regression and the actual failures would get buried in the noise. Liquid Glass elements render differently depending on what's behind them - wallpaper, content, dark vs light mode, even time of day in some cases. There is no stable baseline to compare against. The same screen, in the same device can produce a different visual output on every run. Pixel-diffing tools flag everything as a regression.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Touch target testing becomes necessary. The NN/g piece documents that Apple went against its own guidelines on tap target sizing. For apps adapting to Liquid Glass, elements that previously passed accessibility and tap-size checks may no longer. Every interactive element in a migrated app needs re-verification - not just against design specs but against real device behaviour.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
The hidden regression problem. Teams that deferred Liquid Glass via the compatibility flag now have untested code paths. The single most important action for these teams: remove the compatibility flag, build with Xcode 26 against a physical iOS 26 device, and run a full regression pass - discover the regressions at your own pace rather than under Xcode 27 deadline pressure. Most haven't done this yet.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;strong&gt;What testing against Liquid Glass actually requires&lt;/strong&gt;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
When Liquid Glass migration shifts the position of a tab bar item, reformats a navigation element, or resizes a button, test steps that relied on the previous element location or identifier fail. Not because the feature broke but because the anchor the test was using no longer sits in the same place. Many elements shifting simultaneously, across many screens, where the alternative is manually triaging and rewriting every broken test step by hand.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
At &lt;a href="https://qapilot.io/" rel="noopener noreferrer"&gt;QApilot&lt;/a&gt;, our AI native system works through a resolution hierarchy - accessibility identifiers, relative positioning, visible text, and a vision-based fallback that identifies the element the way a human tester would: by what it looks like and where it sits in the flow. The healed step is flagged for review before the fix persists in the system - the team sees what changed and approves it.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Our Auto Bug Finder surfaces accessibility gaps per screen during Crawler execution - contrast issues, missing labels, elements that fail WCAG checks - precisely the category of failure Liquid Glass migration is most likely to introduce.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Liquid Glass shipped with real performance issues on older devices - early builds showed sluggish rendering and elevated GPU load that Apple progressively resolved through subsequent updates. An app migrating to Liquid Glass today still carries that risk, particularly on devices outside the latest hardware generation. QApilot captures CPU, memory, battery, and rendering metrics during test execution - surfacing performance regressions as part of the same run that validates functional behaviour.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
The September 2026 deadline and the Xcode 27 SDK mandate are arriving in the same window. For any team planning a release in the next twelve months, the question of whether their app has been tested against Liquid Glass is worth asking now.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>ai</category>
      <category>mobile</category>
      <category>automation</category>
    </item>
    <item>
      <title>Google upgraded Android's UI language, can test automation keep up?</title>
      <dc:creator>Surya Polavarapu</dc:creator>
      <pubDate>Thu, 13 Aug 2026 10:48:42 +0000</pubDate>
      <link>https://dev.to/qapilot/google-upgraded-androids-ui-language-can-test-automation-keep-up-3ic2</link>
      <guid>https://dev.to/qapilot/google-upgraded-androids-ui-language-can-test-automation-keep-up-3ic2</guid>
      <description>&lt;p&gt;On May 19, Google made it official: Jetpack Compose is now the only way forward for Android UI. The older approach of writing screens in XML, the markup language that defined app development for over a decade, is now placed in maintenance mode. No new feature launches, bug fixes only. &lt;/p&gt;

&lt;p&gt;For most developers, this landed as good news. Compose is genuinely better to build with: less code, faster iteration, cleaner architecture. So most of the attention since has been on what developers gained and barely anything on what happens to the test suites!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually changed under the hood&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To understand why this matters for quality teams, it helps to know what automation tools have always relied on.&lt;/p&gt;

&lt;p&gt;Android testing frameworks typically found elements on screen using identifiers: resource IDs, class names, positions in a structure called the View hierarchy. Every button, text field, and screen element in an XML-based app lives in that hierarchy. Your test says "&lt;em&gt;find the element with ID btn_checkout&lt;/em&gt;" and the framework finds it.&lt;/p&gt;

&lt;p&gt;Compose doesn't produce Views. It produces a semantics tree - a structure closer to how a screen reader navigates an app than to how traditional layouts worked. These are two different models.&lt;/p&gt;

&lt;p&gt;Appium can interact with Compose, but not in the way most teams currently have it set up. It requires switching to the UIAutomator2 driver specifically - not the Espresso driver - and it only works if developers have explicitly added testTag modifiers to Compose elements and enabled testTagsAsResourceId in the app configuration. Those are deliberate, manual steps that someone on the engineering side has to take for every element that needs to be reachable by a test. &lt;/p&gt;

&lt;p&gt;Most teams migrating existing apps to Compose haven't done this. The result is a test written to find &lt;em&gt;btn_checkout&lt;/em&gt; by its resource ID will silently fail on a Compose screen - not because the button disappeared, but because the element it was looking for no longer exists in that form. Tests stop finding elements and the suite starts failing. So when teams are quickly rewriting UI code, they are quietly invalidating years of recorded test steps, locators, and automation logic&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The same problem we solved for Flutter is now arriving for the Android native ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This isn't a new class of problem. Flutter introduced a version of it years ago, and it was worse. Flutter renders entirely on its own canvas, bypassing the native UI framework completely. UIAutomator2 sees nothing. XCUITest sees nothing. There is no View tree, and no semantics tree accessible through standard drivers. The only reliable paths are Flutter Driver - which only works on debug builds, not release ones.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://qapilot.io/" rel="noopener noreferrer"&gt;QApilot&lt;/a&gt;, we built our proprietary layer using advanced methods like OCR &amp;amp; computer vision precisely because standard locators find nothing. No custom framework setup or coordinate scripts - the test finds the element visually, the way a human would. &lt;/p&gt;

&lt;p&gt;Compose is a step along the same spectrum. The accessibility layer is still reachable if the app is configured correctly. The problem is that "configured correctly" now requires deliberate choices from the development team that most aren't making yet.&lt;/p&gt;

&lt;p&gt;The abstraction layer we've built normalises Native, Flutter, React Native, and WebView apps into a single locator and action interface. Compose First is another reason why that kind of abstraction matters. The specific UI framework your team chose to build in shouldn't be a variable that determines whether your test suite survives a platform update. &lt;/p&gt;

&lt;p&gt;It's worth watching how quickly Android teams migrate. Compose adoption has been steady but slower than Google would prefer - partly because legacy codebases are large, and partly because migration comes with invisible costs that don't show up in a developer experience comparison.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mobile</category>
      <category>automation</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
