detox 20.42.0 → 20.43.0-alpha.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-alpha.0/detox-20.43.0-alpha.0-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar +0 -0
  7. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.aar.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/{20.42.0/detox-20.42.0.pom → 20.43.0-alpha.0/detox-20.43.0-alpha.0.pom} +1 -1
  12. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.md5 +1 -0
  13. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.sha1 +1 -0
  14. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.0.pom.sha256 +1 -0
  15. package/Detox-android/com/wix/detox/20.43.0-alpha.0/detox-20.43.0-alpha.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 +15 -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
+ b02764fe99571d429f7c190b87219c69
@@ -0,0 +1 @@
1
+ e4bdc6e9ec26c6520abd05a73d758c4c48eaef18
@@ -0,0 +1 @@
1
+ 17766f2604820bb14066ffda5b5a56eca73bf5e05d8eabb784a6af17dc34468f
@@ -0,0 +1 @@
1
+ 18da540136022798c270cfc57324a967f14f1d76c1188cc9ebbf84190e2c68af04b2dc0c13642ef8846a0ac2da38c9ec4d6ee8a99e77499b4c8b821abd7567aa
@@ -0,0 +1 @@
1
+ 95f859e3353c02c1bdfae62eecdb7064
@@ -0,0 +1 @@
1
+ e849c7c098b6fc1349725b02130c0940ff2671d6
@@ -0,0 +1 @@
1
+ 28933f70ef1c9e5312509ff18562b792c8e4d620f877953851b071e2cdc38c2c
@@ -0,0 +1 @@
1
+ 76c60df97a57e87f1e3722927c66e5e698c4f42699392ca74cec18f8c97a2330b30ab335c70df3557ae98a8efbddd2865591430744294de7842eb3012dc936c0
@@ -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-alpha.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
+ 45a3353f06c37299757d2b897327ff46
@@ -0,0 +1 @@
1
+ a16120462fe2e18597a680d505b2f207b86a59f4
@@ -0,0 +1 @@
1
+ 7139e0634426ad1772df186bf9589f59412b869132d48358807c808d7612e2e1
@@ -0,0 +1 @@
1
+ f6ee060d3e172960674cf8cb65bd213a853ea93703b9d231d992feead0f24d03c49bd8c49abbb41decc0f50c81aa7c746ac2101d93bd0f96f2750cae79dc3cc3
@@ -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-alpha.0</latest>
7
+ <release>20.43.0-alpha.0</release>
8
8
  <versions>
9
- <version>20.42.0</version>
9
+ <version>20.43.0-alpha.0</version>
10
10
  </versions>
11
- <lastUpdated>20250925083025</lastUpdated>
11
+ <lastUpdated>20250930221159</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- cffd00ec1fa7d24dfa670f1f73cb2157
1
+ 12c4b723cd5d9608e020fdc70c366fed
@@ -1 +1 @@
1
- 2f1f1e00242921f53643aeea67e863765c97bdef
1
+ 6dbaf00aa421e38bb3c590da262763ef7b4b00c0
@@ -1 +1 @@
1
- be3543d79c53d124eb70e536793549e36b7f2a5c196b524f55d39cdb322a3216
1
+ b69af31d15bc2fa243024937c8336091f0efbd3622cddb163764c1e10b503c5b
@@ -1 +1 @@
1
- 003eb81934b9bf5c98fc53dfa0d8871d436a7ef88fd0d430206672a38c898e47c4535ca1a2b621a65163b4c672fbbf65daba9ed9dbc0ee17461a64c674d63cd6
1
+ 227d31b3252ef18d07f89baee17eec925668e555796e6e2aec484d34be8af38c4a23962a2b2bbc1d2be99b1a19beccabd71d94f2cdddceb26175b26cf519bcd6
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_RN79 = "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 filedName = if ( ReactNativeInfo.rnVersion().minor > 79) {
22
+ FIELD_OKHTTP_CLIENT
23
+ } else {
24
+ FIELD_OKHTTP_CLIENT_RN79
25
+ }
26
+
27
+ return Reflect.on(networkNativeModule).field(filedName).get()
20
28
  } catch (e: ReflectException) {
21
29
  Log.e(LOG_TAG, "Can't set up Networking Module listener", e)
22
30
  return null
@@ -1,7 +1,9 @@
1
1
  package com.wix.detox.reactnative.idlingresources.timers
2
2
 
3
+ import android.os.Debug
3
4
  import com.facebook.react.bridge.ReactContext
4
5
  import com.facebook.react.modules.core.JavaTimerManager
6
+ import com.wix.detox.reactnative.ReactNativeInfo
5
7
  import org.joor.Reflect
6
8
  import kotlin.reflect.full.declaredFunctions
7
9
  import kotlin.reflect.jvm.isAccessible
@@ -19,8 +21,19 @@ object JavaTimersReflected {
19
21
  }
20
22
 
21
23
  private fun getTimersManager(reactContext: ReactContext): JavaTimerManager {
22
- val reactHost = Reflect.on(reactContext).field("mReactHost").get<Any>()
24
+ val reactHostFiledName = if (ReactNativeInfo.rnVersion().minor > 79) {
25
+ "reactHost"
26
+ } else {
27
+ "mReactHost"
28
+ }
29
+ val javaTimerManagerFiledName = if (ReactNativeInfo.rnVersion().minor > 79) {
30
+ "javaTimerManager"
31
+ } else {
32
+ "mJavaTimerManager"
33
+ }
34
+
35
+ val reactHost = Reflect.on(reactContext).field(reactHostFiledName).get<Any>()
23
36
  val reactInstance = Reflect.on(reactHost).field("mReactInstance").get<Any>()
24
- return Reflect.on(reactInstance).field("mJavaTimerManager").get() as JavaTimerManager
37
+ return Reflect.on(reactInstance).field(javaTimerManagerFiledName).get() as JavaTimerManager
25
38
  }
26
39
  }
@@ -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-alpha.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": "35529102f5a90db7a56f1ecdd7d834cceac9061d"
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