Skip to content

Commit

Permalink
[file_selector_android] Attempt to close system dialogs before integr…
Browse files Browse the repository at this point in the history
…ation tests run (#5805)

Attempt to close any system dialogs before running the test. This idea
came from
https://stackoverflow.com/questions/39457305/android-testing-waited-for-the-root-of-the-view-hierarchy-to-have-window-focus.

There may be a system dialog before the test runs that prevents the
FlutterView from getting focus. Which also prevents any of the espresso
actions to run

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [relevant style guides] and ran the
auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages
repo does use `dart format`.)
- [x] I signed the [CLA].
- [x] The title of the PR starts with the name of the package surrounded
by square brackets, e.g. `[shared_preferences]`
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated `pubspec.yaml` with an appropriate new version according
to the [pub versioning philosophy], or this PR is [exempt from version
changes].
- [ ] I updated `CHANGELOG.md` to add a description of the change,
[following repository CHANGELOG style].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[relevant style guides]:
https://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[pub versioning philosophy]: https://dart.dev/tools/pub/versioning
[exempt from version changes]:
https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#version-and-changelog-updates
[following repository CHANGELOG style]:
https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changelog-style
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
  • Loading branch information
bparrishMines authored Jan 4, 2024
1 parent e573185 commit c6b86c5
Showing 1 changed file with 19 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import android.content.ClipData;
import android.content.Intent;
import android.net.Uri;
import androidx.test.core.app.ActivityScenario;
import androidx.test.espresso.intent.rule.IntentsRule;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import org.junit.Rule;
Expand All @@ -32,12 +33,28 @@ public class FileSelectorAndroidTest {

@Rule public IntentsRule intentsRule = new IntentsRule();

public void clearAnySystemDialog() {
myActivityTestRule
.getScenario()
.onActivity(
new ActivityScenario.ActivityAction<DriverExtensionActivity>() {
@Override
public void perform(DriverExtensionActivity activity) {
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
activity.sendBroadcast(closeDialog);
}
});
}

@Test
public void openImageFile() {
clearAnySystemDialog();

final Instrumentation.ActivityResult result =
new Instrumentation.ActivityResult(
Activity.RESULT_OK,
new Intent().setData(Uri.parse("content://file_selector_android_test/dummy.png")));

intending(hasAction(Intent.ACTION_OPEN_DOCUMENT)).respondWith(result);
onFlutterWidget(withText("Open an image")).perform(click());
onFlutterWidget(withText("Press to open an image file(png, jpg)")).perform(click());
Expand All @@ -48,6 +65,8 @@ public void openImageFile() {

@Test
public void openImageFiles() {
clearAnySystemDialog();

final ClipData.Item clipDataItem =
new ClipData.Item(Uri.parse("content://file_selector_android_test/dummy.png"));
final ClipData clipData = new ClipData("", new String[0], clipDataItem);
Expand Down

0 comments on commit c6b86c5

Please sign in to comment.