android-test icon indicating copy to clipboard operation
android-test copied to clipboard

ActivityScenario changes behavior of Navigation Component and breaks backstack

Open lwasyl opened this issue 3 years ago • 3 comments

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.

  1. Navigation library is set up with navigation graph that defines deeplinks
  2. Press the button to display a notification. The notification opens the app on FragmentB, with fragmentA in the backstack.
  3. 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: running-from-launcher

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): running-test

fragmentA is never shown again

lwasyl avatar Oct 08 '20 16:10 lwasyl

Possibly related https://github.com/android/android-test/issues/427

lwasyl avatar Oct 08 '20 16:10 lwasyl

Same issue here, I have the backtstack f***cked up because of BootstrapActivity

bastienpaulfr avatar Jul 19 '22 16:07 bastienpaulfr

This repo show the issue with another use case : https://github.com/bastienpaulfr/ActivityScenarioBug/tree/main

bastienpaulfr avatar Jul 20 '22 13:07 bastienpaulfr