detox 20.32.0 → 20.33.0
Sign up to get free protection for your applications and to get access to all the features.
- package/Detox-android/com/wix/detox/{20.32.0/detox-20.32.0-sources.jar → 20.33.0/detox-20.33.0-sources.jar} +0 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.aar +0 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.aar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.aar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.aar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.aar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.32.0/detox-20.32.0.pom → 20.33.0/detox-20.33.0.pom} +13 -1
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.pom.md5 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.33.0/detox-20.33.0.pom.sha512 +1 -0
- package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
- package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
- package/Detox-ios-framework.tbz +0 -0
- package/Detox-ios-src.tbz +0 -0
- package/Detox-ios-xcuitest.tbz +0 -0
- package/android/detox/build.gradle +6 -1
- package/android/detox/proguard-rules-app.pro +12 -0
- package/android/detox/src/full/java/com/wix/detox/DetoxMain.kt +4 -3
- package/android/detox/src/full/java/com/wix/detox/reactnative/ReactApplicationExt.kt +34 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/ReactNativeExtension.kt +22 -27
- package/android/detox/src/full/java/com/wix/detox/reactnative/ReactNativeLoadingMonitor.kt +51 -71
- package/android/detox/src/full/java/com/wix/detox/reactnative/helpers/RNHelpers.kt +1 -1
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/DetoxIdlingResource.kt +4 -2
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/ReactNativeIdlingResources.kt +17 -13
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/animations/AnimatedModuleIdlingResource.kt +5 -2
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/DetoxIdlingResourceFactory.kt +9 -20
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/DetoxIdlingResourceFactoryStrategy.kt +7 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/FabricDetoxIdlingResourceFactoryStrategy.kt +31 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/IdlingResourcesName.kt +1 -1
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/factory/OldArchitectureDetoxIdlingResourceFactoryStrategy.kt +33 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkIdlingResource.kt +5 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt +11 -14
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/storage/AsyncStorageIdlingResource.kt +31 -29
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/FabricTimersIdlingResource.kt +50 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt +26 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/TimersIdlingResource.kt +6 -5
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/fabric/FabricUIManagerIdlingResources.kt +70 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{DispatchCommandOperationReflected.kt → paper/DispatchCommandOperationReflected.kt} +1 -1
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{NativeHierarchyManagerReflected.kt → paper/NativeHierarchyManagerReflected.kt} +5 -3
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{UIManagerModuleReflected.kt → paper/UIManagerModuleReflected.kt} +5 -3
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{UIModuleIdlingResource.kt → paper/UIModuleIdlingResource.kt} +12 -4
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/uimodule/{ViewCommandOpsQueueReflected.kt → paper/ViewCommandOpsQueueReflected.kt} +3 -3
- package/android/detox/src/full/java/com/wix/detox/reactnative/reloader/ReactNativeReloader.kt +34 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/reloader/ReactNativeReloaderFactory.kt +18 -0
- package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/AsyncStorageIdlingResourceTest.kt +9 -2
- package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/timers/TimersIdlingResourceTest.kt +9 -3
- package/package.json +2 -2
- package/scripts/updateGradle.js +37 -0
- package/src/DetoxWorker.js +1 -2
- package/src/copilot/detoxCopilotFrameworkDriver.js +2 -0
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar +0 -0
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.aar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.32.0/detox-20.32.0.pom.sha512 +0 -1
- 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
|
-
|
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
|
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.
|
4
|
+
"version": "20.33.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": "
|
122
|
+
"gitHead": "a582b20bcd6624395cc5ee7966ea1b90f25c6d53"
|
123
123
|
}
|
package/scripts/updateGradle.js
CHANGED
@@ -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
|
/**
|
package/src/DetoxWorker.js
CHANGED
@@ -259,8 +259,7 @@ class DetoxWorker {
|
|
259
259
|
});
|
260
260
|
|
261
261
|
if (copilot.isInitialized()) {
|
262
|
-
|
263
|
-
copilot.end(testSummary.status === 'passed');
|
262
|
+
copilot.end(testSummary.status !== 'passed');
|
264
263
|
}
|
265
264
|
};
|
266
265
|
|
@@ -99,6 +99,7 @@ const detoxCopilotFrameworkDriver = {
|
|
99
99
|
guidelines: [
|
100
100
|
'Direction can be "up", "down", "left", or "right".',
|
101
101
|
'Use `startPositionX` and `startPositionY` to specify the starting point of the scroll gesture.',
|
102
|
+
'`startPositionX` and `startPositionY` are relative to the element\'s width and height, respectively. with values between 0 and 1.',
|
102
103
|
'If multiple scroll actions are needed while waiting for an element, use `whileElement()` in conjunction with `waitFor()`.',
|
103
104
|
],
|
104
105
|
},
|
@@ -109,6 +110,7 @@ const detoxCopilotFrameworkDriver = {
|
|
109
110
|
guidelines: [
|
110
111
|
'Edge can be "top", "bottom", "left", or "right".',
|
111
112
|
'Use `startPositionX` and `startPositionY` to specify the starting point of the scroll gesture.',
|
113
|
+
'`startPositionX` and `startPositionY` are relative to the element\'s width and height, respectively. with values between 0 and 1.',
|
112
114
|
],
|
113
115
|
},
|
114
116
|
{
|
@@ -1 +0,0 @@
|
|
1
|
-
eee5ef30145285d5cb57b7a09afb8304
|
@@ -1 +0,0 @@
|
|
1
|
-
f454322216a38a2a565504eeeee3097cdf210dd0
|
@@ -1 +0,0 @@
|
|
1
|
-
bde47b3d7df6f70cc9812e1232aa5781a4dbfbd923ca52c6097ab9ea880eb207
|
@@ -1 +0,0 @@
|
|
1
|
-
175ce023c440c5903a33af31f0ce39e603c6c930fa05ddf5a38f070cd99b29fc6ee2e82b816bc60507c7c4729e9c0b1d8d1247ecc4b6b75455e0924d397dfe37
|
Binary file
|
@@ -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
|
-
}
|