android-test
android-test copied to clipboard
ActivityScenario changes behavior of Navigation Component and breaks backstack
Description
When using ActivityScenario
, backstack doesn't work as expected when launching deeplinks.
Steps to Reproduce
Please see the repro project at https://github.com/lwasyl/activity-scenario-navigation-issue.
- Navigation library is set up with navigation graph that defines deeplinks
- Press the button to display a notification. The notification opens the app on FragmentB, with fragmentA in the backstack.
- Press back button
Expected Results
Fragment A is visible, as it's the previous one on the backstack.
Actual Results
When starting main activity normally (via launcher), backstack works as expected: after clicking the notification, fragment B is visible. Then, after pressing back button, fragment A is visible.
When starting main activity via ActivityScenario
, backstack doesn't work as expected: after clicking the notification, fragment B is visible, however after pressing back button, app exits.
Please note that the behavior was correct (that is, consistent with how the app behaves outside the tests) with ActivityTestRule
, which is now deprecated. There's no clear migration path to test the now-failing case with ActivityScenario
.
AndroidX Test and Android OS Versions
androidx.test.ext:junit-ktx:1.1.2
Checked on various emulators and it doesn't seem to be related to OS version. Reproduced on API 26, 29, 30 (https://github.com/lwasyl/activity-scenario-navigation-issue/actions/runs/295793564)
Link to a public git repo demonstrating the problem:
https://github.com/lwasyl/activity-scenario-navigation-issue
Here's how the app behaves normally:
When pressing back, app properly cycles through the backstack.
Here's UI tests that uses ActivityScenario
and performs exactly the same steps as I did manually in the gif above (run the main activity, press button, press on notification, press back button):
fragmentA is never shown again
Possibly related https://github.com/android/android-test/issues/427
Same issue here, I have the backtstack f***cked up because of BootstrapActivity
This repo show the issue with another use case : https://github.com/bastienpaulfr/ActivityScenarioBug/tree/main