文件最后提交记录最后更新时间
[dependabot]: Bump com.squareup.okhttp3:okhttp from 5.3.0 to 5.3.1 in /packages/espresso/android (#10446) Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 5.3.0 to 5.3.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/square/okhttp/blob/master/CHANGELOG.md">com.squareup.okhttp3:okhttp's changelog</a>.</em></p> <blockquote> <h2>Version 5.3.1</h2> <p><em>2025-11-16</em></p> <ul> <li> <p>Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused timeouts to fire later than they were supposed to.</p> </li> <li> <p>Upgrade: [Okio 3.16.3][okio_3_16_3].</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/square/okhttp/commit/ef72228d270c21962ab632b4c5a0dfd7ab4fd661"><code>ef72228</code></a> Prepare for release 5.3.1.</li> <li><a href="https://github.com/square/okhttp/commit/674716746bb4efce30501b711ea3ec188c0d670d"><code>6747167</code></a> Update com.squareup.okio to v3.16.3 (<a href="https://redirect.github.com/square/okhttp/issues/9197">#9197</a>)</li> <li>See full diff in <a href="https://github.com/square/okhttp/compare/parent-5.3.0...parent-5.3.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=gradle&previous-version=5.3.0&new-version=5.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase. --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - @dependabot rebase will rebase this PR - @dependabot recreate will recreate this PR, overwriting any edits that have been made to it - @dependabot merge will merge this PR after your CI passes on it - @dependabot squash and merge will squash and merge this PR after your CI passes on it - @dependabot cancel merge will cancel a previously requested merge and block automerging - @dependabot reopen will reopen this PR if it is closed - @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency - @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>6 个月前
Update repo for 3.38 (#10405) Does all of the steps from https://github.com/flutter/flutter/blob/master/docs/ecosystem/release/Updating-Packages-repo-for-a-stable-release.md for the 3.38 release (except the first one, which the stable roller will handle). This includes a lot of autoformat changes, because the N-2 is now 3.32, which means many packages are now being updated to a min Dart SDK of 3.8, triggering a formatter behavior change.6 个月前
[espresso] Adds EspressoFlutter as a first-party plugin (#2369) * Initial open source release of Espresso bindings for Flutter as a new first-party plugin, espresso.6 年前
[espresso] Adds EspressoFlutter as a first-party plugin (#2369) * Initial open source release of Espresso bindings for Flutter as a new first-party plugin, espresso.6 年前
Standardize Copyrights: Chromium->Flutter (#2996) In all copyright messages (and in the Xcode project organization name) standardize on "The Flutter Authors", adding "The Chromium Authors" to the Flutter AUTHORS list. This reduces inconsistency in the copyright lines in this repository, moving closer to a single consistent copyright+license (as in flutter/engine and flutter/flutter) Updates the validation script to no longer accept "The Chromium Authors" or "the Chromium project authors" in first-party code.5 年前
[dependabot]: Bump com.squareup.okhttp3:okhttp from 5.3.0 to 5.3.1 in /packages/espresso/android (#10446) Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 5.3.0 to 5.3.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/square/okhttp/blob/master/CHANGELOG.md">com.squareup.okhttp3:okhttp's changelog</a>.</em></p> <blockquote> <h2>Version 5.3.1</h2> <p><em>2025-11-16</em></p> <ul> <li> <p>Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused timeouts to fire later than they were supposed to.</p> </li> <li> <p>Upgrade: [Okio 3.16.3][okio_3_16_3].</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/square/okhttp/commit/ef72228d270c21962ab632b4c5a0dfd7ab4fd661"><code>ef72228</code></a> Prepare for release 5.3.1.</li> <li><a href="https://github.com/square/okhttp/commit/674716746bb4efce30501b711ea3ec188c0d670d"><code>6747167</code></a> Update com.squareup.okio to v3.16.3 (<a href="https://redirect.github.com/square/okhttp/issues/9197">#9197</a>)</li> <li>See full diff in <a href="https://github.com/square/okhttp/compare/parent-5.3.0...parent-5.3.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=gradle&previous-version=5.3.0&new-version=5.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase. --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - @dependabot rebase will rebase this PR - @dependabot recreate will recreate this PR, overwriting any edits that have been made to it - @dependabot merge will merge this PR after your CI passes on it - @dependabot squash and merge will squash and merge this PR after your CI passes on it - @dependabot cancel merge will cancel a previously requested merge and block automerging - @dependabot reopen will reopen this PR if it is closed - @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency - @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>6 个月前
Remove "All right reserved" from all files (#10066) Per guidance from legal on current preferred practice, remove "All rights reserved" from all LICENSE files and header blocks, and update the repo tool check accordingly.7 个月前
[various] Standardize gradle dependencies (#10083) Standardizes dependencies in build.gradle files on using parentheses rather than space. Also standardizes these lines on " rather than ' while touching them, since that also moves closer to Kotlin syntax. This doesn't enforce this syntax via repo tool checks, since it's not critical (it just reduces future churn when switching to Kotlin), and eventually the switch to Kotlin will provide the enforcement. It does fix a latent issue where test-only dependency changes that used the () syntax wouldn't have been recognized by the tool as test-only changes for changelog/version check purposes. Part of https://github.com/flutter/flutter/issues/176065 ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.7 个月前
[dependabot]: Bump com.squareup.okhttp3:okhttp from 5.3.0 to 5.3.1 in /packages/espresso/android (#10446) Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 5.3.0 to 5.3.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/square/okhttp/blob/master/CHANGELOG.md">com.squareup.okhttp3:okhttp's changelog</a>.</em></p> <blockquote> <h2>Version 5.3.1</h2> <p><em>2025-11-16</em></p> <ul> <li> <p>Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused timeouts to fire later than they were supposed to.</p> </li> <li> <p>Upgrade: [Okio 3.16.3][okio_3_16_3].</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/square/okhttp/commit/ef72228d270c21962ab632b4c5a0dfd7ab4fd661"><code>ef72228</code></a> Prepare for release 5.3.1.</li> <li><a href="https://github.com/square/okhttp/commit/674716746bb4efce30501b711ea3ec188c0d670d"><code>6747167</code></a> Update com.squareup.okio to v3.16.3 (<a href="https://redirect.github.com/square/okhttp/issues/9197">#9197</a>)</li> <li>See full diff in <a href="https://github.com/square/okhttp/compare/parent-5.3.0...parent-5.3.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.squareup.okhttp3:okhttp&package-manager=gradle&previous-version=5.3.0&new-version=5.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase. --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - @dependabot rebase will rebase this PR - @dependabot recreate will recreate this PR, overwriting any edits that have been made to it - @dependabot merge will merge this PR after your CI passes on it - @dependabot squash and merge will squash and merge this PR after your CI passes on it - @dependabot cancel merge will cancel a previously requested merge and block automerging - @dependabot reopen will reopen this PR if it is closed - @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency - @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>6 个月前
README.md

espresso

Provides bindings for Espresso tests of Flutter Android apps.

Android
Support SDK 21+

Installation

Add the espresso package as a dev_dependency in your app's pubspec.yaml. If you're testing the example app of a package, add it as a dev_dependency of the main package as well.

Add android:usesCleartextTraffic="true" in the <application> in the AndroidManifest.xml of the Android app used for testing. It's best to put this in a debug or androidTest AndroidManifest.xml so that you don't ship it to end users. (See the example app of this package.)

Add the following dependencies in android/app/build.gradle:

dependencies {
    testImplementation("junit:junit:4.13.2")
    testImplementation("com.google.truth:truth:1.1.3")
    androidTestImplementation("androidx.test:runner:1.6.1")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
    api("androidx.test:core:1.2.0")
}

Create an android/app/src/androidTest folder and put a test file in a package-appropriate subfolder, e.g. android/app/src/androidTest/java/com/example/MainActivityTest.java:

package com.example.espresso_example;

import static androidx.test.espresso.flutter.EspressoFlutter.onFlutterWidget;
import static androidx.test.espresso.flutter.action.FlutterActions.click;
import static androidx.test.espresso.flutter.action.FlutterActions.syntheticClick;
import static androidx.test.espresso.flutter.assertion.FlutterAssertions.matches;
import static androidx.test.espresso.flutter.matcher.FlutterMatchers.isDescendantOf;
import static androidx.test.espresso.flutter.matcher.FlutterMatchers.withText;
import static androidx.test.espresso.flutter.matcher.FlutterMatchers.withTooltip;
import static androidx.test.espresso.flutter.matcher.FlutterMatchers.withType;
import static androidx.test.espresso.flutter.matcher.FlutterMatchers.withValueKey;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;

import androidx.test.core.app.ActivityScenario;
import androidx.test.espresso.flutter.EspressoFlutter.WidgetInteraction;
import androidx.test.espresso.flutter.assertion.FlutterAssertions;
import androidx.test.espresso.flutter.matcher.FlutterMatchers;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/** Unit tests for {@link EspressoFlutter}. */
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    @Before
    public void setUp() throws Exception {
        ActivityScenario.launch(MainActivity.class);
    }

    @Test
    public void performClick() {
        onFlutterWidget(withTooltip("Increment")).perform(click());
        onFlutterWidget(withValueKey("CountText")).check(matches(withText("Button tapped 1 time.")));
    }

You'll need to create a test app that enables the Flutter driver extension. You can put this in your test_driver/ folder, e.g. test_driver/example.dart. Replace <app_package_name> with the package name of your app. If you're developing a plugin, this will be the package name of the example app.

import 'package:flutter_driver/driver_extension.dart';
import 'package:<app_package_name>/main.dart' as app;

void main() {
  enableFlutterDriverExtension();
  app.main();
}

The following command line command runs the test locally:

./gradlew app:connectedAndroidTest -Ptarget=`pwd`/../test_driver/example.dart

Espresso tests can also be run on Firebase Test Lab:

./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=<path_to_test>.dart
gcloud auth activate-service-account --key-file=<PATH_TO_KEY_FILE>
gcloud --quiet config set project <PROJECT_NAME>
gcloud firebase test android run --type instrumentation \
  --app build/app/outputs/apk/debug/app-debug.apk \
  --test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk\
  --timeout 2m \
  --results-bucket=<RESULTS_BUCKET> \
  --results-dir=<RESULTS_DIRECTORY>