detox 20.0.10-prerelease.0 → 20.0.11-prerelease.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.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar → 20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar} +0 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar → 20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar} +0 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar → 20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar} +0 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom → 20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom} +1 -1
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.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-src.tbz +0 -0
- package/Detox-ios.tbz +0 -0
- package/README.md +1 -1
- package/android/detox/proguard-rules.pro +3 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/IdlingResourceDescription.kt +19 -13
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/NetworkIdlingResource.java +33 -30
- package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/NetworkIdlingResourcesTest.kt +61 -0
- package/index.d.ts +7 -0
- package/local-cli/init.js +1 -0
- package/local-cli/templates/jest.js +3 -1
- package/package.json +2 -2
- package/runners/deprecation.js +2 -2
- package/src/client/actions/formatters/sync-resources/NetworkFormatter.js +1 -1
- package/src/configuration/composeAppsConfig.js +4 -0
- package/src/configuration/composeRunnerConfig.js +1 -1
- package/src/devices/common/drivers/ios/tools/AppleSimUtils.js +25 -1
- package/src/devices/lifecycle/GenyGlobalLifecycleHandler.js +2 -2
- package/src/devices/runtime/RuntimeDevice.js +10 -0
- package/src/errors/DetoxConfigErrorComposer.js +8 -0
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha512 +0 -1
Binary file
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.md5
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
47812b0a46970666a8ed5133588f83b9
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-javadoc.jar.sha1
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3ac292deb3e60c7f80bb4e138e61decdacb32673
|
@@ -0,0 +1 @@
|
|
1
|
+
5d4183bf7d91e2375e527f7886a374bcdc227328e09fbe8c5705c82750cb5a80
|
@@ -0,0 +1 @@
|
|
1
|
+
b149751c26413a63ea98c69ff3a4cb19a4d449b4b626e277ecdd1508b725ef5179dbcbb68aca4c4427651de00ebdf30efb517ea981302eb50ec4aed6e26c432f
|
Binary file
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.md5
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
123907367c42d213beeb25fac892c1c8
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0-sources.jar.sha1
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
35e4d7a489d2b9ce8bc3298d4e05ace381938968
|
@@ -0,0 +1 @@
|
|
1
|
+
ba003c4e1afb9667e62a7d1e73db455775e1c082d6f3780d4ed172844e1dcec3
|
@@ -0,0 +1 @@
|
|
1
|
+
a8254a5574422d06bbe1b256abf87d111b2fb56d82a1e82dd9a827407e95321a81279eaeaa79cc68e985d313f547e70b60251c374d784195d05d90c042f6e93a
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
3bdd1b42fa0f182255a47fcdda8f544c
|
@@ -0,0 +1 @@
|
|
1
|
+
457ae10d202b196ea92bade4a33ce2dbc2f8bb3f
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.sha256
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
52342d1b0d1fae681b2ea1e6f9ac6f6278299ed70d7867fd60b95d63eb7a9ec3
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.aar.sha512
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
5dfa73d84d647fd870a2e915d9943c9502c967abfd89a834ef7dee50a2a77d5a8b0be7b13407a34a6b97cbc10e9ed6f5e608fe7366d5a3041e462e3322d5b10d
|
@@ -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.0.
|
6
|
+
<version>20.0.11-prerelease.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
|
+
e1de6a89002fc682019853172c69830c
|
@@ -0,0 +1 @@
|
|
1
|
+
489bc3e987d66596a3d04353e50a9b7528a2ca8f
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom.sha256
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
40f07b6d97cc2f6143e7bf5456fc0070af5ee9316a8585c4abdca7d796409d71
|
package/Detox-android/com/wix/detox/20.0.11-prerelease.0/detox-20.0.11-prerelease.0.pom.sha512
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
9eae7ac091f209b9ddd0282e6e8eb2dcef416c06d2906857f7d065276787c56cd7a14e19883c710f934005f5831890c33a66218dabb5dbfe6a9143089b6a3462
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<groupId>com.wix</groupId>
|
4
4
|
<artifactId>detox</artifactId>
|
5
5
|
<versioning>
|
6
|
-
<latest>20.0.
|
7
|
-
<release>20.0.
|
6
|
+
<latest>20.0.11-prerelease.0</latest>
|
7
|
+
<release>20.0.11-prerelease.0</release>
|
8
8
|
<versions>
|
9
|
-
<version>20.0.
|
9
|
+
<version>20.0.11-prerelease.0</version>
|
10
10
|
</versions>
|
11
|
-
<lastUpdated>
|
11
|
+
<lastUpdated>20220930144845</lastUpdated>
|
12
12
|
</versioning>
|
13
13
|
</metadata>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
7298eb41c092e9d6471b11d8c4072549
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
d59581aa200215423697a398b1e30952dbcad89d
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
964eb89f375a8ac845a5d63eaa867d544a7fdc4b0cd9abe539417827895a9b6a
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
8b8c26e1906aff908931afb6a7e095bd0d4eb3b08df4061c5b3645c0a6c9e1dc3cc0e9415f7e7a4b5bd7aec76c1e8f2de11388067b1e4d33cfcc2d6eb595933e
|
package/Detox-ios-src.tbz
CHANGED
Binary file
|
package/Detox-ios.tbz
CHANGED
Binary file
|
package/README.md
CHANGED
@@ -1,20 +1,26 @@
|
|
1
1
|
package com.wix.detox.reactnative.idlingresources
|
2
2
|
|
3
3
|
class IdlingResourceDescription private constructor(
|
4
|
-
|
5
|
-
|
6
|
-
fun json(): Map<String, Any> = mutableMapOf<String, Any>("name" to name)
|
7
|
-
.apply { if (description.isNotEmpty()) put("description", description) }
|
4
|
+
private val name: String,
|
5
|
+
private val description: Map<String, Any>) {
|
8
6
|
|
9
|
-
|
10
|
-
|
7
|
+
fun json() =
|
8
|
+
mutableMapOf<String, Any>("name" to name)
|
9
|
+
.apply {
|
10
|
+
if (description.isNotEmpty()) put("description", description)
|
11
|
+
}.toMap()
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
override fun equals(other: Any?) =
|
14
|
+
(other is IdlingResourceDescription && other.json() == this.json())
|
15
|
+
|
16
|
+
override fun hashCode(): Int =
|
17
|
+
(31 * name.hashCode() + description.hashCode())
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
data class Builder(
|
20
|
+
var name: String = "unknown",
|
21
|
+
var description: MutableMap<String, Any> = mutableMapOf()) {
|
22
|
+
fun name(value: String) = apply { name = value }
|
23
|
+
fun addDescription(key: String, value: Any) = apply { description[key] = value }
|
24
|
+
fun build() = IdlingResourceDescription(name, description)
|
25
|
+
}
|
20
26
|
}
|
@@ -69,42 +69,13 @@ public class NetworkIdlingResource extends DetoxBaseIdlingResource implements Ch
|
|
69
69
|
|
70
70
|
@NotNull
|
71
71
|
@Override
|
72
|
-
public IdlingResourceDescription getDescription() {
|
72
|
+
public synchronized IdlingResourceDescription getDescription() {
|
73
73
|
return new IdlingResourceDescription.Builder()
|
74
74
|
.name("network")
|
75
75
|
.addDescription("urls", new ArrayList<>(busyResources))
|
76
76
|
.build();
|
77
77
|
}
|
78
78
|
|
79
|
-
@Override
|
80
|
-
protected boolean checkIdle() {
|
81
|
-
boolean idle = true;
|
82
|
-
busyResources.clear();
|
83
|
-
List<Call> calls = dispatcher.runningCalls();
|
84
|
-
for (Call call : calls) {
|
85
|
-
idle = false;
|
86
|
-
String url = call.request().url().toString();
|
87
|
-
for (Pattern pattern : blacklist) {
|
88
|
-
if (pattern.matcher(url).matches()) {
|
89
|
-
idle = true;
|
90
|
-
break;
|
91
|
-
}
|
92
|
-
}
|
93
|
-
if (!idle) {
|
94
|
-
busyResources.add(call.request().url().toString());
|
95
|
-
}
|
96
|
-
}
|
97
|
-
if (!idle) {
|
98
|
-
Choreographer.getInstance().postFrameCallback(this);
|
99
|
-
Log.i(LOG_TAG, "Network is busy");
|
100
|
-
} else {
|
101
|
-
if (callback != null) {
|
102
|
-
callback.onTransitionToIdle();
|
103
|
-
}
|
104
|
-
}
|
105
|
-
return idle;
|
106
|
-
}
|
107
|
-
|
108
79
|
@Override
|
109
80
|
public void registerIdleTransitionCallback(ResourceCallback callback) {
|
110
81
|
this.callback = callback;
|
@@ -116,10 +87,42 @@ public class NetworkIdlingResource extends DetoxBaseIdlingResource implements Ch
|
|
116
87
|
isIdleNow();
|
117
88
|
}
|
118
89
|
|
90
|
+
@Override
|
91
|
+
protected synchronized boolean checkIdle() {
|
92
|
+
busyResources.clear();
|
93
|
+
|
94
|
+
List<Call> calls = dispatcher.runningCalls();
|
95
|
+
for (Call call: calls) {
|
96
|
+
final String url = call.request().url().toString();
|
97
|
+
|
98
|
+
if (!isUrlBlacklisted(url)) {
|
99
|
+
busyResources.add(url);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
if (!busyResources.isEmpty()) {
|
104
|
+
Log.i(LOG_TAG, "Network is busy, with " + busyResources.size() + " in-flight calls");
|
105
|
+
Choreographer.getInstance().postFrameCallback(this);
|
106
|
+
return false;
|
107
|
+
}
|
108
|
+
|
109
|
+
notifyIdle();
|
110
|
+
return true;
|
111
|
+
}
|
112
|
+
|
119
113
|
@Override
|
120
114
|
protected void notifyIdle() {
|
121
115
|
if (callback != null) {
|
122
116
|
callback.onTransitionToIdle();
|
123
117
|
}
|
124
118
|
}
|
119
|
+
|
120
|
+
private boolean isUrlBlacklisted(String url) {
|
121
|
+
for (Pattern pattern: blacklist) {
|
122
|
+
if (pattern.matcher(url).matches()) {
|
123
|
+
return true;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
return false;
|
127
|
+
}
|
125
128
|
}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
package com.wix.detox.reactnative.idlingresources
|
2
|
+
|
3
|
+
import com.wix.detox.UTHelpers.yieldToOtherThreads
|
4
|
+
import org.assertj.core.api.Assertions.assertThat
|
5
|
+
|
6
|
+
import okhttp3.Dispatcher
|
7
|
+
import org.junit.Before
|
8
|
+
import org.junit.Test
|
9
|
+
import org.junit.runner.RunWith
|
10
|
+
import org.robolectric.RobolectricTestRunner
|
11
|
+
import java.util.concurrent.Executors
|
12
|
+
|
13
|
+
@RunWith(RobolectricTestRunner::class)
|
14
|
+
class NetworkIdlingResourcesTest {
|
15
|
+
lateinit var dispatcher: Dispatcher
|
16
|
+
lateinit var uut: NetworkIdlingResource
|
17
|
+
|
18
|
+
@Before
|
19
|
+
fun setup() {
|
20
|
+
dispatcher = Dispatcher()
|
21
|
+
uut = NetworkIdlingResource(dispatcher)
|
22
|
+
}
|
23
|
+
|
24
|
+
// Note: Ideally, we should test that the list of busy resources is protected,
|
25
|
+
// rather than testing thread-safety as a whole.
|
26
|
+
@Test
|
27
|
+
fun `should return the description in a thread-safe way`() {
|
28
|
+
val localExecutor = Executors.newSingleThreadExecutor()
|
29
|
+
var description: IdlingResourceDescription? = null
|
30
|
+
|
31
|
+
synchronized(uut) {
|
32
|
+
localExecutor.submit {
|
33
|
+
description = uut.getDescription()
|
34
|
+
}
|
35
|
+
|
36
|
+
yieldToOtherThreads(localExecutor)
|
37
|
+
assertThat(description).isNull()
|
38
|
+
}
|
39
|
+
yieldToOtherThreads(localExecutor)
|
40
|
+
assertThat(description).isNotNull()
|
41
|
+
}
|
42
|
+
|
43
|
+
// Note: Ideally, we should test that the list of busy resources is protected,
|
44
|
+
// rather than testing thread-safety as a whole.
|
45
|
+
@Test
|
46
|
+
fun `should check for idle in a thread-safe way`() {
|
47
|
+
val localExecutor = Executors.newSingleThreadExecutor()
|
48
|
+
var idle = false
|
49
|
+
|
50
|
+
synchronized(uut) {
|
51
|
+
localExecutor.submit {
|
52
|
+
idle = uut.isIdleNow
|
53
|
+
}
|
54
|
+
|
55
|
+
yieldToOtherThreads(localExecutor)
|
56
|
+
assertThat(idle).isFalse
|
57
|
+
}
|
58
|
+
yieldToOtherThreads(localExecutor)
|
59
|
+
assertThat(idle).isTrue
|
60
|
+
}
|
61
|
+
}
|
package/index.d.ts
CHANGED
@@ -238,6 +238,13 @@ declare global {
|
|
238
238
|
build?: string;
|
239
239
|
testBinaryPath?: string;
|
240
240
|
launchArgs?: Record<string, any>;
|
241
|
+
/**
|
242
|
+
* TCP ports to `adb reverse` upon the installation.
|
243
|
+
* E.g. 8081 - to be able to access React Native packager in Debug mode.
|
244
|
+
*
|
245
|
+
* @example [8081]
|
246
|
+
*/
|
247
|
+
reversePorts?: number[];
|
241
248
|
}
|
242
249
|
|
243
250
|
interface DetoxCustomAppConfig {
|
package/local-cli/init.js
CHANGED
@@ -94,6 +94,7 @@ function createDefaultConfigurations() {
|
|
94
94
|
type: 'android.apk',
|
95
95
|
binaryPath: 'android/app/build/outputs/apk/debug/app-debug.apk',
|
96
96
|
build: 'cd android ; ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug ; cd -',
|
97
|
+
reversePorts: [8081],
|
97
98
|
},
|
98
99
|
'android.release': {
|
99
100
|
type: 'android.apk',
|
@@ -1,6 +1,8 @@
|
|
1
1
|
const firstTestContent = require('./firstTestContent');
|
2
2
|
|
3
|
-
const runnerConfig =
|
3
|
+
const runnerConfig = `\
|
4
|
+
/** @type {import('@jest/types').Config.InitialOptions} */
|
5
|
+
module.exports = {
|
4
6
|
rootDir: '..',
|
5
7
|
testMatch: ['<rootDir>/e2e/**/*.test.js'],
|
6
8
|
testTimeout: 120000,
|
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.0.
|
4
|
+
"version": "20.0.11-prerelease.0",
|
5
5
|
"bin": {
|
6
6
|
"detox": "local-cli/cli.js"
|
7
7
|
},
|
@@ -184,5 +184,5 @@
|
|
184
184
|
}
|
185
185
|
}
|
186
186
|
},
|
187
|
-
"gitHead": "
|
187
|
+
"gitHead": "bd5998c15067ee02fc7cd65ae28e55847a4387c9"
|
188
188
|
}
|
package/runners/deprecation.js
CHANGED
@@ -4,7 +4,7 @@ const chalk = require('chalk');
|
|
4
4
|
console.error(chalk.yellow(`
|
5
5
|
========================= THE NEW JOURNEY BEGINS =============================
|
6
6
|
|
7
|
-
|
7
|
+
https://wix.github.io/Detox/docs/next/guide/migration
|
8
8
|
|
9
9
|
_.-;-._ Sorry, traveler from the lands of Detox 19!
|
10
10
|
;_.JL___;
|
@@ -36,7 +36,7 @@ console.error(chalk.yellow(`
|
|
36
36
|
snd || '---' '.___>
|
37
37
|
Credit: "Gimli" by Shanaka Dias
|
38
38
|
|
39
|
-
|
39
|
+
https://wix.github.io/Detox/docs/next/guide/migration
|
40
40
|
|
41
41
|
========================= THE NEW JOURNEY BEGINS =============================
|
42
42
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
const { makeResourceTitle, makeResourceSubTitle } = require('./utils');
|
2
2
|
|
3
3
|
function makeURLDescription(url, urlCount) {
|
4
|
-
return makeResourceSubTitle(`URL #${urlCount}: ${url}
|
4
|
+
return makeResourceSubTitle(`URL #${urlCount}: ${url}`);
|
5
5
|
}
|
6
6
|
|
7
7
|
module.exports = function(properties) {
|
@@ -144,6 +144,10 @@ function validateAppConfig({ appConfig, appPath, deviceConfig, errorComposer })
|
|
144
144
|
if (appConfig.launchArgs && !_.isObject(appConfig.launchArgs)) {
|
145
145
|
throw errorComposer.malformedAppLaunchArgs(appPath);
|
146
146
|
}
|
147
|
+
|
148
|
+
if (appConfig.type !== 'android.apk' && appConfig.reversePorts) {
|
149
|
+
throw errorComposer.unsupportedReversePorts(appPath);
|
150
|
+
}
|
147
151
|
}
|
148
152
|
|
149
153
|
module.exports = composeAppsConfig;
|
@@ -88,7 +88,7 @@ function adaptLegacyRunnerConfig(globalConfig) {
|
|
88
88
|
return globalConfig.testRunner;
|
89
89
|
}
|
90
90
|
|
91
|
-
log.warn(`Please migrate your Detox config according to the guide
|
91
|
+
log.warn(`Please migrate your Detox config according to the guide:\nhttps://wix.github.io/Detox/docs/next/guide/migration\n`);
|
92
92
|
const testRunner = globalConfig[testRunnerKey];
|
93
93
|
const runnerConfig = globalConfig[runnerConfigKey];
|
94
94
|
const specs = globalConfig.specs != null ? String(globalConfig.specs) : undefined;
|
@@ -157,6 +157,30 @@ class AppleSimUtils {
|
|
157
157
|
}
|
158
158
|
|
159
159
|
async sendToHome(udid) {
|
160
|
+
if (await this._isSpringBoardInaccessible(udid)) {
|
161
|
+
// SpringBoard is not directly accessible by Simctl on iOS 16.0 and above, therefore we launch and terminate the
|
162
|
+
// Settings app instead. This sends the currently open app to the background and brings the home screen to the
|
163
|
+
// foreground.
|
164
|
+
await this._launchAndTerminateSettings(udid);
|
165
|
+
return;
|
166
|
+
}
|
167
|
+
|
168
|
+
await this._launchSpringBoard(udid);
|
169
|
+
}
|
170
|
+
|
171
|
+
async _isSpringBoardInaccessible(udid) {
|
172
|
+
const device = await this._findDeviceByUDID(udid);
|
173
|
+
const majorIOSVersion = parseInt(device.os.version.split('.')[0]);
|
174
|
+
return majorIOSVersion >= 16;
|
175
|
+
}
|
176
|
+
|
177
|
+
async _launchAndTerminateSettings(udid) {
|
178
|
+
const bundleId = 'com.apple.Preferences';
|
179
|
+
await this._execSimctl({ cmd: `launch ${udid} ${bundleId}`, retries: 10 });
|
180
|
+
await this._execSimctl({ cmd: `terminate ${udid} ${bundleId}`, retries: 10 });
|
181
|
+
}
|
182
|
+
|
183
|
+
async _launchSpringBoard(udid) {
|
160
184
|
await this._execSimctl({ cmd: `launch ${udid} com.apple.springboard`, retries: 10 });
|
161
185
|
}
|
162
186
|
|
@@ -271,7 +295,7 @@ class AppleSimUtils {
|
|
271
295
|
// ```
|
272
296
|
// This workaround is done to ignore the error above, as we do not care if the app was running before, we just
|
273
297
|
// want to make sure it isn't now.
|
274
|
-
if (err.code === 3 &&
|
298
|
+
if (err.code === 3 &&
|
275
299
|
(err.stderr.includes(`the app is not currently running`) ||
|
276
300
|
err.stderr.includes(`The operation couldn’t be completed. found nothing to terminate`))) {
|
277
301
|
return;
|
@@ -30,7 +30,7 @@ class GenyGlobalLifecycleHandler {
|
|
30
30
|
}
|
31
31
|
|
32
32
|
async function doSafeCleanup(instanceLifecycleService, instanceHandles) {
|
33
|
-
logger.info(cleanupLogData, 'Initiating Genymotion
|
33
|
+
logger.info(cleanupLogData, 'Initiating Genymotion SaaS instances teardown...');
|
34
34
|
|
35
35
|
const deletionLeaks = [];
|
36
36
|
const killPromises = instanceHandles.map((instanceHandle) =>
|
@@ -43,7 +43,7 @@ async function doSafeCleanup(instanceLifecycleService, instanceHandles) {
|
|
43
43
|
|
44
44
|
function reportGlobalCleanupSummary(deletionLeaks) {
|
45
45
|
if (deletionLeaks.length) {
|
46
|
-
logger.warn(cleanupLogData, 'WARNING! Detected a Genymotion
|
46
|
+
logger.warn(cleanupLogData, 'WARNING! Detected a Genymotion SaaS instance leakage, for the following instances:');
|
47
47
|
|
48
48
|
deletionLeaks.forEach(({ uuid, name, error }) => {
|
49
49
|
logger.warn(cleanupLogData, [
|
@@ -238,6 +238,16 @@ class RuntimeDevice {
|
|
238
238
|
async installApp(binaryPath, testBinaryPath) {
|
239
239
|
const currentApp = binaryPath ? { binaryPath, testBinaryPath } : this._getCurrentApp();
|
240
240
|
await this.deviceDriver.installApp(currentApp.binaryPath, currentApp.testBinaryPath);
|
241
|
+
|
242
|
+
// This abstraction leaks because our drivers themselves leak,
|
243
|
+
// so don't blame me - DeviceBaseDriver itself has `reverseTcpPort`,
|
244
|
+
// setting a vicious downward spiral. I can't refactor everything
|
245
|
+
// in a single pull request, so let's bear with it for now.
|
246
|
+
if (Array.isArray(currentApp.reversePorts)) {
|
247
|
+
for (const port of currentApp.reversePorts) {
|
248
|
+
await this.reverseTcpPort(port);
|
249
|
+
}
|
250
|
+
}
|
241
251
|
}
|
242
252
|
|
243
253
|
async uninstallApp(bundleId) {
|
@@ -507,6 +507,14 @@ Examine your Detox config${this._atPath()}`,
|
|
507
507
|
});
|
508
508
|
}
|
509
509
|
|
510
|
+
unsupportedReversePorts(appPath) {
|
511
|
+
return new DetoxConfigError({
|
512
|
+
message: `Non-Android app configs cannot have "reversePorts" property:`,
|
513
|
+
debugInfo: this._focusOnAppConfig(appPath),
|
514
|
+
inspectOptions: { depth: 4 },
|
515
|
+
});
|
516
|
+
}
|
517
|
+
|
510
518
|
missingAppBinaryPath(appPath) {
|
511
519
|
return new DetoxConfigError({
|
512
520
|
message: `Missing "binaryPath" property in the app config.\nExpected a string:`,
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.md5
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
9bde09ebc6c2e1d48446c96c8c395bf0
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
6f4375b8d626c5e56010bb9079d2def1daf66206
|
@@ -1 +0,0 @@
|
|
1
|
-
5f2296afd84c0b9887d0f69d5ce484c193e2337f457156755dd5dbd1b18e1f2e
|
@@ -1 +0,0 @@
|
|
1
|
-
9d30f9d43a3483289b0d34cd1c7f052328167aaf404558cb174f3134561d5cfda3440439af1c58239447ab8b18f6386ac3e3e06acde12db9753993d45fadb254
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.md5
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
215ed320f30e45f5ea71f65aa033306e
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
b39c10ee0d40e56d89210314cf5ddaf2d2aa96bb
|
@@ -1 +0,0 @@
|
|
1
|
-
83099d2c42349ecefa7540645d893fd1f57545a3d4a4176e64b6ea775cd1e624
|
@@ -1 +0,0 @@
|
|
1
|
-
ef17949935df0db02792f2b6c75ed22010258c48da606b417bd69e5ad41e9951810739c19f607f77ca245059573399e76310ac70fb5cfbcb1784be605fefb0d8
|
@@ -1 +0,0 @@
|
|
1
|
-
7a46662622c24f8677074374fd81b604
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
43bfd8fb25e7b0c24e0d1ed4b250f138b8f21537
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha256
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0df8f8ebf03215da2f15fe8e6a093b65dd808d6870b69eabbb4ae8f680b18bdc
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha512
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
e0721afc0568f85c754e4741cc58a885a77c8f6f485b9eda322290d906eae9707473016ca97ea6cef6583c9f98e82622dd13343d0fa5a7f9d77daf62f97791df
|
@@ -1 +0,0 @@
|
|
1
|
-
332c4d3da54dd80f67e23eda984e156b
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
c67b0ded2e25005ab37a36e40f69f2c7ddac7afc
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha256
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
f888b95186a4212d022b0288320cf4408d343bc0070522d91ebad8254f4fc20b
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha512
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
67a61376843dba1e684c928d6cab78c2682f7b20424cd75d06f67aae3a9a782ac3f9ca1208c68f5568067698fe7e909c236723a0a7ca11f67033d09292b55fe6
|