How can I switch between a native Android app and Chrome browser using Serenity BDD with Appium, and switch back reliably?

I ran into this same pain point using Serenity + Appium for a hybrid workflow. What worked for us was using Android intents instead of creating a new Appium driver.

We launched Chrome using adb shell am start with the correct URL, then used Appium’s context switching to move between NATIVE_APP and WEBVIEW_chrome.

That way, we didn’t create a second driver at all, Serenity kept its context, and we preserved PageObject stability. You’ll need to poll for context availability though, since Chrome loads asynchronously.