appium-espresso-driver 7.2.1 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [8.1.0](https://github.com/appium/appium-espresso-driver/compare/v8.0.0...v8.1.0) (2026-04-18)
2
+
3
+ ### Features
4
+
5
+ * add version catalog for Dependabot ([#1152](https://github.com/appium/appium-espresso-driver/issues/1152)) ([16ce10e](https://github.com/appium/appium-espresso-driver/commit/16ce10ea5e32ece75d5e7e55307d2fe2ccc20bc7))
6
+
7
+ ## [8.0.0](https://github.com/appium/appium-espresso-driver/compare/v7.2.1...v8.0.0) (2026-04-18)
8
+
9
+ ### ⚠ BREAKING CHANGES
10
+
11
+ * The default kotlin version is set to 2.3.20
12
+ * The required build tools version is set to 36.0.0
13
+ * Dropped AGP 8.x
14
+
15
+ ### Features
16
+
17
+ * Bump Gradle version ([#1151](https://github.com/appium/appium-espresso-driver/issues/1151)) ([1ae46bd](https://github.com/appium/appium-espresso-driver/commit/1ae46bd5025674e74bbf298c2d70a70b91e4eb60))
18
+
1
19
  ## [7.2.1](https://github.com/appium/appium-espresso-driver/compare/v7.2.0...v7.2.1) (2026-04-17)
2
20
 
3
21
  ### Miscellaneous Chores
@@ -1,8 +1,12 @@
1
1
  plugins {
2
- id("com.android.application")
3
- kotlin("android")
2
+ alias(libs.plugins.android.application)
4
3
  }
5
4
 
5
+ import io.appium.espressoserver.gradle.resolveCapabilityVersion
6
+ import io.appium.espressoserver.jvmtarget.AppiumJvmTarget
7
+ import org.gradle.api.GradleException
8
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
9
+
6
10
  val appiumCompileSdk: String by project
7
11
  val appiumMinSdk: String by project
8
12
  val appiumTargetSdk: String by project
@@ -11,17 +15,10 @@ val appiumTargetPackage: String by project
11
15
  val appiumSourceCompatibility: String by project
12
16
  val appiumTargetCompatibility: String by project
13
17
  val appiumJvmTarget: String by project
14
- val appiumKotlin: String by project
15
- val appiumAndroidxTestVersion: String by project
16
- val appiumAnnotationVersion: String by project
17
- val appiumComposeVersion: String by project
18
- val appiumGsonVersion: String by project
19
- val appiumEspressoVersion: String by project
20
- val appiumMockitoVersion: String by project
21
- val appiumNanohttpdVersion: String by project
22
- val appiumRobolectricVersion: String by project
23
- val appiumJUnitVersion: String by project
24
- val appiumUiAutomatorVersion: String by project
18
+
19
+ // Align androidTest dependency versions with :library when Espresso driver passes -PappiumJUnitVersion / -PappiumAndroidxTestVersion.
20
+ val junitVersion = resolveCapabilityVersion("appiumJUnitVersion", libs.versions.junit.get())
21
+ val androidxTestVersion = resolveCapabilityVersion("appiumAndroidxTestVersion", libs.versions.androidxTest.get())
25
22
 
26
23
  android {
27
24
  compileSdk = appiumCompileSdk.toInt()
@@ -45,7 +42,7 @@ android {
45
42
  buildTypes {
46
43
  getByName("release") {
47
44
  isMinifyEnabled = false
48
- proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
45
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
49
46
  }
50
47
  }
51
48
 
@@ -74,20 +71,29 @@ android {
74
71
  targetCompatibility = JavaVersion.valueOf(appiumTargetCompatibility.uppercase())
75
72
  }
76
73
 
77
- kotlinOptions {
78
- jvmTarget = appiumJvmTarget
79
- }
80
-
81
74
  packaging {
82
75
  resources.excludes.add("META-INF/**")
83
76
  }
84
77
  }
85
78
 
79
+ kotlin {
80
+ compilerOptions {
81
+ val normalized = AppiumJvmTarget.resolveNormalized(appiumJvmTarget)
82
+ jvmTarget.set(
83
+ JvmTarget.entries.firstOrNull { it.target == normalized }
84
+ ?: throw GradleException(
85
+ "Unsupported appiumJvmTarget \"$appiumJvmTarget\" (normalized \"$normalized\"). " +
86
+ "Use one of: ${JvmTarget.entries.joinToString { it.target }}",
87
+ ),
88
+ )
89
+ }
90
+ }
91
+
86
92
  dependencies {
87
93
  androidTestImplementation(project(":library"))
88
- androidTestImplementation("junit:junit:$appiumJUnitVersion")
89
- androidTestImplementation("androidx.test:core:$appiumAndroidxTestVersion")
90
- androidTestImplementation("androidx.test:runner:$appiumAndroidxTestVersion")
94
+ androidTestImplementation("junit:junit:$junitVersion")
95
+ androidTestImplementation("androidx.test:core:$androidxTestVersion")
96
+ androidTestImplementation("androidx.test:runner:$androidxTestVersion")
91
97
 
92
98
  // additionalAndroidTestDependencies placeholder (don't change or delete this line)
93
99
  }
@@ -1,31 +1,14 @@
1
1
  // Top-level build file where you can add configuration options common to all sub-projects/modules.
2
2
 
3
- buildscript {
4
- val appiumKotlin: String by project
5
- val appiumAndroidGradlePlugin: String by project
6
-
7
- repositories {
8
- google()
9
- mavenCentral()
10
- }
11
- dependencies {
12
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$appiumKotlin")
13
- classpath("com.android.tools.build:gradle:$appiumAndroidGradlePlugin")
14
-
15
- // NOTE: Do not place your application dependencies here; they belong
16
- // in the individual module build.gradle.kts files
17
- }
3
+ plugins {
4
+ alias(libs.plugins.android.application) apply false
5
+ alias(libs.plugins.android.library) apply false
18
6
  }
19
7
 
20
8
  allprojects {
21
- repositories {
22
- google()
23
- mavenCentral()
24
- }
25
-
26
9
  group = "io.appium.espressoserver"
27
10
  }
28
11
 
29
12
  tasks.register("clean", Delete::class) {
30
- delete(rootProject.buildDir)
13
+ delete(rootProject.layout.buildDirectory)
31
14
  }
@@ -0,0 +1,13 @@
1
+ plugins {
2
+ `kotlin-dsl`
3
+ }
4
+
5
+ repositories {
6
+ mavenCentral()
7
+ }
8
+
9
+ java {
10
+ toolchain {
11
+ languageVersion.set(JavaLanguageVersion.of(17))
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ package io.appium.espressoserver.gradle
2
+
3
+ import org.gradle.api.Project
4
+
5
+ /**
6
+ * Resolves a dependency version from an optional Gradle property (e.g. `-PappiumKotlin=…` from the
7
+ * Espresso driver's `toolsVersions` / `espressoBuildConfig`) with fallback to the version catalog default.
8
+ */
9
+ fun Project.resolveCapabilityVersion(propertyName: String, catalogDefaultVersion: String): String {
10
+ val fromCapability = findProperty(propertyName)?.toString()?.trim()
11
+ return if (!fromCapability.isNullOrEmpty()) fromCapability else catalogDefaultVersion
12
+ }
@@ -0,0 +1,54 @@
1
+ package io.appium.espressoserver.jvmtarget
2
+
3
+ import org.gradle.api.GradleException
4
+
5
+ /**
6
+ * Normalizes and validates `appiumJvmTarget` / `-PappiumJvmTarget=…` from Gradle properties.
7
+ *
8
+ * Normalizes values (e.g. `1_8`, `8`, `VERSION_1_8`). Default `1.8` is the project baseline for emitted JVM
9
+ * bytecode (Java 8 language level). Call sites map the returned string to [org.jetbrains.kotlin.gradle.dsl.JvmTarget].
10
+ */
11
+ object AppiumJvmTarget {
12
+
13
+ private fun normalizeAppiumJvmTarget(raw: String): String {
14
+ val trimmed = raw.trim()
15
+ if (trimmed.isEmpty()) {
16
+ return "1.8"
17
+ }
18
+ val withoutVersionPrefix = Regex("^VERSION_", RegexOption.IGNORE_CASE).replace(trimmed, "")
19
+ val dotted = withoutVersionPrefix.replace('_', '.')
20
+ return when (dotted) {
21
+ "8" -> "1.8"
22
+ else -> dotted
23
+ }
24
+ }
25
+
26
+ /** Java bytecode level as a single integer (8 for 1.8, 11, 17, …). */
27
+ private fun jvmBytecodeLevel(normalizedTarget: String): Int =
28
+ when {
29
+ normalizedTarget == "1.8" -> 8
30
+ normalizedTarget.startsWith("1.") ->
31
+ throw GradleException(
32
+ "Unsupported JVM target \"$normalizedTarget\". Use 1.8 (Java 8) for legacy 1.x bytecode.",
33
+ )
34
+ else ->
35
+ normalizedTarget.toIntOrNull()
36
+ ?: throw GradleException(
37
+ "Invalid appiumJvmTarget \"$normalizedTarget\" (expected e.g. 1.8, 11, or 17).",
38
+ )
39
+ }
40
+
41
+ /**
42
+ * Returns the normalized JVM target string (e.g. `1.8`, `17`) for Kotlin [org.jetbrains.kotlin.gradle.dsl.JvmTarget].
43
+ */
44
+ fun resolveNormalized(appiumJvmTargetProperty: String): String {
45
+ val normalized = normalizeAppiumJvmTarget(appiumJvmTargetProperty)
46
+ val level = jvmBytecodeLevel(normalized)
47
+ if (level < 8) {
48
+ throw GradleException(
49
+ "Minimum supported appiumJvmTarget is 1.8 / Java 8 (bytecode level was $level from \"$appiumJvmTargetProperty\").",
50
+ )
51
+ }
52
+ return normalized
53
+ }
54
+ }
@@ -0,0 +1,16 @@
1
+ [versions]
2
+ androidGradlePlugin = "9.1.1"
3
+ kotlin = "2.3.20"
4
+ androidxTest = "1.5.0"
5
+ annotation = "1.6.0"
6
+ composeUiTest = "1.1.1"
7
+ gson = "2.10.1"
8
+ espresso = "3.5.1"
9
+ nanohttpd = "2.3.1"
10
+ robolectric = "4.9.2"
11
+ junit = "4.13.2"
12
+ uiautomator = "2.2.0"
13
+
14
+ [plugins]
15
+ android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
16
+ android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
@@ -1,6 +1,6 @@
1
1
  distributionBase=GRADLE_USER_HOME
2
2
  distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
4
4
  networkTimeout=10000
5
5
  validateDistributionUrl=true
6
6
  zipStoreBase=GRADLE_USER_HOME
@@ -28,21 +28,10 @@ kotlin.stdlib.default.dependency=false
28
28
  appiumCompileSdk=34
29
29
  appiumMinSdk=26
30
30
  appiumTargetSdk=34
31
- appiumBuildTools=34.0.0
31
+ appiumBuildTools=36.0.0
32
32
  appiumTargetPackage=io.appium.espressoserver
33
33
  appiumSourceCompatibility=VERSION_1_8
34
34
  appiumTargetCompatibility=VERSION_1_8
35
35
  appiumJvmTarget=1.8
36
36
 
37
- appiumAndroidGradlePlugin=8.13.0
38
- appiumKotlin=1.8.10
39
- appiumAndroidxTestVersion=1.5.0
40
- appiumAnnotationVersion=1.6.0
41
- appiumComposeVersion=1.1.1
42
- appiumGsonVersion=2.10.1
43
- appiumEspressoVersion=3.5.1
44
- appiumMockitoVersion=5.1.1
45
- appiumNanohttpdVersion=2.3.1
46
- appiumRobolectricVersion=4.9.2
47
- appiumJUnitVersion=4.13.2
48
- appiumUiAutomatorVersion=2.2.0
37
+ # Dependency and plugin versions for Dependabot live in gradle/libs.versions.toml
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  #
4
- # Copyright © 2015-2021 the original authors.
4
+ # Copyright © 2015 the original authors.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -57,7 +57,7 @@
57
57
  # Darwin, MinGW, and NonStop.
58
58
  #
59
59
  # (3) This script is generated from the Groovy template
60
- # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
60
+ # https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
61
61
  # within the Gradle project.
62
62
  #
63
63
  # You can find Gradle at https://github.com/gradle/gradle/.
@@ -114,7 +114,6 @@ case "$( uname )" in #(
114
114
  NONSTOP* ) nonstop=true ;;
115
115
  esac
116
116
 
117
- CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
118
117
 
119
118
 
120
119
  # Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
172
171
  # For Cygwin or MSYS, switch paths to Windows format before running java
173
172
  if "$cygwin" || "$msys" ; then
174
173
  APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
175
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
176
174
 
177
175
  JAVACMD=$( cygpath --unix "$JAVACMD" )
178
176
 
@@ -212,8 +210,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
212
210
 
213
211
  set -- \
214
212
  "-Dorg.gradle.appname=$APP_BASE_NAME" \
215
- -classpath "$CLASSPATH" \
216
- org.gradle.wrapper.GradleWrapperMain \
213
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
217
214
  "$@"
218
215
 
219
216
  # Stop when "xargs" is not available.
@@ -70,11 +70,10 @@ goto fail
70
70
  :execute
71
71
  @rem Setup the command line
72
72
 
73
- set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
74
73
 
75
74
 
76
75
  @rem Execute Gradle
77
- "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
76
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
78
77
 
79
78
  :end
80
79
  @rem End local scope for the variables with windows NT shell
@@ -1,9 +1,13 @@
1
1
  plugins {
2
- id("com.android.library")
3
- kotlin("android")
2
+ alias(libs.plugins.android.library)
4
3
  `maven-publish`
5
4
  }
6
5
 
6
+ import io.appium.espressoserver.gradle.resolveCapabilityVersion
7
+ import io.appium.espressoserver.jvmtarget.AppiumJvmTarget
8
+ import org.gradle.api.GradleException
9
+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
10
+
7
11
  val appiumCompileSdk: String by project
8
12
  val appiumMinSdk: String by project
9
13
  val appiumTargetSdk: String by project
@@ -11,16 +15,19 @@ val appiumBuildTools: String by project
11
15
  val appiumSourceCompatibility: String by project
12
16
  val appiumTargetCompatibility: String by project
13
17
  val appiumJvmTarget: String by project
14
- val appiumKotlin: String by project
15
- val appiumAndroidxTestVersion: String by project
16
- val appiumAnnotationVersion: String by project
17
- val appiumComposeVersion: String by project
18
- val appiumGsonVersion: String by project
19
- val appiumEspressoVersion: String by project
20
- val appiumNanohttpdVersion: String by project
21
- val appiumRobolectricVersion: String by project
22
- val appiumJUnitVersion: String by project
23
- val appiumUiAutomatorVersion: String by project
18
+
19
+ // Versions: defaults from gradle/libs.versions.toml; -Pappium* overrides from Espresso driver (toolsVersions / capabilities).
20
+ val kotlinVersion = resolveCapabilityVersion("appiumKotlin", libs.versions.kotlin.get())
21
+ val annotationVersion = resolveCapabilityVersion("appiumAnnotationVersion", libs.versions.annotation.get())
22
+ val composeUiTestVersion =
23
+ resolveCapabilityVersion("appiumComposeVersion", libs.versions.composeUiTest.get())
24
+ val gsonVersion = resolveCapabilityVersion("appiumGsonVersion", libs.versions.gson.get())
25
+ val espressoVersion = resolveCapabilityVersion("appiumEspressoVersion", libs.versions.espresso.get())
26
+ val nanohttpdVersion = resolveCapabilityVersion("appiumNanohttpdVersion", libs.versions.nanohttpd.get())
27
+ val androidxTestVersion = resolveCapabilityVersion("appiumAndroidxTestVersion", libs.versions.androidxTest.get())
28
+ val robolectricVersion = resolveCapabilityVersion("appiumRobolectricVersion", libs.versions.robolectric.get())
29
+ val junitVersion = resolveCapabilityVersion("appiumJUnitVersion", libs.versions.junit.get())
30
+ val uiautomatorVersion = resolveCapabilityVersion("appiumUiAutomatorVersion", libs.versions.uiautomator.get())
24
31
 
25
32
  android {
26
33
  compileSdk = appiumCompileSdk.toInt()
@@ -40,10 +47,6 @@ android {
40
47
  resources.excludes.add("META-INF/**")
41
48
  }
42
49
 
43
- kotlinOptions {
44
- jvmTarget = appiumJvmTarget
45
- }
46
-
47
50
  lint {
48
51
  targetSdk = appiumTargetSdk.toInt()
49
52
  }
@@ -60,6 +63,19 @@ android {
60
63
  }
61
64
  }
62
65
 
66
+ kotlin {
67
+ compilerOptions {
68
+ val normalized = AppiumJvmTarget.resolveNormalized(appiumJvmTarget)
69
+ jvmTarget.set(
70
+ JvmTarget.entries.firstOrNull { it.target == normalized }
71
+ ?: throw GradleException(
72
+ "Unsupported appiumJvmTarget \"$appiumJvmTarget\" (normalized \"$normalized\"). " +
73
+ "Use one of: ${JvmTarget.entries.joinToString { it.target }}",
74
+ ),
75
+ )
76
+ }
77
+ }
78
+
63
79
  publishing {
64
80
  publications {
65
81
  register<MavenPublication>("release") {
@@ -73,39 +89,39 @@ publishing {
73
89
  dependencies {
74
90
  // additionalAppDependencies placeholder (don't change or delete this line)
75
91
 
76
- api("androidx.annotation:annotation:$appiumAnnotationVersion")
77
- api("androidx.test.espresso:espresso-contrib:$appiumEspressoVersion") {
92
+ api("androidx.annotation:annotation:$annotationVersion")
93
+ api("androidx.test.espresso:espresso-contrib:$espressoVersion") {
78
94
  // Exclude transitive dependencies to limit conflicts with AndroidX libraries from AUT.
79
95
  // Link to PR with fix and discussion https://github.com/appium/appium-espresso-driver/pull/596
80
96
  isTransitive = false
81
97
  }
82
- api("androidx.test.espresso:espresso-web:$appiumEspressoVersion") {
98
+ api("androidx.test.espresso:espresso-web:$espressoVersion") {
83
99
  because("Espresso Web Atoms support (mobile: webAtoms)")
84
100
  }
85
- api("androidx.test.uiautomator:uiautomator:$appiumUiAutomatorVersion") {
101
+ api("androidx.test.uiautomator:uiautomator:$uiautomatorVersion") {
86
102
  because("UiAutomator support (mobile: uiautomator)")
87
103
  }
88
- api("androidx.test:core:$appiumAndroidxTestVersion")
89
- api("androidx.test:runner:$appiumAndroidxTestVersion")
90
- api("androidx.test:rules:$appiumAndroidxTestVersion")
91
- api("com.google.code.gson:gson:$appiumGsonVersion")
92
- api("org.nanohttpd:nanohttpd-webserver:$appiumNanohttpdVersion")
93
- api("org.jetbrains.kotlin:kotlin-stdlib:$appiumKotlin")
94
- api("org.jetbrains.kotlin:kotlin-reflect:$appiumKotlin")
95
- api("androidx.compose.ui:ui-test:$appiumComposeVersion") {
104
+ api("androidx.test:core:$androidxTestVersion")
105
+ api("androidx.test:runner:$androidxTestVersion")
106
+ api("androidx.test:rules:$androidxTestVersion")
107
+ api("com.google.code.gson:gson:$gsonVersion")
108
+ api("org.nanohttpd:nanohttpd-webserver:$nanohttpdVersion")
109
+ api("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
110
+ api("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
111
+ api("androidx.compose.ui:ui-test:$composeUiTestVersion") {
96
112
  because("Android Compose support")
97
113
  }
98
- api("androidx.compose.ui:ui-test-junit4:$appiumComposeVersion") {
114
+ api("androidx.compose.ui:ui-test-junit4:$composeUiTestVersion") {
99
115
  because("Android Compose support")
100
116
  }
101
117
 
102
- testImplementation("androidx.test.espresso:espresso-contrib:$appiumEspressoVersion")
103
- testImplementation("junit:junit:$appiumJUnitVersion")
104
- testImplementation("org.robolectric:robolectric:$appiumRobolectricVersion")
105
- testImplementation("org.jetbrains.kotlin:kotlin-test:$appiumKotlin")
106
- testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$appiumKotlin")
118
+ testImplementation("androidx.test.espresso:espresso-contrib:$espressoVersion")
119
+ testImplementation("junit:junit:$junitVersion")
120
+ testImplementation("org.robolectric:robolectric:$robolectricVersion")
121
+ testImplementation("org.jetbrains.kotlin:kotlin-test:$kotlinVersion")
122
+ testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion")
107
123
 
108
124
  constraints {
109
- api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$appiumKotlin")
125
+ api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
110
126
  }
111
127
  }
@@ -2,6 +2,6 @@ package io.appium.espressoserver.lib.helpers
2
2
 
3
3
  // This value is updated automatically by the NPM versioning script
4
4
  // It should be in sync with the NPM module version from package.json
5
- private const val VERSION = "7.2.1"
5
+ private const val VERSION = "8.1.0"
6
6
 
7
7
  fun getEspressoServerVersion() = VERSION
@@ -49,7 +49,7 @@ class WebAtomTest {
49
49
  jsonObject.add("args", argsArr)
50
50
  val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
51
51
  assertEquals(webAtom.name, "someFakeAtom")
52
- assertTrue(webAtom.args contentEquals arrayOf("hello", true, 100, 1.1))
52
+ assertTrue(webAtom.args contentEquals arrayOf<Any>("hello", true, 100, 1.1))
53
53
  assertEquals(webAtom.args.size, 4)
54
54
  }
55
55
 
@@ -63,6 +63,6 @@ class WebAtomTest {
63
63
  jsonObject.add("locator", locatorObject)
64
64
  val webAtom = WebAtomDeserializer().deserialize(jsonObject, null, null)
65
65
  assertEquals(webAtom.name, "findElement")
66
- assertTrue(webAtom.args contentEquals arrayOf(Locator.ID, "some_html_id"))
66
+ assertTrue(webAtom.args contentEquals arrayOf<Any>(Locator.ID, "some_html_id"))
67
67
  }
68
68
  }
@@ -24,7 +24,7 @@ class WebAtomsTest {
24
24
  }""".trimIndent(), WebAtomsMethod::class.java)
25
25
  assertEquals(webAtomsMethod.name, "withElement")
26
26
  assertEquals(webAtomsMethod.atom.name, "findElement")
27
- assertTrue(webAtomsMethod.atom.args contentEquals arrayOf(Locator.ID, "text_input"))
27
+ assertTrue(webAtomsMethod.atom.args contentEquals arrayOf<Any>(Locator.ID, "text_input"))
28
28
  }
29
29
 
30
30
  @Test
@@ -77,7 +77,7 @@ class WebAtomsTest {
77
77
  webAtoms.methodChain[0].let {
78
78
  assertEquals(it.name, "withElement")
79
79
  assertEquals(it.atom.name, "findElement")
80
- assertTrue(it.atom.args contentEquals arrayOf(Locator.ID, "text_input"))
80
+ assertTrue(it.atom.args contentEquals arrayOf<Any>(Locator.ID, "text_input"))
81
81
  }
82
82
 
83
83
  webAtoms.methodChain[1].let {
@@ -89,7 +89,7 @@ class WebAtomsTest {
89
89
  webAtoms.methodChain[2].let {
90
90
  assertEquals(it.name, "perform")
91
91
  assertEquals(it.atom.name, "webKeys")
92
- assertTrue(it.atom.args contentEquals arrayOf("Foo"))
92
+ assertTrue(it.atom.args contentEquals arrayOf<Any>("Foo"))
93
93
  }
94
94
 
95
95
  }
@@ -1,2 +1,32 @@
1
+ pluginManagement {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ gradlePluginPortal()
6
+ }
7
+
8
+ // When Espresso driver passes -PappiumAndroidGradlePlugin, override the AGP version from the
9
+ // version catalog. Otherwise keep Gradle's catalog-resolved requested version (no regex/TOML parse).
10
+ resolutionStrategy {
11
+ eachPlugin {
12
+ if (requested.id.id == "com.android.application" || requested.id.id == "com.android.library") {
13
+ val fromCapability =
14
+ providers.gradleProperty("appiumAndroidGradlePlugin").orNull?.trim()?.takeIf { it.isNotEmpty() }
15
+ if (fromCapability != null) {
16
+ useVersion(fromCapability)
17
+ }
18
+ }
19
+ }
20
+ }
21
+ }
22
+
23
+ dependencyResolutionManagement {
24
+ repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
25
+ repositories {
26
+ google()
27
+ mavenCentral()
28
+ }
29
+ }
30
+
1
31
  include(":app")
2
32
  include(":library")
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-espresso-driver",
3
- "version": "7.2.1",
3
+ "version": "8.1.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-espresso-driver",
9
- "version": "7.2.1",
9
+ "version": "8.1.0",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "appium-adb": "^14.0.0",
@@ -421,9 +421,9 @@
421
421
  "license": "MIT"
422
422
  },
423
423
  "node_modules/@xmldom/xmldom": {
424
- "version": "0.9.9",
425
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.9.tgz",
426
- "integrity": "sha512-qycIHAucxy/LXAYIjmLmtQ8q9GPnMbnjG1KXhWm9o5sCr6pOYDATkMPiTNa6/v8eELyqOQ2FsEqeoFYmgv/gJg==",
424
+ "version": "0.9.10",
425
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz",
426
+ "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==",
427
427
  "license": "MIT",
428
428
  "engines": {
429
429
  "node": ">=14.6"
@@ -812,9 +812,9 @@
812
812
  }
813
813
  },
814
814
  "node_modules/bare-url": {
815
- "version": "2.4.0",
816
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz",
817
- "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==",
815
+ "version": "2.4.1",
816
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.1.tgz",
817
+ "integrity": "sha512-fZapLWNB25gS+etK27NV9KgBNXgo2yeYHuj+OyPblQd6GYAE3JVy6aKxszMV5jhGGFwraXQKA5fldvf3lMyEqw==",
818
818
  "license": "Apache-2.0",
819
819
  "dependencies": {
820
820
  "bare-path": "^3.0.0"
@@ -1872,9 +1872,9 @@
1872
1872
  }
1873
1873
  },
1874
1874
  "node_modules/hasown": {
1875
- "version": "2.0.2",
1876
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1877
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1875
+ "version": "2.0.3",
1876
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
1877
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
1878
1878
  "license": "MIT",
1879
1879
  "dependencies": {
1880
1880
  "function-bind": "^1.1.2"
@@ -2031,9 +2031,9 @@
2031
2031
  }
2032
2032
  },
2033
2033
  "node_modules/io.appium.settings": {
2034
- "version": "7.0.22",
2035
- "resolved": "https://registry.npmjs.org/io.appium.settings/-/io.appium.settings-7.0.22.tgz",
2036
- "integrity": "sha512-LBKquRGIRfYG9qk8Y2CkOhuk4dDRSGNzcPoMy5a2/lopTpHPvJz+FQOXfcPVQ23qgbCE7GJH7chYKvlJrFOPZA==",
2034
+ "version": "7.0.23",
2035
+ "resolved": "https://registry.npmjs.org/io.appium.settings/-/io.appium.settings-7.0.23.tgz",
2036
+ "integrity": "sha512-/Tx216t06td2/mPY3+RjO///5qF0NUqStZm2BW6/3mUCwxHdRw+e9+S/QwOsGKNDAvEIyQ6VR+JCdxy1DHCscA==",
2037
2037
  "license": "Apache-2.0",
2038
2038
  "dependencies": {
2039
2039
  "@appium/logger": "^2.0.0-rc.1",
@@ -2704,9 +2704,9 @@
2704
2704
  }
2705
2705
  },
2706
2706
  "node_modules/plist/node_modules/@xmldom/xmldom": {
2707
- "version": "0.8.12",
2708
- "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz",
2709
- "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==",
2707
+ "version": "0.8.13",
2708
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz",
2709
+ "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==",
2710
2710
  "license": "MIT",
2711
2711
  "engines": {
2712
2712
  "node": ">=10.0.0"
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "automated testing",
8
8
  "android"
9
9
  ],
10
- "version": "7.2.1",
10
+ "version": "8.1.0",
11
11
  "author": "Appium Contributors",
12
12
  "license": "Apache-2.0",
13
13
  "repository": {
@@ -64,6 +64,7 @@
64
64
  "espresso-server/gradlew.bat",
65
65
  "espresso-server/gradle.properties",
66
66
  "espresso-server/build.gradle.kts",
67
+ "espresso-server/buildSrc",
67
68
  "espresso-server/settings.gradle.kts",
68
69
  "espresso-server/lint.xml",
69
70
  "!.DS_Store",