detox 20.22.0-smoke.0 → 20.22.1
Sign up to get free protection for your applications and to get access to all the features.
- package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar → 20.22.1/detox-20.22.1-sources.jar} +0 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.pom → 20.22.1/detox-20.22.1.pom} +1 -1
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1.pom.md5 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.22.1/detox-20.22.1.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-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar → 20.22.1/detox-legacy-20.22.1-sources.jar} +0 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom → 20.22.1/detox-legacy-20.22.1.pom} +1 -1
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1.pom.md5 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox-legacy/20.22.1/detox-legacy-20.22.1.pom.sha512 +1 -0
- package/Detox-android/com/wix/detox-legacy/maven-metadata.xml +4 -4
- package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.md5 +1 -1
- package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha1 +1 -1
- package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha256 +1 -1
- package/Detox-android/com/wix/detox-legacy/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/detox.d.ts +78 -3
- package/globals.d.ts +2 -0
- package/local-cli/build-framework-cache.js +19 -11
- package/local-cli/clean-framework-cache.js +19 -14
- package/local-cli/rebuild-framework-cache.js +20 -16
- package/local-cli/utils/frameworkUtils.js +77 -0
- package/package.json +4 -4
- package/scripts/build_framework.ios.sh +26 -60
- package/scripts/build_local_framework.ios.sh +62 -0
- package/scripts/build_local_xcuitest.ios.sh +53 -0
- package/scripts/build_xcuitest.ios.sh +18 -0
- package/scripts/pack_ios.sh +18 -9
- package/scripts/postinstall.js +11 -4
- package/src/android/AndroidExpect.js +5 -0
- package/src/android/matchers/index.js +7 -0
- package/src/client/Client.js +0 -4
- package/src/client/actions/actions.js +0 -19
- package/src/devices/runtime/RuntimeDevice.js +0 -5
- package/src/devices/runtime/drivers/DeviceDriverBase.js +0 -4
- package/src/devices/runtime/drivers/ios/SimulatorDriver.js +0 -11
- package/src/ios/XCUITestRunner.js +52 -0
- package/src/ios/expectTwo.js +49 -28
- package/src/ios/system.js +124 -0
- package/src/ios/web.js +3 -4
- package/src/matchers/factories/index.js +15 -8
- package/src/utils/assertArgument.js +11 -2
- package/src/utils/environment.js +34 -14
- package/src/utils/invocationTraceDescriptions.js +4 -0
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.22.0-smoke.0/detox-20.22.0-smoke.0.pom.sha512 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox-legacy/20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.pom.sha512 +0 -1
- package/Detox-ios.tbz +0 -0
- package/scripts/build_universal_framework.sh +0 -14
- package/scripts/build_universal_framework_legacy.sh +0 -76
- package/scripts/build_universal_framework_modern.sh +0 -28
- /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar → 20.22.1/detox-20.22.1.aar} +0 -0
- /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.md5 → 20.22.1/detox-20.22.1.aar.md5} +0 -0
- /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha1 → 20.22.1/detox-20.22.1.aar.sha1} +0 -0
- /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha256 → 20.22.1/detox-20.22.1.aar.sha256} +0 -0
- /package/Detox-android/com/wix/detox/{20.22.0-smoke.0/detox-20.22.0-smoke.0.aar.sha512 → 20.22.1/detox-20.22.1.aar.sha512} +0 -0
- /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar → 20.22.1/detox-legacy-20.22.1.aar} +0 -0
- /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.md5 → 20.22.1/detox-legacy-20.22.1.aar.md5} +0 -0
- /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha1 → 20.22.1/detox-legacy-20.22.1.aar.sha1} +0 -0
- /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha256 → 20.22.1/detox-legacy-20.22.1.aar.sha256} +0 -0
- /package/Detox-android/com/wix/detox-legacy/{20.22.0-smoke.0/detox-legacy-20.22.0-smoke.0.aar.sha512 → 20.22.1/detox-legacy-20.22.1.aar.sha512} +0 -0
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
12fc5f8f5320722c32cec05913e1ea6b
|
@@ -0,0 +1 @@
|
|
1
|
+
6c359a3d909e73c7a186d15a480de5d523803c0d
|
@@ -0,0 +1 @@
|
|
1
|
+
f7a62fd36fa62076f9273972eea7319f13a4ecc89b87efdf766523ba3a1b1b59
|
@@ -0,0 +1 @@
|
|
1
|
+
27fca15dfea754479b3d4932c65e57a305822286a148f4ed496be8726650c612367529ac6d7bf1f959086a674513ae141523fa4ada8480fc170518261d7b4292
|
@@ -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.22.
|
6
|
+
<version>20.22.1</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
|
+
6d487956856369ba599fef5ba68a73c9
|
@@ -0,0 +1 @@
|
|
1
|
+
eaeeac7afa38642e32dd5e36396d78c724842a19
|
@@ -0,0 +1 @@
|
|
1
|
+
0ac8080eaaf88cc82d30ed366786ab6c0023e591b33d3857e935fd34eb73ed19
|
@@ -0,0 +1 @@
|
|
1
|
+
a60debc9e9267c3fa18c7a71539c6b35d4d2e60def71a08ba72a584217c602db2eac2c79c83a30beddea7d6b08fc2ac052bf9588660171c43dccab53ff314615
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<groupId>com.wix</groupId>
|
4
4
|
<artifactId>detox</artifactId>
|
5
5
|
<versioning>
|
6
|
-
<latest>20.22.
|
7
|
-
<release>20.22.
|
6
|
+
<latest>20.22.1</latest>
|
7
|
+
<release>20.22.1</release>
|
8
8
|
<versions>
|
9
|
-
<version>20.22.
|
9
|
+
<version>20.22.1</version>
|
10
10
|
</versions>
|
11
|
-
<lastUpdated>
|
11
|
+
<lastUpdated>20240522140456</lastUpdated>
|
12
12
|
</versioning>
|
13
13
|
</metadata>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
be375cfc5f6f5d52ccd52744de282b44
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
b5e4ab1628b01486489fd6889ab1bee10df43ca2
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
14de207023f462ae370425b1669b6d13e5a02160d3a7f7b581b25ff113fc28cf
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
591f800135fe68cdb99f56ea49997a74e5c353b1ecf77a70a0e3a779f33b4f174a1b478361056b349bdd4f966e1aa0437a168abf5f2dd74c8faa042317a8d7df
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
68151b450b19bd10ebc8119f7a9382a5
|
@@ -0,0 +1 @@
|
|
1
|
+
55a0ede0c449fd4b7fca263566dfaa1dd0eb19ab
|
@@ -0,0 +1 @@
|
|
1
|
+
7b6e5ee416c4d6d7dfc834fdd59600f429c3abf51f12b038f8083bce6f9cf7dd
|
@@ -0,0 +1 @@
|
|
1
|
+
5faae34c57ba69628bb52fdb7dac52f85a8388977e316029525b66fb19a4d317574b847b280c23269b62b1d615b4e7f8bc0fcffd8c69c379a33b6378acbd4562
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<modelVersion>4.0.0</modelVersion>
|
4
4
|
<groupId>com.wix</groupId>
|
5
5
|
<artifactId>detox-legacy</artifactId>
|
6
|
-
<version>20.22.
|
6
|
+
<version>20.22.1</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
|
+
68ca5e83cbe1ded287a19e9e32b06982
|
@@ -0,0 +1 @@
|
|
1
|
+
d1dfc9a900e3adc43218535a9461e47d9128aea5
|
@@ -0,0 +1 @@
|
|
1
|
+
d507b9f1814be25348eb81707b668aaf44f212b7a17bbb2597a9bc174f3f4e60
|
@@ -0,0 +1 @@
|
|
1
|
+
654a047e166839fed9b651bd1b1f22005b8d8b2d7ccfd0e4e43afb9d87f48a6d3e6d9375f6a71b0384443f65b61daf06475b7c526ebd263f99b8e80e28a09091
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<groupId>com.wix</groupId>
|
4
4
|
<artifactId>detox-legacy</artifactId>
|
5
5
|
<versioning>
|
6
|
-
<latest>20.22.
|
7
|
-
<release>20.22.
|
6
|
+
<latest>20.22.1</latest>
|
7
|
+
<release>20.22.1</release>
|
8
8
|
<versions>
|
9
|
-
<version>20.22.
|
9
|
+
<version>20.22.1</version>
|
10
10
|
</versions>
|
11
|
-
<lastUpdated>
|
11
|
+
<lastUpdated>20240522140527</lastUpdated>
|
12
12
|
</versioning>
|
13
13
|
</metadata>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
d800dd5b49eac3eb61df71c2f4609c6b
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
351f9fb4f8c062897ded72817f766ec70fa3efcd
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
54d45c0fc44b6e69c9fb7db576f8792b9d47bbd9fda8cc9e951c9282a2c53ab3
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
fa3890f141a927f269a7f2e4d807a65f9a2a4171c745858898229e826249ec830a6fbfae74eeb23e9602c6e40d274fc42f9c937bd3667f9784c36ef82d3da980
|
Binary file
|
package/Detox-ios-src.tbz
CHANGED
Binary file
|
Binary file
|
package/detox.d.ts
CHANGED
@@ -431,6 +431,8 @@ declare global {
|
|
431
431
|
|
432
432
|
readonly web: WebFacade;
|
433
433
|
|
434
|
+
readonly system: SystemFacade;
|
435
|
+
|
434
436
|
readonly DetoxConstants: {
|
435
437
|
userNotificationTriggers: {
|
436
438
|
push: 'push';
|
@@ -903,8 +905,6 @@ declare global {
|
|
903
905
|
*/
|
904
906
|
captureViewHierarchy(name?: string): Promise<string>;
|
905
907
|
|
906
|
-
getUIHierarchy(): Promise<string>;
|
907
|
-
|
908
908
|
/**
|
909
909
|
* Simulate shake (iOS Only)
|
910
910
|
*/
|
@@ -1040,6 +1040,12 @@ declare global {
|
|
1040
1040
|
* Collection of web matchers
|
1041
1041
|
*/
|
1042
1042
|
readonly web: ByWebFacade;
|
1043
|
+
|
1044
|
+
/**
|
1045
|
+
* Collection of system-level matchers
|
1046
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1047
|
+
*/
|
1048
|
+
readonly system: BySystemFacade;
|
1043
1049
|
}
|
1044
1050
|
|
1045
1051
|
interface ByWebFacade {
|
@@ -1108,6 +1114,24 @@ declare global {
|
|
1108
1114
|
tag(tagName: string): WebMatcher;
|
1109
1115
|
}
|
1110
1116
|
|
1117
|
+
interface BySystemFacade {
|
1118
|
+
/**
|
1119
|
+
* Find an element on the System-level by its label
|
1120
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1121
|
+
* @example
|
1122
|
+
* system.element(by.system.text('Allow'))
|
1123
|
+
*/
|
1124
|
+
label(text: string): SystemMatcher;
|
1125
|
+
|
1126
|
+
/**
|
1127
|
+
* Find an element on the System-level by its type
|
1128
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1129
|
+
* @example
|
1130
|
+
* system.element(by.system.type('button'))
|
1131
|
+
*/
|
1132
|
+
type(type: string): SystemMatcher;
|
1133
|
+
}
|
1134
|
+
|
1111
1135
|
interface NativeMatcher {
|
1112
1136
|
/**
|
1113
1137
|
* Find an element satisfying all the matchers
|
@@ -1129,13 +1153,19 @@ declare global {
|
|
1129
1153
|
}
|
1130
1154
|
|
1131
1155
|
interface WebMatcher {
|
1132
|
-
__web__: any; // prevent type
|
1156
|
+
__web__: any; // prevent type coercion
|
1157
|
+
}
|
1158
|
+
|
1159
|
+
interface SystemMatcher {
|
1160
|
+
__system__: any; // prevent type coercion
|
1133
1161
|
}
|
1134
1162
|
|
1135
1163
|
interface ExpectFacade {
|
1136
1164
|
(element: NativeElement): Expect;
|
1137
1165
|
|
1138
1166
|
(webElement: WebElement): WebExpect;
|
1167
|
+
|
1168
|
+
(systemElement: SystemElement): SystemExpect;
|
1139
1169
|
}
|
1140
1170
|
|
1141
1171
|
interface WebViewElement {
|
@@ -1166,6 +1196,35 @@ declare global {
|
|
1166
1196
|
(matcher?: NativeMatcher): WebViewElement;
|
1167
1197
|
}
|
1168
1198
|
|
1199
|
+
interface SystemFacade {
|
1200
|
+
/**
|
1201
|
+
* Find an element on the System-level using a system matcher.
|
1202
|
+
* @param systemMatcher a system matcher for the system element.
|
1203
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1204
|
+
* @example
|
1205
|
+
* system.element(by.system.label('Allow'))
|
1206
|
+
*/
|
1207
|
+
element(systemMatcher: SystemMatcher): IndexableSystemElement;
|
1208
|
+
}
|
1209
|
+
|
1210
|
+
interface IndexableSystemElement extends SystemElement {
|
1211
|
+
/**
|
1212
|
+
* Choose from multiple elements matching the same matcher using index
|
1213
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1214
|
+
* @example await system.element(by.system.type('button')).atIndex(1).tap();
|
1215
|
+
*/
|
1216
|
+
atIndex(index: number): SystemElement;
|
1217
|
+
}
|
1218
|
+
|
1219
|
+
interface SystemElement {
|
1220
|
+
/**
|
1221
|
+
* Simulate a tap on the element.
|
1222
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1223
|
+
* @example await system.element(by.system.label('Allow')).tap();
|
1224
|
+
*/
|
1225
|
+
tap(): Promise<void>;
|
1226
|
+
}
|
1227
|
+
|
1169
1228
|
interface Expect<R = Promise<void>> {
|
1170
1229
|
|
1171
1230
|
/**
|
@@ -1533,6 +1592,22 @@ declare global {
|
|
1533
1592
|
toExist(): R;
|
1534
1593
|
}
|
1535
1594
|
|
1595
|
+
interface SystemExpect<R = Promise<void>> {
|
1596
|
+
/**
|
1597
|
+
* Negate the expectation.
|
1598
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1599
|
+
* @example await expect(system.element(by.system.text('Allow'))).not.toExist();
|
1600
|
+
*/
|
1601
|
+
not: this;
|
1602
|
+
|
1603
|
+
/**
|
1604
|
+
* Expect the view to exist in the system-level.
|
1605
|
+
* @note System APIs are still in experimental phase and are subject to changes in the near future.
|
1606
|
+
* @example await expect(system.element(by.system.text('Allow'))).toExist();
|
1607
|
+
*/
|
1608
|
+
toExist(): R;
|
1609
|
+
}
|
1610
|
+
|
1536
1611
|
interface IndexableWebElement extends WebElement {
|
1537
1612
|
/**
|
1538
1613
|
* Choose from multiple elements matching the same matcher using index.
|
package/globals.d.ts
CHANGED
@@ -8,6 +8,7 @@ declare global {
|
|
8
8
|
const expect: Detox.DetoxExportWrapper['expect'];
|
9
9
|
const by: Detox.DetoxExportWrapper['by'];
|
10
10
|
const web: Detox.DetoxExportWrapper['web'];
|
11
|
+
const system: Detox.DetoxExportWrapper['system'];
|
11
12
|
|
12
13
|
namespace NodeJS {
|
13
14
|
interface Global {
|
@@ -18,6 +19,7 @@ declare global {
|
|
18
19
|
expect: Detox.DetoxExportWrapper['expect'];
|
19
20
|
by: Detox.DetoxExportWrapper['by'];
|
20
21
|
web: Detox.DetoxExportWrapper['web'];
|
22
|
+
system: Detox.DetoxExportWrapper['system'];
|
21
23
|
}
|
22
24
|
}
|
23
25
|
}
|
@@ -1,16 +1,24 @@
|
|
1
|
-
const
|
2
|
-
const os = require('os');
|
3
|
-
const path = require('path');
|
1
|
+
const { build } = require('./utils/frameworkUtils');
|
4
2
|
|
5
|
-
|
3
|
+
module.exports = {
|
4
|
+
command: 'build-framework-cache',
|
5
|
+
desc: 'Builds cached versions of the Detox framework and XCUITest-runner in ~/Library/Detox. ' +
|
6
|
+
'Use the `--detox` and `--xcuitest` flags to selectively build the framework components. ' +
|
7
|
+
'By default, both the injected Detox library and the XCUITest test runner are built. (MacOS only)',
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
builder: yargs => yargs
|
10
|
+
.option('detox', {
|
11
|
+
describe: 'Build only the injected Detox library',
|
12
|
+
type: 'boolean',
|
13
|
+
default: false
|
14
|
+
})
|
15
|
+
.option('xcuitest', {
|
16
|
+
describe: 'Build only the XCUITest test runner',
|
17
|
+
type: 'boolean',
|
18
|
+
default: false
|
19
|
+
}),
|
9
20
|
|
10
|
-
|
11
|
-
|
12
|
-
cp.execSync(path.join(__dirname, '../scripts/build_framework.ios.sh'), { stdio: 'inherit' });
|
13
|
-
} else {
|
14
|
-
detox.log.info(`The command is supported only on macOS, skipping the execution.`);
|
21
|
+
handler: async function(argv) {
|
22
|
+
await build(argv.detox, argv.xcuitest);
|
15
23
|
}
|
16
24
|
};
|
@@ -1,19 +1,24 @@
|
|
1
|
-
const
|
2
|
-
const path = require('path');
|
1
|
+
const { clean } = require('./utils/frameworkUtils');
|
3
2
|
|
4
|
-
|
3
|
+
module.exports = {
|
4
|
+
command: 'clean-framework-cache',
|
5
|
+
desc: 'Cleans cached versions of the Detox framework and XCUITest-runner in ~/Library/Detox. ' +
|
6
|
+
'Use the `--detox` and `--xcuitest` flags to selectively clean the framework components. ' +
|
7
|
+
'By default, both the injected Detox library and the XCUITest test runner are cleaned. (MacOS only)',
|
5
8
|
|
6
|
-
|
9
|
+
builder: yargs => yargs
|
10
|
+
.option('detox', {
|
11
|
+
describe: 'Clean only the injected Detox library',
|
12
|
+
type: 'boolean',
|
13
|
+
default: false
|
14
|
+
})
|
15
|
+
.option('xcuitest', {
|
16
|
+
describe: 'Clean only the XCUITest test runner',
|
17
|
+
type: 'boolean',
|
18
|
+
default: false
|
19
|
+
}),
|
7
20
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
module.exports.handler = async function cleanFrameworkCache() {
|
12
|
-
if (os.platform() === 'darwin') {
|
13
|
-
const frameworkPath = path.join(os.homedir(), '/Library/Detox');
|
14
|
-
detox.log.info(`Removing framework binaries from ${frameworkPath}`);
|
15
|
-
await fs.remove(frameworkPath);
|
16
|
-
} else {
|
17
|
-
detox.log.info(`The command is supported only on macOS, skipping the execution.`);
|
21
|
+
handler: async function(argv) {
|
22
|
+
await clean(argv.detox, argv.xcuitest);
|
18
23
|
}
|
19
24
|
};
|
@@ -1,21 +1,25 @@
|
|
1
|
-
const
|
2
|
-
const os = require('os');
|
3
|
-
const path = require('path');
|
1
|
+
const { build, clean } = require('./utils/frameworkUtils');
|
4
2
|
|
5
|
-
|
3
|
+
module.exports = {
|
4
|
+
command: 'rebuild-framework-cache',
|
5
|
+
desc: 'Rebuilds cached versions of the Detox framework and XCUITest-runner in ~/Library/Detox. ' +
|
6
|
+
'Use the `--detox` and `--xcuitest` flags to selectively rebuild the framework components. ' +
|
7
|
+
'By default, both the injected Detox library and the XCUITest test runner are rebuilt. (MacOS only)',
|
6
8
|
|
7
|
-
|
9
|
+
builder: yargs => yargs
|
10
|
+
.option('detox', {
|
11
|
+
describe: 'Rebuild only the injected Detox library',
|
12
|
+
type: 'boolean',
|
13
|
+
default: false
|
14
|
+
})
|
15
|
+
.option('xcuitest', {
|
16
|
+
describe: 'Rebuild only the XCUITest test runner',
|
17
|
+
type: 'boolean',
|
18
|
+
default: false
|
19
|
+
}),
|
8
20
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
module.exports.handler = async function buildFrameworkCache() {
|
13
|
-
if (os.platform() === 'darwin') {
|
14
|
-
const frameworkPath = path.join(os.homedir(), '/Library/Detox');
|
15
|
-
log.info(`Removing framework binaries from ${frameworkPath}`);
|
16
|
-
await fs.remove(frameworkPath);
|
17
|
-
cp.execSync(path.join(__dirname, '../scripts/build_framework.ios.sh'), { stdio: 'inherit' });
|
18
|
-
} else {
|
19
|
-
log.info(`The command is supported only on macOS, skipping the execution.`);
|
21
|
+
handler: async function(argv) {
|
22
|
+
await clean(argv.detox, argv.xcuitest);
|
23
|
+
await build(argv.detox, argv.xcuitest);
|
20
24
|
}
|
21
25
|
};
|
@@ -0,0 +1,77 @@
|
|
1
|
+
const os = require('os');
|
2
|
+
const path = require('path');
|
3
|
+
|
4
|
+
const { spawn } = require('child-process-promise');
|
5
|
+
const fs = require('fs-extra');
|
6
|
+
|
7
|
+
const detox = require('../../internals');
|
8
|
+
const { getFrameworkDirPath, getXCUITestRunnerDirPath } = require('../../src/utils/environment');
|
9
|
+
|
10
|
+
|
11
|
+
const frameworkBuildScript = '../../scripts/build_local_framework.ios.sh';
|
12
|
+
const xcuitestBuildScript = '../../scripts/build_local_xcuitest.ios.sh';
|
13
|
+
|
14
|
+
function shouldSkipExecution() {
|
15
|
+
if (os.platform() !== 'darwin') {
|
16
|
+
detox.log.info('The command is supported only on macOS, skipping the execution.');
|
17
|
+
return true;
|
18
|
+
}
|
19
|
+
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
|
23
|
+
async function execBuildScript(targetPath, scriptPath, descriptor) {
|
24
|
+
detox.log.info(`Building ${descriptor} cache at ${targetPath}..`);
|
25
|
+
|
26
|
+
const scriptFullPath = path.join(__dirname, scriptPath);
|
27
|
+
|
28
|
+
try {
|
29
|
+
await spawn(scriptFullPath, [], { stdio: 'inherit' });
|
30
|
+
} catch (error) {
|
31
|
+
detox.log.error(`Error while building ${descriptor}:\n${error}`);
|
32
|
+
throw error;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
async function removeTarget(targetPath, descriptor) {
|
37
|
+
detox.log.info(`Cleaning ${descriptor} cache at ${targetPath}..`);
|
38
|
+
await fs.remove(targetPath);
|
39
|
+
detox.log.info(`Done\n`);
|
40
|
+
}
|
41
|
+
|
42
|
+
async function build(framework, xcuitest) {
|
43
|
+
if (shouldSkipExecution()) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
|
47
|
+
const shouldBuildBoth = !framework && !xcuitest;
|
48
|
+
|
49
|
+
if (framework || shouldBuildBoth) {
|
50
|
+
await execBuildScript(getFrameworkDirPath, frameworkBuildScript, 'Detox framework');
|
51
|
+
}
|
52
|
+
|
53
|
+
if (xcuitest || shouldBuildBoth) {
|
54
|
+
await execBuildScript(getXCUITestRunnerDirPath, xcuitestBuildScript, 'XCUITest runner');
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
async function clean(framework, xcuitest) {
|
59
|
+
if (shouldSkipExecution()) {
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
|
63
|
+
const shouldCleanBoth = !framework && !xcuitest;
|
64
|
+
|
65
|
+
if (framework || shouldCleanBoth) {
|
66
|
+
await removeTarget(getFrameworkDirPath, 'Detox framework');
|
67
|
+
}
|
68
|
+
|
69
|
+
if (xcuitest || shouldCleanBoth) {
|
70
|
+
await removeTarget(getXCUITestRunnerDirPath, 'XCUITest runner');
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
module.exports = {
|
75
|
+
build,
|
76
|
+
clean
|
77
|
+
};
|
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.22.
|
4
|
+
"version": "20.22.1",
|
5
5
|
"bin": {
|
6
6
|
"detox": "local-cli/cli.js"
|
7
7
|
},
|
@@ -56,7 +56,7 @@
|
|
56
56
|
"eslint-plugin-node": "^11.1.0",
|
57
57
|
"eslint-plugin-unicorn": "^50.0.1",
|
58
58
|
"jest": "^29.6.3",
|
59
|
-
"jest-allure2-reporter": "^2.0.0-beta.
|
59
|
+
"jest-allure2-reporter": "^2.0.0-beta.18",
|
60
60
|
"metro-react-native-babel-preset": "0.76.8",
|
61
61
|
"prettier": "^3.1.1",
|
62
62
|
"react-native": "0.73.2",
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"funpermaproxy": "^1.1.0",
|
78
78
|
"glob": "^8.0.3",
|
79
79
|
"ini": "^1.3.4",
|
80
|
-
"jest-environment-emit": "^1.0.
|
80
|
+
"jest-environment-emit": "^1.0.8",
|
81
81
|
"json-cycle": "^1.3.0",
|
82
82
|
"lodash": "^4.17.11",
|
83
83
|
"multi-sort-stream": "^1.0.3",
|
@@ -115,5 +115,5 @@
|
|
115
115
|
"browserslist": [
|
116
116
|
"node 14"
|
117
117
|
],
|
118
|
-
"gitHead": "
|
118
|
+
"gitHead": "20413288382d53854fe485784683117490e203c4"
|
119
119
|
}
|
@@ -1,62 +1,28 @@
|
|
1
1
|
#!/bin/bash -e
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
}
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
}
|
29
|
-
|
30
|
-
function buildFramework () {
|
31
|
-
detoxSourcePath="${1}"
|
32
|
-
echo "Building Detox.framework from ${detoxSourcePath} into ${detoxFrameworkDirPath}"
|
33
|
-
mkdir -p "${detoxFrameworkDirPath}"
|
34
|
-
logPath="${detoxFrameworkDirPath}"/detox_ios.log
|
35
|
-
echo "Build log: ${logPath}"
|
36
|
-
echo -n "" > "${logPath}"
|
37
|
-
"${detoxRootPath}"/scripts/build_universal_framework.sh "${detoxSourcePath}"/Detox.xcodeproj "${detoxFrameworkDirPath}" &> "${logPath}" || {
|
38
|
-
echo -e "#################################\nError building Detox.framework:\n----------------------------------\n"
|
39
|
-
cat "${logPath}"
|
40
|
-
echo "#################################"
|
41
|
-
exit 1
|
42
|
-
}
|
43
|
-
}
|
44
|
-
|
45
|
-
function main () {
|
46
|
-
if [ -d "${detoxFrameworkDirPath}" ]; then
|
47
|
-
if [ ! -d "${detoxFrameworkPath}" ]; then
|
48
|
-
echo "${detoxFrameworkDirPath} was found, but could not find Detox.framework inside it. This means that the Detox framework build process was interrupted.
|
49
|
-
deleting ${detoxFrameworkDirPath} and trying to rebuild."
|
50
|
-
rm -rf "${detoxFrameworkDirPath}"
|
51
|
-
prepareAndBuildFramework
|
52
|
-
else
|
53
|
-
echo "Detox.framework exists, skipping..."
|
54
|
-
fi
|
55
|
-
else
|
56
|
-
prepareAndBuildFramework
|
57
|
-
fi
|
58
|
-
|
59
|
-
echo "Done"
|
60
|
-
}
|
61
|
-
|
62
|
-
main
|
3
|
+
PROJECT=$1
|
4
|
+
FRAMEWORK_OUTPUT_DIR=$2
|
5
|
+
CONFIGURATION=Release
|
6
|
+
PROJECT_NAME=Detox
|
7
|
+
|
8
|
+
# Make sure the output directory exists
|
9
|
+
|
10
|
+
rm -fr "${FRAMEWORK_OUTPUT_DIR}"
|
11
|
+
mkdir -p "${FRAMEWORK_OUTPUT_DIR}"
|
12
|
+
|
13
|
+
# Step 0. Xcode version
|
14
|
+
|
15
|
+
USE_NEW_BUILD_SYSTEM="YES"
|
16
|
+
echo "Using -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM}"
|
17
|
+
|
18
|
+
# Step 1. Build Device and Simulator versions
|
19
|
+
|
20
|
+
BUILD_SIM=`xcodebuild -project "${PROJECT}" -scheme "Detox" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -configuration "${CONFIGURATION}" -sdk iphonesimulator -destination "generic/platform=iOS Simulator" build -showBuildSettings | awk -F= '/TARGET_BUILD_DIR/{x=$NF; gsub(/^[ \t]+|[ \t]+$/,"",x); print x}'`
|
21
|
+
|
22
|
+
echo ${BUILD_SIM}
|
23
|
+
|
24
|
+
xcodebuild -project "${PROJECT}" -scheme "Detox" -UseNewBuildSystem=${USE_NEW_BUILD_SYSTEM} -configuration "${CONFIGURATION}" -sdk iphonesimulator -destination "generic/platform=iOS Simulator" build -quiet
|
25
|
+
|
26
|
+
# Step 2. Copy the framework to output folder
|
27
|
+
|
28
|
+
cp -fR "${BUILD_SIM}/${PROJECT_NAME}.framework" "${FRAMEWORK_OUTPUT_DIR}"/
|