detox 20.32.0 → 20.33.0-prerelease.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. package/Detox-android/com/wix/detox/{20.32.0/detox-20.32.0-sources.jar → 20.33.0-prerelease.0/detox-20.33.0-prerelease.0-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.aar +0 -0
  7. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.aar.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.aar.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.aar.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.aar.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/{20.32.0/detox-20.32.0.pom → 20.33.0-prerelease.0/detox-20.33.0-prerelease.0.pom} +13 -1
  12. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.pom.md5 +1 -0
  13. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.pom.sha1 +1 -0
  14. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.0.pom.sha256 +1 -0
  15. package/Detox-android/com/wix/detox/20.33.0-prerelease.0/detox-20.33.0-prerelease.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/build.gradle +6 -1
  25. package/android/detox/proguard-rules-app.pro +12 -0
  26. package/android/detox/src/full/java/com/wix/detox/DetoxMain.kt +4 -3
  27. package/android/detox/src/full/java/com/wix/detox/reactnative/ReactApplicationExt.kt +34 -0
  28. package/android/detox/src/full/java/com/wix/detox/reactnative/ReactNativeExtension.kt +22 -27
  29. package/android/detox/src/full/java/com/wix/detox/reactnative/ReactNativeLoadingMonitor.kt +51 -71
  30. package/android/detox/src/full/java/com/wix/detox/reactnative/helpers/RNHelpers.kt +1 -1
  31. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/DetoxIdlingResource.kt +4 -2
  32. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/ReactNativeIdlingResources.kt +17 -13
  33. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/animations/AnimatedModuleIdlingResource.kt +5 -2
  34. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/DetoxIdlingResourceFactory.kt +9 -20
  35. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/DetoxIdlingResourceFactoryStrategy.kt +7 -0
  36. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/FabricDetoxIdlingResourceFactoryStrategy.kt +31 -0
  37. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/IdlingResourcesName.kt +1 -1
  38. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/OldArchitectureDetoxIdlingResourceFactoryStrategy.kt +33 -0
  39. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkIdlingResource.kt +5 -0
  40. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt +11 -14
  41. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/storage/AsyncStorageIdlingResource.kt +31 -29
  42. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/FabricTimersIdlingResource.kt +50 -0
  43. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt +26 -0
  44. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/TimersIdlingResource.kt +6 -5
  45. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/fabric/FabricUIManagerIdlingResources.kt +70 -0
  46. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{DispatchCommandOperationReflected.kt → paper/DispatchCommandOperationReflected.kt} +1 -1
  47. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{NativeHierarchyManagerReflected.kt → paper/NativeHierarchyManagerReflected.kt} +5 -3
  48. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{UIManagerModuleReflected.kt → paper/UIManagerModuleReflected.kt} +5 -3
  49. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{UIModuleIdlingResource.kt → paper/UIModuleIdlingResource.kt} +12 -4
  50. package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{ViewCommandOpsQueueReflected.kt → paper/ViewCommandOpsQueueReflected.kt} +3 -3
  51. package/android/detox/src/full/java/com/wix/detox/reactnative/reloader/ReactNativeReloader.kt +34 -0
  52. package/android/detox/src/full/java/com/wix/detox/reactnative/reloader/ReactNativeReloaderFactory.kt +18 -0
  53. package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/AsyncStorageIdlingResourceTest.kt +9 -2
  54. package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/timers/TimersIdlingResourceTest.kt +9 -3
  55. package/package.json +2 -2
  56. package/scripts/updateGradle.js +37 -0
  57. package/src/DetoxWorker.js +1 -2
  58. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.md5 +0 -1
  59. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha1 +0 -1
  60. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha256 +0 -1
  61. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha512 +0 -1
  62. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar +0 -0
  63. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.md5 +0 -1
  64. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha1 +0 -1
  65. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha256 +0 -1
  66. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha512 +0 -1
  67. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.md5 +0 -1
  68. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha1 +0 -1
  69. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha256 +0 -1
  70. package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha512 +0 -1
  71. package/android/detox/src/full/java/com/wix/detox/reactnative/ReactNativeReloader.kt +0 -16
@@ -2,7 +2,9 @@ package com.wix.detox.reactnative.idlingresources
2
2
 
3
3
  import androidx.test.espresso.IdlingResource
4
4
  import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactContext
5
6
  import com.wix.detox.UTHelpers.yieldToOtherThreads
7
+ import com.wix.detox.reactnative.helpers.RNHelpers
6
8
  import com.wix.detox.reactnative.idlingresources.storage.AsyncStorageIdlingResource
7
9
  import com.wix.detox.reactnative.idlingresources.storage.SerialExecutorReflected
8
10
  import org.assertj.core.api.Assertions.assertThat
@@ -10,6 +12,7 @@ import org.junit.Before
10
12
  import org.junit.Test
11
13
  import org.junit.runner.RunWith
12
14
  import org.mockito.kotlin.any
15
+ import org.mockito.kotlin.argThat
13
16
  import org.mockito.kotlin.argumentCaptor
14
17
  import org.mockito.kotlin.eq
15
18
  import org.mockito.kotlin.mock
@@ -37,6 +40,8 @@ class AsyncStorageIdlingResourceTest {
37
40
  private lateinit var sexecutorReflectedGenFn: (executor: Executor) -> SerialExecutorReflected
38
41
  private lateinit var module: AsyncStorageModuleStub
39
42
  private lateinit var uut: AsyncStorageIdlingResource
43
+ private val reactContext: ReactContext = mock()
44
+ private lateinit var rnHelpers: RNHelpers
40
45
 
41
46
  @Before
42
47
  fun setup() {
@@ -49,8 +54,10 @@ class AsyncStorageIdlingResourceTest {
49
54
  on { invoke(eq(module.executor)) }.thenReturn(sexecutorReflected)
50
55
  }
51
56
 
52
-
53
- uut = AsyncStorageIdlingResource(module, sexecutorReflectedGenFn)
57
+ rnHelpers = mock {
58
+ on { getNativeModule(any(), any()) }.thenReturn(module)
59
+ }
60
+ uut = AsyncStorageIdlingResource(reactContext, sexecutorReflectedGenFn, rnHelpers)
54
61
  }
55
62
 
56
63
  fun givenNoActiveTasks() = whenever(sexecutorReflected.hasActiveTask()).thenReturn(false)
@@ -5,13 +5,13 @@ import androidx.test.espresso.IdlingResource
5
5
  import com.facebook.react.bridge.ReactContext
6
6
  import com.facebook.react.modules.core.TimingModule
7
7
  import org.assertj.core.api.Assertions
8
+ import org.junit.Assert.assertFalse
8
9
  import org.junit.Before
9
10
  import org.junit.Test
10
11
  import org.junit.runner.RunWith
11
12
  import org.mockito.kotlin.*
12
13
  import org.robolectric.RobolectricTestRunner
13
- import org.spekframework.spek2.Spek
14
- import org.spekframework.spek2.style.specification.describe
14
+ import kotlin.test.assertTrue
15
15
 
16
16
  private fun anIdlingResourceCallback() = mock<IdlingResource.ResourceCallback>()
17
17
 
@@ -28,7 +28,6 @@ class TimersIdlingResourceTest {
28
28
  timersIdlingResource = TimersIdlingResource(context) { choreographer }
29
29
  }
30
30
 
31
-
32
31
  private fun givenIdleStrategy() {
33
32
  whenever(timersModule.hasActiveTimersInRange(any())).thenReturn(false)
34
33
  }
@@ -48,6 +47,13 @@ class TimersIdlingResourceTest {
48
47
  getChoreographerCallback().doFrame(0L)
49
48
  }
50
49
 
50
+ @Test
51
+ fun `should pause when unregistered`() {
52
+ assertFalse(timersIdlingResource.paused.get())
53
+ timersIdlingResource.onUnregistered()
54
+ assertTrue(timersIdlingResource.paused.get())
55
+ }
56
+
51
57
  @Test
52
58
  fun `should return a debug-name`() {
53
59
  Assertions.assertThat(timersIdlingResource.getDebugName()).isEqualTo("timers")
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.32.0",
4
+ "version": "20.33.0-prerelease.0",
5
5
  "bin": {
6
6
  "detox": "local-cli/cli.js"
7
7
  },
@@ -119,5 +119,5 @@
119
119
  "browserslist": [
120
120
  "node 14"
121
121
  ],
122
- "gitHead": "32bc3aabb05f843e8307043e9e5c85f4b47accef"
122
+ "gitHead": "24e2e8402c63506e434341130f79a62ad6949e3f"
123
123
  }
@@ -26,6 +26,43 @@ function getGradleVersionByRNVersion() {
26
26
  function patchGradleByRNVersion() {
27
27
  updateGradleWrapperSync();
28
28
  patchSettingsGradle();
29
+ patchGradlePropertiesSync();
30
+ }
31
+
32
+ /**
33
+ * By default gralde.properties has new arch enabled. Disable it by adding evn var
34
+ */
35
+ function patchGradlePropertiesSync() {
36
+ // Read the evn var to check if the new arch is enabled
37
+ let isNewArch;
38
+
39
+ if (!process.env.ENABLE_NEW_ARCH) {
40
+ isNewArch = true;
41
+ } else {
42
+ isNewArch = process.env.ENABLE_NEW_ARCH === 'true';
43
+ }
44
+
45
+ function readGradlePropertiesFile() {
46
+ const gradlePropertiesFile = path.join(process.cwd(), 'android', 'gradle.properties');
47
+ console.log(`Patching gradle.properties. File: ${gradlePropertiesFile}`);
48
+ const data = fs.readFileSync(gradlePropertiesFile, 'utf8');
49
+ return { gradlePropertiesFile, data };
50
+ }
51
+
52
+ function writeGradlePropertiesFile(gradlePropertiesFile, data) {
53
+ const updatedData = data.replace('newArchEnabled=true', 'newArchEnabled=false');
54
+ fs.writeFileSync(gradlePropertiesFile, updatedData, 'utf8');
55
+ console.log('gradle.properties patched successfully.');
56
+ }
57
+
58
+ if (!isNewArch) {
59
+ try {
60
+ const { gradlePropertiesFile, data } = readGradlePropertiesFile();
61
+ writeGradlePropertiesFile(gradlePropertiesFile, data);
62
+ } catch (e) {
63
+ console.error('Error:', e);
64
+ }
65
+ }
29
66
  }
30
67
 
31
68
  /**
@@ -259,8 +259,7 @@ class DetoxWorker {
259
259
  });
260
260
 
261
261
  if (copilot.isInitialized()) {
262
- // In case of failure, pass false to copilot, so temporary cache is not saved
263
- copilot.end(testSummary.status === 'passed');
262
+ copilot.end(testSummary.status !== 'passed');
264
263
  }
265
264
  };
266
265
 
@@ -1 +0,0 @@
1
- eee5ef30145285d5cb57b7a09afb8304
@@ -1 +0,0 @@
1
- f454322216a38a2a565504eeeee3097cdf210dd0
@@ -1 +0,0 @@
1
- bde47b3d7df6f70cc9812e1232aa5781a4dbfbd923ca52c6097ab9ea880eb207
@@ -1 +0,0 @@
1
- 175ce023c440c5903a33af31f0ce39e603c6c930fa05ddf5a38f070cd99b29fc6ee2e82b816bc60507c7c4729e9c0b1d8d1247ecc4b6b75455e0924d397dfe37
@@ -1 +0,0 @@
1
- c5f3daffcbc4e0f545784d563efc793c
@@ -1 +0,0 @@
1
- fd392c76debf7d9afdbfd9f7eb0c48766395bd82
@@ -1 +0,0 @@
1
- f6623de89efe2e0b49241ef2c9ec3fee79cf3d84e7dbf5d2f00d762427a32cab
@@ -1 +0,0 @@
1
- 92906ac80969295c0ca21b3428801173fa48bb93ffc0ff2450f2d74af4a6c2b6c9afdcb07c49bd46f2bb791317b8dd43bd30ff5801839fa3c7deafd6c8348548
@@ -1 +0,0 @@
1
- 8a89efbe63dd0bb5e8263bd728b2a6ce
@@ -1 +0,0 @@
1
- 73079f2074231a904b98113f686c7b7f8df79ad7
@@ -1 +0,0 @@
1
- 4c76f2991c6d5bb6fd4a883542bac697c8e3e49d1816e59f36b5b3678c6ae6ab
@@ -1 +0,0 @@
1
- b856a9916b7e864eeb2226d29b56c5bea595545c7cb82e8c33619357fdfbf9a942201f1ecd70b57fb5499c5b59d38a1e4fc13bee6a84eaf2b75e2b630faeb6f7
@@ -1,16 +0,0 @@
1
- package com.wix.detox.reactnative
2
-
3
- import android.app.Instrumentation
4
- import com.facebook.react.ReactApplication
5
-
6
- open class ReactNativeReLoader(
7
- private val instrumentation: Instrumentation,
8
- private val rnApplication: ReactApplication) {
9
-
10
- fun reloadInBackground() {
11
- val rnInstanceManager = rnApplication.reactNativeHost.reactInstanceManager
12
- instrumentation.runOnMainSync {
13
- rnInstanceManager.recreateReactContextInBackground()
14
- }
15
- }
16
- }