detox 20.42.0 → 20.43.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.
Files changed (43) hide show
  1. package/Detox-android/com/wix/detox/{20.42.0/detox-20.42.0-sources.jar → 20.43.0/detox-20.43.0-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.aar +0 -0
  7. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.aar.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.aar.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.aar.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.aar.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/{20.42.0/detox-20.42.0.pom → 20.43.0/detox-20.43.0.pom} +1 -1
  12. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.pom.md5 +1 -0
  13. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.pom.sha1 +1 -0
  14. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.pom.sha256 +1 -0
  15. package/Detox-android/com/wix/detox/20.43.0/detox-20.43.0.pom.sha512 +1 -0
  16. package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
  17. package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
  18. package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
  19. package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
  20. package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
  21. package/Detox-ios-framework.tbz +0 -0
  22. package/Detox-ios-src.tbz +0 -0
  23. package/Detox-ios-xcuitest.tbz +0 -0
  24. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/animations/AnimatedModuleIdlingResource.kt +26 -9
  25. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt +10 -2
  26. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt +14 -2
  27. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  28. package/android/rninfo.gradle +5 -0
  29. package/package.json +10 -10
  30. package/scripts/updateGradle.js +5 -0
  31. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0-sources.jar.md5 +0 -1
  32. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0-sources.jar.sha1 +0 -1
  33. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0-sources.jar.sha256 +0 -1
  34. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0-sources.jar.sha512 +0 -1
  35. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.aar +0 -0
  36. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.aar.md5 +0 -1
  37. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.aar.sha1 +0 -1
  38. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.aar.sha256 +0 -1
  39. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.aar.sha512 +0 -1
  40. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.pom.md5 +0 -1
  41. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.pom.sha1 +0 -1
  42. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.pom.sha256 +0 -1
  43. package/Detox-android/com/wix/detox/20.42.0/detox-20.42.0.pom.sha512 +0 -1
@@ -0,0 +1 @@
1
+ 016ffb2e4c490e01beafd1146a3a8353
@@ -0,0 +1 @@
1
+ 097c3dad67f1dea0e2cdf756732aff413940b2c3
@@ -0,0 +1 @@
1
+ db8f2eb0cd02d2373018228e130132dc7d206625fcc2d7a54e6d9fa5a2d1f2e0
@@ -0,0 +1 @@
1
+ 011ea72685f18e86f4ab86048a93fa47ff5e213bfcc83b9c7eb3fec558668c895f09479a083cca75fa0e0b4306e7ac808db22d2dbdb16f7732bfd03df2a7f929
@@ -0,0 +1 @@
1
+ c9638ce7992b4b6dfe4f83030aef5169
@@ -0,0 +1 @@
1
+ a2ed68ce4b428750daf9a3542447273ee1c171d3
@@ -0,0 +1 @@
1
+ 52c115c682f497fb9925388a3e3b607e6c8a2742a71547e2aeca2457c048c6c6
@@ -0,0 +1 @@
1
+ 1ff3bc63cd2de2916880bec7572f7fd48612955d6192a094af89edc97daa88c03b7d646999dda185900875337de07898e523e96067e284fd1137ce35c1c18baa
@@ -3,7 +3,7 @@
3
3
  <modelVersion>4.0.0</modelVersion>
4
4
  <groupId>com.wix</groupId>
5
5
  <artifactId>detox</artifactId>
6
- <version>20.42.0</version>
6
+ <version>20.43.0</version>
7
7
  <packaging>aar</packaging>
8
8
  <name>Detox</name>
9
9
  <description>Gray box end-to-end testing and automation library for mobile apps</description>
@@ -0,0 +1 @@
1
+ 17c5883f432236d65c08fef7086af8b6
@@ -0,0 +1 @@
1
+ 06dfe524847a88faedbf0360272b4aaff6be4da0
@@ -0,0 +1 @@
1
+ 5394023ab0482b86513f82bfb0072233bb04d5b809a05d804085a2cd59c677a5
@@ -0,0 +1 @@
1
+ 8433d0f377655a489d92691746233edc865b1040318b708f0a451aade0254bda5989a7bcd042ffe8ecd3e65fc636b0e945a58c86d616b590e6c24ed8974402a1
@@ -3,11 +3,11 @@
3
3
  <groupId>com.wix</groupId>
4
4
  <artifactId>detox</artifactId>
5
5
  <versioning>
6
- <latest>20.42.0</latest>
7
- <release>20.42.0</release>
6
+ <latest>20.43.0</latest>
7
+ <release>20.43.0</release>
8
8
  <versions>
9
- <version>20.42.0</version>
9
+ <version>20.43.0</version>
10
10
  </versions>
11
- <lastUpdated>20250925083025</lastUpdated>
11
+ <lastUpdated>20251005174840</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- cffd00ec1fa7d24dfa670f1f73cb2157
1
+ 886f630a5f15d5956dc1ee88ddc28a93
@@ -1 +1 @@
1
- 2f1f1e00242921f53643aeea67e863765c97bdef
1
+ 9827172d9c41c9c0b8aebcafed3c6aa9fdee38f3
@@ -1 +1 @@
1
- be3543d79c53d124eb70e536793549e36b7f2a5c196b524f55d39cdb322a3216
1
+ f72c0489fa076f46a4b8f1f067a2d61d92d8b1e6b803abd1a7497197da9bdf23
@@ -1 +1 @@
1
- 003eb81934b9bf5c98fc53dfa0d8871d436a7ef88fd0d430206672a38c898e47c4535ca1a2b621a65163b4c672fbbf65daba9ed9dbc0ee17461a64c674d63cd6
1
+ cbaade5e87589c6fb562c9434649cf4097519e46df99f89d5f18169b1bdc623afbced20c9f2631110773d7c35e2751358669f23b7aef6949feb01b035468686e
Binary file
package/Detox-ios-src.tbz CHANGED
Binary file
Binary file
@@ -9,7 +9,9 @@ import com.facebook.react.animated.NativeAnimatedNodesManager
9
9
  import com.facebook.react.bridge.ReactContext
10
10
  import com.wix.detox.common.DetoxErrors
11
11
  import com.wix.detox.common.DetoxLog.Companion.LOG_TAG
12
+ import com.wix.detox.reactnative.ReactNativeInfo
12
13
  import com.wix.detox.reactnative.idlingresources.DetoxIdlingResource
14
+ import kotlin.reflect.KProperty1
13
15
  import kotlin.reflect.full.memberFunctions
14
16
  import kotlin.reflect.full.memberProperties
15
17
  import kotlin.reflect.jvm.isAccessible
@@ -72,15 +74,19 @@ private class AnimatedModuleFacade(private val animatedModule: NativeAnimatedMod
72
74
  private val nodesManager: NativeAnimatedNodesManager
73
75
 
74
76
  init {
75
- operationsQueue = (NativeAnimatedModule::class.memberProperties.find { it.name == "mOperations" } ?:
76
- throw DetoxErrors.DetoxIllegalStateException("mOperations property cannot be accessed")).let {
77
+ val operationsQueueName = if (ReactNativeInfo.rnVersion().minor > 79) "operations" else "mOperations"
78
+ val preOperationsQueueName = if (ReactNativeInfo.rnVersion().minor > 79) "preOperations" else "mPreOperations"
79
+
80
+
81
+ operationsQueue = (NativeAnimatedModule::class.memberProperties.find { it.name == operationsQueueName } ?:
82
+ throw DetoxErrors.DetoxIllegalStateException("$operationsQueueName property cannot be accessed")).let {
77
83
 
78
84
  it.isAccessible = true
79
85
  OperationsQueueReflected(it.get(animatedModule) as Any)
80
86
  }
81
87
 
82
- preOperationsQueue = (NativeAnimatedModule::class.memberProperties.find { it.name == "mPreOperations" } ?:
83
- throw DetoxErrors.DetoxIllegalStateException("mPreOperations property cannot be accessed")).let {
88
+ preOperationsQueue = (NativeAnimatedModule::class.memberProperties.find { it.name == preOperationsQueueName } ?:
89
+ throw DetoxErrors.DetoxIllegalStateException("$preOperationsQueueName property cannot be accessed")).let {
84
90
 
85
91
  it.isAccessible = true
86
92
  OperationsQueueReflected(it.get(animatedModule) as Any)
@@ -103,10 +109,21 @@ private class AnimatedModuleFacade(private val animatedModule: NativeAnimatedMod
103
109
 
104
110
  class OperationsQueueReflected(private val operationsQueue: Any) {
105
111
  fun isEmpty(): Boolean {
106
- val isEmptyMethod = operationsQueue::class.memberFunctions.find { it.name == "isEmpty" } ?:
107
- throw DetoxErrors.DetoxIllegalStateException("isEmpty method cannot be reached")
108
-
109
- isEmptyMethod.isAccessible = true
110
- return isEmptyMethod.call(operationsQueue) as Boolean
112
+ // Try method first (works in release builds)
113
+ val isEmptyMethod = operationsQueue::class.memberFunctions.find { it.name == "isEmpty" }
114
+ if (isEmptyMethod != null) {
115
+ isEmptyMethod.isAccessible = true
116
+ return isEmptyMethod.call(operationsQueue) as Boolean
117
+ }
118
+
119
+ // Fallback to property (works in debug builds for RN 0.80+)
120
+ val isEmptyProperty = operationsQueue::class.memberProperties.find { it.name == "isEmpty" }
121
+ if (isEmptyProperty != null) {
122
+ isEmptyProperty.isAccessible = true
123
+ @Suppress("UNCHECKED_CAST")
124
+ return (isEmptyProperty as KProperty1<Any, *>).get(operationsQueue) as Boolean
125
+ }
126
+
127
+ throw DetoxErrors.DetoxIllegalStateException("isEmpty method/property cannot be reached")
111
128
  }
112
129
  }
@@ -3,6 +3,7 @@ package com.wix.detox.reactnative.idlingresources.network
3
3
  import android.util.Log
4
4
  import com.facebook.react.bridge.ReactContext
5
5
  import com.facebook.react.modules.network.NetworkingModule
6
+ import com.wix.detox.reactnative.ReactNativeInfo
6
7
  import okhttp3.OkHttpClient
7
8
  import org.joor.Reflect
8
9
  import org.joor.ReflectException
@@ -10,13 +11,20 @@ import org.joor.ReflectException
10
11
 
11
12
  private const val LOG_TAG = "RNNetworkingModuleRefl"
12
13
 
13
- private const val FIELD_OKHTTP_CLIENT = "mClient"
14
+ private const val FIELD_OKHTTP_CLIENT_PRE80 = "mClient"
15
+ private const val FIELD_OKHTTP_CLIENT = "client"
14
16
 
15
17
  internal class NetworkingModuleReflected(private val reactContext: ReactContext) {
16
18
  fun getHttpClient(): OkHttpClient? {
17
19
  val networkNativeModule = reactContext.getNativeModule(NetworkingModule::class.java)
18
20
  try {
19
- return Reflect.on(networkNativeModule).field(FIELD_OKHTTP_CLIENT).get()
21
+ val fieldName = if ( ReactNativeInfo.rnVersion().minor > 79) {
22
+ FIELD_OKHTTP_CLIENT
23
+ } else {
24
+ FIELD_OKHTTP_CLIENT_PRE80
25
+ }
26
+
27
+ return Reflect.on(networkNativeModule).field(fieldName).get()
20
28
  } catch (e: ReflectException) {
21
29
  Log.e(LOG_TAG, "Can't set up Networking Module listener", e)
22
30
  return null
@@ -2,6 +2,7 @@ package com.wix.detox.reactnative.idlingresources.timers
2
2
 
3
3
  import com.facebook.react.bridge.ReactContext
4
4
  import com.facebook.react.modules.core.JavaTimerManager
5
+ import com.wix.detox.reactnative.ReactNativeInfo
5
6
  import org.joor.Reflect
6
7
  import kotlin.reflect.full.declaredFunctions
7
8
  import kotlin.reflect.jvm.isAccessible
@@ -19,8 +20,19 @@ object JavaTimersReflected {
19
20
  }
20
21
 
21
22
  private fun getTimersManager(reactContext: ReactContext): JavaTimerManager {
22
- val reactHost = Reflect.on(reactContext).field("mReactHost").get<Any>()
23
+ val reactHostFieldName = if (ReactNativeInfo.rnVersion().minor > 79) {
24
+ "reactHost"
25
+ } else {
26
+ "mReactHost"
27
+ }
28
+ val javaTimerManagerFieldName = if (ReactNativeInfo.rnVersion().minor > 79) {
29
+ "javaTimerManager"
30
+ } else {
31
+ "mJavaTimerManager"
32
+ }
33
+
34
+ val reactHost = Reflect.on(reactContext).field(reactHostFieldName).get<Any>()
23
35
  val reactInstance = Reflect.on(reactHost).field("mReactInstance").get<Any>()
24
- return Reflect.on(reactInstance).field("mJavaTimerManager").get() as JavaTimerManager
36
+ return Reflect.on(reactInstance).field(javaTimerManagerFieldName).get() as JavaTimerManager
25
37
  }
26
38
  }
@@ -1,6 +1,6 @@
1
1
  distributionBase=GRADLE_USER_HOME
2
2
  distributionPath=wrapper/dists
3
- distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
4
4
  networkTimeout=10000
5
5
  validateDistributionUrl=true
6
6
  zipStoreBase=GRADLE_USER_HOME
@@ -42,4 +42,9 @@ ext.rnInfo = [
42
42
  isRN73OrHigher: rnMajorVer >= 73,
43
43
  isRN74OrHigher: rnMajorVer >= 74,
44
44
  isRN75OrHigher: rnMajorVer >= 75,
45
+ isRN76OrHigher: rnMajorVer >= 76,
46
+ isRN77OrHigher: rnMajorVer >= 77,
47
+ isRN78OrHigher: rnMajorVer >= 78,
48
+ isRN79OrHigher: rnMajorVer >= 79,
49
+ isRN80OrHigher: rnMajorVer >= 80,
45
50
  ]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "detox",
3
3
  "description": "E2E tests and automation for mobile",
4
- "version": "20.42.0",
4
+ "version": "20.43.0",
5
5
  "bin": {
6
6
  "detox": "local-cli/cli.js"
7
7
  },
@@ -34,13 +34,13 @@
34
34
  "postinstall": "node scripts/postinstall.js"
35
35
  },
36
36
  "devDependencies": {
37
- "@react-native-community/cli": "18.0.0",
38
- "@react-native-community/cli-platform-android": "18.0.0",
39
- "@react-native-community/cli-platform-ios": "18.0.0",
40
- "@react-native/babel-preset": "0.79.5",
41
- "@react-native/eslint-config": "0.79.5",
42
- "@react-native/metro-config": "0.79.5",
43
- "@react-native/typescript-config": "0.79.5",
37
+ "@react-native-community/cli": "19.1.1",
38
+ "@react-native-community/cli-platform-android": "19.1.1",
39
+ "@react-native-community/cli-platform-ios": "19.1.1",
40
+ "@react-native/babel-preset": "0.80.2",
41
+ "@react-native/eslint-config": "0.80.2",
42
+ "@react-native/metro-config": "0.80.2",
43
+ "@react-native/typescript-config": "0.80.2",
44
44
  "@tsconfig/react-native": "^3.0.0",
45
45
  "@types/bunyan": "^1.8.8",
46
46
  "@types/child-process-promise": "^2.2.1",
@@ -62,7 +62,7 @@
62
62
  "jest-allure2-reporter": "^2.2.6",
63
63
  "metro-react-native-babel-preset": "0.76.8",
64
64
  "prettier": "^3.1.1",
65
- "react-native": "0.79.5",
65
+ "react-native": "0.80.2",
66
66
  "react-native-codegen": "^0.0.8",
67
67
  "typescript": "~5.3.3",
68
68
  "wtfnode": "^0.9.1"
@@ -120,5 +120,5 @@
120
120
  "browserslist": [
121
121
  "node 14"
122
122
  ],
123
- "gitHead": "e86f949767d1fb178f97fa31ec9cb6e2226e86fa"
123
+ "gitHead": "28c2bb5d49a78a0b7103ecd15a8d6a148b1f7d3d"
124
124
  }
@@ -6,6 +6,11 @@ const rnMinor = require('../src/utils/rn-consts/rn-consts').rnVersion.minor;
6
6
  function getGradleVersionByRNVersion() {
7
7
  switch (rnMinor) {
8
8
  default:
9
+ return '8.14.1';
10
+ case '79':
11
+ case '78':
12
+ case '77':
13
+ case '76':
9
14
  return '8.10.2';
10
15
  case '75':
11
16
  return '8.8';
@@ -1 +0,0 @@
1
- 1887d4991e0ed4ee1f60fe19496a9cfa
@@ -1 +0,0 @@
1
- 697906ce37fa13e262c3cfdaba6a6e23af05123d
@@ -1 +0,0 @@
1
- 81b7cec264869ffb4a51c3f49d0458ea42f02a8921afeeef9fba6d13f81f76c6
@@ -1 +0,0 @@
1
- 2345745b36a549ab7230b6cbc55cad2a2a469720a8622a2592669c3a25be55c8a9d0bb7b36123c68e91bc37c6df04f477849018c034e0dd956d1d5e9cb2a1cfb
@@ -1 +0,0 @@
1
- 69c3525aa2e433c05bee1f04c2724502
@@ -1 +0,0 @@
1
- 5dac9bbd10339143f33f66269d560c940dabde5a
@@ -1 +0,0 @@
1
- 04cb33cabcf007a0767a85ea4b9322efe008d9ffb2e4a5636f2eb6513fcc81d3
@@ -1 +0,0 @@
1
- aec098beccb4827b287051cfd924ba72a4b8ad6a5d3cf3c5f645dea50ba704f683a2dbe5e724a94801189aded1fe494a69cef0b31f9128dde89ee1ec2fc92e2d
@@ -1 +0,0 @@
1
- c194caa27e6cabf5bc5bbede5c1e22ad
@@ -1 +0,0 @@
1
- d844bb306d465880c159bb56238879e2395cee9a
@@ -1 +0,0 @@
1
- 6989731d5223c5a9f236e3911eaef2e85fbca229eb68bfbec44e31b3529ae70d
@@ -1 +0,0 @@
1
- 13500f06af3b22637f0469dbce8b92b7da859ec3b08a28b8874be4ee1116599b97533cc7307a23beebe6c0508e57038ba2f6f195d69a09a994a599071bdce886