Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 22 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,23 @@ on:
env:
cache-version: v2

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Install Java 21
uses: actions/setup-java@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Install Java 21
uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4.9.1
with:
distribution: 'zulu'
java-version: '21'
- name: 'Cache Bazel files'
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.cache/bazel
key: ${{ runner.os }}-${{ env.cache-version }}-bazel-build-${{ github.sha }}
Expand All @@ -42,7 +45,7 @@ jobs:
cp bazel-bin/axt_m2repository.zip ~/download
shell: bash
- name: 'Upload local snapshot for tests'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: local-snapshot
path: ~/download
Expand All @@ -55,14 +58,14 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out repository code
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Install Java 21
uses: actions/setup-java@v4
uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4.9.1
with:
distribution: 'zulu'
java-version: '21'
- name: 'Cache Bazel files'
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.cache/bazel
key: ${{ runner.os }}-${{ env.cache-version }}-bazel-test-${{ github.sha }}
Expand All @@ -81,23 +84,21 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out repository code
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Install Java 21
uses: actions/setup-java@v4
uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4.9.1
with:
distribution: 'zulu'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: 'Cache Gradle files'
uses: gradle/gradle-build-action@v3
sudo udevadm trigger --name-match=kvm
- name: 'Download local snapshot for tests'
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: local-snapshot
path: ~/download
Expand All @@ -107,15 +108,19 @@ jobs:
unzip ~/download/axt_m2repository.zip -d ~/.m2/
shell: bash
- name: 'Setup Android SDK'
uses: android-actions/setup-android@v3
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3.2.2
with:
# The default value also includes the obsolete 'tools' package, which
# was removed from the SDK repository.
packages: 'platform-tools'
- name: 'Run gradle tests'
run: |
cd ${{ github.workspace }}/gradle-tests
./gradlew nexusOneDebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" --no-watch-fs --stacktrace
shell: bash
- name: 'Upload test reports'
if: success() || failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: test-reports
path: gradle-tests/**/build/reports/androidTests/
1 change: 1 addition & 0 deletions espresso/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ The following artifacts were released:
* Don't suppress AppNotIdleException if dumpThreadStates throws.
* Remove Espresso.onIdle tracing
* Fix NullPointerException in UiControllerImpl.
* Fix `isDisplayingAtLeast` matcher to factor in the scale of ancestor views.

**New Features**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -994,12 +994,21 @@ protected boolean matchesSafely(View view, Description mismatchDescription) {

Rect screen = getScreenWithoutStatusBarActionBar(view);

float viewHeight = (view.getHeight() > screen.height()) ? screen.height() : view.getHeight();
float viewWidth = (view.getWidth() > screen.width()) ? screen.width() : view.getWidth();
// Calculate cumulative scale from the view and its ancestors.
// Note: Assumes an axis-aligned hierarchy (no ancestor rotation).
float totalScaleX = view.getScaleX();
float totalScaleY = view.getScaleY();
ViewParent parent = view.getParent();
while (parent instanceof View) {
View parentView = (View) parent;
totalScaleX *= parentView.getScaleX();
totalScaleY *= parentView.getScaleY();
parent = parentView.getParent();
}

// factor in the View's scaleX and scaleY properties.
viewHeight = Math.min(view.getHeight() * Math.abs(view.getScaleY()), screen.height());
viewWidth = Math.min(view.getWidth() * Math.abs(view.getScaleX()), screen.width());
// factor in the View and its ancestors' scaleX and scaleY properties.
float viewHeight = Math.min(view.getHeight() * Math.abs(totalScaleY), screen.height());
float viewWidth = Math.min(view.getWidth() * Math.abs(totalScaleX), screen.width());

double maxArea = viewHeight * viewWidth;
double visibleArea = visibleParts.height() * visibleParts.width();
Expand Down
39 changes: 36 additions & 3 deletions espresso/core/javatests/androidx/test/espresso/matcher/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ load(
"//build_extensions:android_library_test.bzl",
"axt_android_library_test",
)
load("//build_extensions:axt_android_local_test.bzl", "axt_android_local_test")
load(
"//build_extensions:phone_devices.bzl",
"apis",
Expand Down Expand Up @@ -129,11 +130,8 @@ axt_android_library_test(
":utils",
"//core",
"//espresso/core/java/androidx/test/espresso",
"//espresso/core/java/androidx/test/espresso/action",
"//espresso/core/java/androidx/test/espresso/assertion",
"//espresso/core/java/androidx/test/espresso/matcher",
"//ext/junit",
"//opensource/androidx:annotation",
"//runner/android_junit_runner",
"//runner/rules",
"//testapps/ui_testapp/java/androidx/test/ui/app:lib_exported",
Expand Down Expand Up @@ -174,3 +172,38 @@ axt_android_library_test(
"@maven//:org_mockito_mockito_core",
],
)

axt_android_local_test(
name = "IsDisplayingAtLeastIntegrationTest",
srcs = ["IsDisplayingAtLeastIntegrationTest.java"],
deps = [
":utils",
"//core",
"//core/javatests/androidx/test/core/app/testing",
"//core/javatests/androidx/test/core/app/testing:manifest",
"//espresso/core/java/androidx/test/espresso",
"//espresso/core/java/androidx/test/espresso/assertion",
"//espresso/core/java/androidx/test/espresso/matcher",
"//ext/junit",
"//runner/android_junit_runner",
"@maven//:org_hamcrest_hamcrest_core",
],
)

axt_android_library_test(
name = "IsDisplayingAtLeastIntegrationTest_android",
srcs = ["IsDisplayingAtLeastIntegrationTest.java"],
deps = [
":utils",
"//core",
"//core/javatests/androidx/test/core/app/testing",
"//core/javatests/androidx/test/core/app/testing:manifest",
"//espresso/core/java/androidx/test/espresso",
"//espresso/core/java/androidx/test/espresso/assertion",
"//espresso/core/java/androidx/test/espresso/matcher",
"//ext/junit",
"//runner/android_junit_runner",
"@maven//:junit_junit",
"@maven//:org_hamcrest_hamcrest_core",
],
)
Loading
Loading