Browse Source

adding detox

Daniel Zlotin 7 years ago
parent
commit
5e2a4d0878

+ 17
- 0
example/e2e/init.js View File

@@ -0,0 +1,17 @@
1
+/*eslint-disable*/
2
+const detox = require('detox');
3
+const config = require('../package.json').detox;
4
+
5
+before(function(done) {
6
+  this.timeout(120000);
7
+  detox.config(config);
8
+  detox.start(done);
9
+});
10
+
11
+afterEach(function(done) {
12
+  detox.waitForTestResult(done);
13
+});
14
+
15
+after(function(done) {
16
+  detox.cleanup(done);
17
+});

+ 2
- 0
example/e2e/mocha.opts View File

@@ -0,0 +1,2 @@
1
+--recursive
2
+--timeout 120000

+ 9
- 0
example/e2e/sanity.test.js View File

@@ -0,0 +1,9 @@
1
+describe('sanity', function() {
2
+  beforeEach(function(done) {
3
+    global.simulator.reloadReactNativeApp(done);
4
+  });
5
+
6
+  it('should have screen one showing', function() {
7
+    expect(element(by.label('Screen One'))).toBeVisible();
8
+  });
9
+});

+ 228
- 24
example/ios/example.xcodeproj/project.pbxproj View File

@@ -7,23 +7,23 @@
7 7
 	objects = {
8 8
 
9 9
 /* Begin PBXBuildFile section */
10
-		00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
11
-		00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
12
-		00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
13
-		00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
14
-		00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
10
+		00C302E51ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
11
+		00C302E71ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
12
+		00C302E81ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
13
+		00C302E91ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
14
+		00C302EA1ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
15 15
 		00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };
16
-		133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
17
-		139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
18
-		139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
16
+		133E29F31AD74F7200F7D852 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
17
+		139105C61AF99C1200B5F7CC /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
18
+		139FDEF61B0652A700C62182 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
19 19
 		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
20 20
 		13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
21 21
 		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
22 22
 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
23
-		146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
24
-		2647D65F1DB175C200B23722 /* libReactNativeNavigation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2647D65E1DB175B300B23722 /* libReactNativeNavigation.a */; };
25
-		7B9B39861DEB4091004A6281 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B9B39631DEB4076004A6281 /* libRCTAnimation.a */; };
26
-		832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
23
+		146834051AC3E58100842450 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
24
+		2647D65F1DB175C200B23722 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 2647D65E1DB175B300B23722 /* libReactNativeNavigation.a */; };
25
+		7B9B39861DEB4091004A6281 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B9B39631DEB4076004A6281 /* libRCTAnimation.a */; };
26
+		832341BD1AAA6AB300B99B32 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
27 27
 /* End PBXBuildFile section */
28 28
 
29 29
 /* Begin PBXContainerItemProxy section */
@@ -214,18 +214,18 @@
214 214
 			isa = PBXFrameworksBuildPhase;
215 215
 			buildActionMask = 2147483647;
216 216
 			files = (
217
-				7B9B39861DEB4091004A6281 /* libRCTAnimation.a in Frameworks */,
218
-				2647D65F1DB175C200B23722 /* libReactNativeNavigation.a in Frameworks */,
219
-				146834051AC3E58100842450 /* libReact.a in Frameworks */,
220
-				00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
221
-				00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
222
-				00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
223
-				133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
224
-				00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
225
-				139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
226
-				832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
227
-				00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
228
-				139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
217
+				7B9B39861DEB4091004A6281 /* ReferenceProxy in Frameworks */,
218
+				2647D65F1DB175C200B23722 /* ReferenceProxy in Frameworks */,
219
+				146834051AC3E58100842450 /* ReferenceProxy in Frameworks */,
220
+				00C302E51ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
221
+				00C302E71ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
222
+				00C302E81ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
223
+				133E29F31AD74F7200F7D852 /* ReferenceProxy in Frameworks */,
224
+				00C302E91ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
225
+				139105C61AF99C1200B5F7CC /* ReferenceProxy in Frameworks */,
226
+				832341BD1AAA6AB300B99B32 /* ReferenceProxy in Frameworks */,
227
+				00C302EA1ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
228
+				139FDEF61B0652A700C62182 /* ReferenceProxy in Frameworks */,
229 229
 			);
230 230
 			runOnlyForDeploymentPostprocessing = 0;
231 231
 		};
@@ -436,6 +436,7 @@
436 436
 				13B07F8C1A680F5B00A75B9A /* Frameworks */,
437 437
 				13B07F8E1A680F5B00A75B9A /* Resources */,
438 438
 				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
439
+				6956ED03EAA1831C238A5BB4 /* Copy Detox Framework */,
439 440
 			);
440 441
 			buildRules = (
441 442
 			);
@@ -707,6 +708,21 @@
707 708
 			shellPath = /bin/sh;
708 709
 			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
709 710
 		};
711
+		6956ED03EAA1831C238A5BB4 /* Copy Detox Framework */ = {
712
+			isa = PBXShellScriptBuildPhase;
713
+			buildActionMask = 2147483647;
714
+			files = (
715
+			);
716
+			inputPaths = (
717
+			);
718
+			name = "Copy Detox Framework";
719
+			outputPaths = (
720
+			);
721
+			runOnlyForDeploymentPostprocessing = 0;
722
+			shellPath = /bin/bash;
723
+			shellScript = "if [ -n \"$DEPLOY_DETOX_FRAMEWORK\" ]; then\nmkdir -p \"${BUILT_PRODUCTS_DIR}\"/\"${FRAMEWORKS_FOLDER_PATH}\"\ncp -r \"${PROJECT_DIR}\"/../node_modules/detox/Detox.framework \"${BUILT_PRODUCTS_DIR}\"/\"${FRAMEWORKS_FOLDER_PATH}\"\nfi";
724
+			showEnvVarsInLog = 1;
725
+		};
710 726
 /* End PBXShellScriptBuildPhase section */
711 727
 
712 728
 /* Begin PBXSourcesBuildPhase section */
@@ -830,6 +846,73 @@
830 846
 			};
831 847
 			name = Release;
832 848
 		};
849
+		2C24A1398D388E120DDC2CA1 /* Debug_Detox */ = {
850
+			isa = XCBuildConfiguration;
851
+			buildSettings = {
852
+				ALWAYS_SEARCH_USER_PATHS = NO;
853
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
854
+				CLANG_CXX_LIBRARY = "libc++";
855
+				CLANG_ENABLE_MODULES = YES;
856
+				CLANG_ENABLE_OBJC_ARC = YES;
857
+				CLANG_WARN_BOOL_CONVERSION = YES;
858
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
859
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
860
+				CLANG_WARN_EMPTY_BODY = YES;
861
+				CLANG_WARN_ENUM_CONVERSION = YES;
862
+				CLANG_WARN_INT_CONVERSION = YES;
863
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
864
+				CLANG_WARN_UNREACHABLE_CODE = YES;
865
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
866
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
867
+				COPY_PHASE_STRIP = NO;
868
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
869
+				GCC_C_LANGUAGE_STANDARD = gnu99;
870
+				GCC_DYNAMIC_NO_PIC = NO;
871
+				GCC_OPTIMIZATION_LEVEL = 0;
872
+				GCC_PREPROCESSOR_DEFINITIONS = (
873
+					"DEBUG=1",
874
+					"$(inherited)",
875
+				);
876
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
877
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
878
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
879
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
880
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
881
+				GCC_WARN_UNUSED_FUNCTION = YES;
882
+				GCC_WARN_UNUSED_VARIABLE = YES;
883
+				HEADER_SEARCH_PATHS = (
884
+					"$(inherited)",
885
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
886
+					"$(SRCROOT)/../node_modules/react-native/React/**",
887
+				);
888
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
889
+				MTL_ENABLE_DEBUG_INFO = YES;
890
+				ONLY_ACTIVE_ARCH = YES;
891
+				OTHER_LDFLAGS = "";
892
+				SDKROOT = iphoneos;
893
+			};
894
+			name = Debug_Detox;
895
+		};
896
+		5627D4C51CEC610E1744267F /* Debug_Detox */ = {
897
+			isa = XCBuildConfiguration;
898
+			buildSettings = {
899
+				BUNDLE_LOADER = "$(TEST_HOST)";
900
+				FRAMEWORK_SEARCH_PATHS = (
901
+					"$(SDKROOT)/Developer/Library/Frameworks",
902
+					"$(inherited)",
903
+				);
904
+				GCC_PREPROCESSOR_DEFINITIONS = (
905
+					"DEBUG=1",
906
+					"$(inherited)",
907
+				);
908
+				INFOPLIST_FILE = exampleTests/Info.plist;
909
+				IPHONEOS_DEPLOYMENT_TARGET = 8.2;
910
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
911
+				PRODUCT_NAME = "$(TARGET_NAME)";
912
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
913
+			};
914
+			name = Debug_Detox;
915
+		};
833 916
 		83CBBA201A601CBA00E9B192 /* Debug */ = {
834 917
 			isa = XCBuildConfiguration;
835 918
 			buildSettings = {
@@ -918,6 +1001,121 @@
918 1001
 			};
919 1002
 			name = Release;
920 1003
 		};
1004
+		96FA810D67E56FD9D43906E6 /* Release_Detox */ = {
1005
+			isa = XCBuildConfiguration;
1006
+			buildSettings = {
1007
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1008
+				DEPLOY_DETOX_FRAMEWORK = YES;
1009
+				FRAMEWORK_SEARCH_PATHS = (
1010
+					"$(inherited)",
1011
+					"$(PROJECT_DIR)/../node_modules/detox",
1012
+				);
1013
+				HEADER_SEARCH_PATHS = (
1014
+					"$(inherited)",
1015
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
1016
+					"$(SRCROOT)/../node_modules/react-native/React/**",
1017
+					"$(SRCROOT)/../node_modules/react-native-navigation/ios/**",
1018
+				);
1019
+				INFOPLIST_FILE = example/Info.plist;
1020
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
1021
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1022
+				OTHER_LDFLAGS = (
1023
+					"-ObjC",
1024
+					"-l\"c++\"",
1025
+					"-framework",
1026
+					Detox,
1027
+				);
1028
+				PRODUCT_NAME = example;
1029
+			};
1030
+			name = Release_Detox;
1031
+		};
1032
+		BEB8EFA9FD7A9DCE32773C1C /* Debug_Detox */ = {
1033
+			isa = XCBuildConfiguration;
1034
+			buildSettings = {
1035
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1036
+				DEAD_CODE_STRIPPING = NO;
1037
+				DEPLOY_DETOX_FRAMEWORK = YES;
1038
+				FRAMEWORK_SEARCH_PATHS = (
1039
+					"$(inherited)",
1040
+					"$(PROJECT_DIR)/../node_modules/detox",
1041
+				);
1042
+				HEADER_SEARCH_PATHS = (
1043
+					"$(inherited)",
1044
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
1045
+					"$(SRCROOT)/../node_modules/react-native/React/**",
1046
+					"$(SRCROOT)/../node_modules/react-native-navigation/ios/**",
1047
+				);
1048
+				INFOPLIST_FILE = example/Info.plist;
1049
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
1050
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1051
+				OTHER_LDFLAGS = (
1052
+					"-ObjC",
1053
+					"-l\"c++\"",
1054
+					"-framework",
1055
+					Detox,
1056
+				);
1057
+				PRODUCT_NAME = example;
1058
+			};
1059
+			name = Debug_Detox;
1060
+		};
1061
+		E53E50BD43A56CF67FAAD3A5 /* Release_Detox */ = {
1062
+			isa = XCBuildConfiguration;
1063
+			buildSettings = {
1064
+				BUNDLE_LOADER = "$(TEST_HOST)";
1065
+				COPY_PHASE_STRIP = NO;
1066
+				FRAMEWORK_SEARCH_PATHS = (
1067
+					"$(SDKROOT)/Developer/Library/Frameworks",
1068
+					"$(inherited)",
1069
+				);
1070
+				INFOPLIST_FILE = exampleTests/Info.plist;
1071
+				IPHONEOS_DEPLOYMENT_TARGET = 8.2;
1072
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1073
+				PRODUCT_NAME = "$(TARGET_NAME)";
1074
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
1075
+			};
1076
+			name = Release_Detox;
1077
+		};
1078
+		EAA4DC359BE7739594666868 /* Release_Detox */ = {
1079
+			isa = XCBuildConfiguration;
1080
+			buildSettings = {
1081
+				ALWAYS_SEARCH_USER_PATHS = NO;
1082
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
1083
+				CLANG_CXX_LIBRARY = "libc++";
1084
+				CLANG_ENABLE_MODULES = YES;
1085
+				CLANG_ENABLE_OBJC_ARC = YES;
1086
+				CLANG_WARN_BOOL_CONVERSION = YES;
1087
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
1088
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1089
+				CLANG_WARN_EMPTY_BODY = YES;
1090
+				CLANG_WARN_ENUM_CONVERSION = YES;
1091
+				CLANG_WARN_INT_CONVERSION = YES;
1092
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1093
+				CLANG_WARN_UNREACHABLE_CODE = YES;
1094
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1095
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1096
+				COPY_PHASE_STRIP = YES;
1097
+				ENABLE_NS_ASSERTIONS = NO;
1098
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
1099
+				GCC_C_LANGUAGE_STANDARD = gnu99;
1100
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1101
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1102
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
1103
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1104
+				GCC_WARN_UNUSED_FUNCTION = YES;
1105
+				GCC_WARN_UNUSED_VARIABLE = YES;
1106
+				HEADER_SEARCH_PATHS = (
1107
+					"$(inherited)",
1108
+					/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
1109
+					"$(SRCROOT)/../node_modules/react-native/React/**",
1110
+				);
1111
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
1112
+				MTL_ENABLE_DEBUG_INFO = NO;
1113
+				OTHER_LDFLAGS = "";
1114
+				SDKROOT = iphoneos;
1115
+				VALIDATE_PRODUCT = YES;
1116
+			};
1117
+			name = Release_Detox;
1118
+		};
921 1119
 /* End XCBuildConfiguration section */
922 1120
 
923 1121
 /* Begin XCConfigurationList section */
@@ -926,6 +1124,8 @@
926 1124
 			buildConfigurations = (
927 1125
 				00E356F61AD99517003FC87E /* Debug */,
928 1126
 				00E356F71AD99517003FC87E /* Release */,
1127
+				5627D4C51CEC610E1744267F /* Debug_Detox */,
1128
+				E53E50BD43A56CF67FAAD3A5 /* Release_Detox */,
929 1129
 			);
930 1130
 			defaultConfigurationIsVisible = 0;
931 1131
 			defaultConfigurationName = Release;
@@ -935,6 +1135,8 @@
935 1135
 			buildConfigurations = (
936 1136
 				13B07F941A680F5B00A75B9A /* Debug */,
937 1137
 				13B07F951A680F5B00A75B9A /* Release */,
1138
+				BEB8EFA9FD7A9DCE32773C1C /* Debug_Detox */,
1139
+				96FA810D67E56FD9D43906E6 /* Release_Detox */,
938 1140
 			);
939 1141
 			defaultConfigurationIsVisible = 0;
940 1142
 			defaultConfigurationName = Release;
@@ -944,6 +1146,8 @@
944 1146
 			buildConfigurations = (
945 1147
 				83CBBA201A601CBA00E9B192 /* Debug */,
946 1148
 				83CBBA211A601CBA00E9B192 /* Release */,
1149
+				2C24A1398D388E120DDC2CA1 /* Debug_Detox */,
1150
+				EAA4DC359BE7739594666868 /* Release_Detox */,
947 1151
 			);
948 1152
 			defaultConfigurationIsVisible = 0;
949 1153
 			defaultConfigurationName = Release;

+ 7
- 4
example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme View File

@@ -37,10 +37,10 @@
37 37
       </BuildActionEntries>
38 38
    </BuildAction>
39 39
    <TestAction
40
+      buildConfiguration = "Debug"
40 41
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
41 42
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
42
-      shouldUseLaunchSchemeArgsEnv = "YES"
43
-      buildConfiguration = "Debug">
43
+      shouldUseLaunchSchemeArgsEnv = "YES">
44 44
       <Testables>
45 45
          <TestableReference
46 46
             skipped = "NO">
@@ -62,15 +62,18 @@
62 62
             ReferencedContainer = "container:example.xcodeproj">
63 63
          </BuildableReference>
64 64
       </MacroExpansion>
65
+      <AdditionalOptions>
66
+      </AdditionalOptions>
65 67
    </TestAction>
66 68
    <LaunchAction
69
+      buildConfiguration = "Debug"
67 70
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
68 71
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
69 72
       launchStyle = "0"
70 73
       useCustomWorkingDirectory = "NO"
71
-      buildConfiguration = "Debug"
72 74
       ignoresPersistentStateOnLaunch = "NO"
73 75
       debugDocumentVersioning = "YES"
76
+      debugServiceExtension = "internal"
74 77
       allowLocationSimulation = "YES">
75 78
       <BuildableProductRunnable
76 79
          runnableDebuggingMode = "0">
@@ -86,10 +89,10 @@
86 89
       </AdditionalOptions>
87 90
    </LaunchAction>
88 91
    <ProfileAction
92
+      buildConfiguration = "Release"
89 93
       shouldUseLaunchSchemeArgsEnv = "YES"
90 94
       savedToolIdentifier = ""
91 95
       useCustomWorkingDirectory = "NO"
92
-      buildConfiguration = "Release"
93 96
       debugDocumentVersioning = "YES">
94 97
       <BuildableProductRunnable
95 98
          runnableDebuggingMode = "0">

+ 115
- 0
example/ios/example.xcodeproj/xcshareddata/xcschemes/example_Detox.xcscheme View File

@@ -0,0 +1,115 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0620"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
18
+               BuildableName = "example.app"
19
+               BlueprintName = "example"
20
+               ReferencedContainer = "container:example.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+         <BuildActionEntry
24
+            buildForTesting = "YES"
25
+            buildForRunning = "YES"
26
+            buildForProfiling = "NO"
27
+            buildForArchiving = "NO"
28
+            buildForAnalyzing = "YES">
29
+            <BuildableReference
30
+               BuildableIdentifier = "primary"
31
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
32
+               BuildableName = "exampleTests.xctest"
33
+               BlueprintName = "exampleTests"
34
+               ReferencedContainer = "container:example.xcodeproj">
35
+            </BuildableReference>
36
+         </BuildActionEntry>
37
+      </BuildActionEntries>
38
+   </BuildAction>
39
+   <TestAction
40
+      buildConfiguration = "Debug"
41
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43
+      shouldUseLaunchSchemeArgsEnv = "YES">
44
+      <Testables>
45
+         <TestableReference
46
+            skipped = "NO">
47
+            <BuildableReference
48
+               BuildableIdentifier = "primary"
49
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
50
+               BuildableName = "exampleTests.xctest"
51
+               BlueprintName = "exampleTests"
52
+               ReferencedContainer = "container:example.xcodeproj">
53
+            </BuildableReference>
54
+         </TestableReference>
55
+      </Testables>
56
+      <MacroExpansion>
57
+         <BuildableReference
58
+            BuildableIdentifier = "primary"
59
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
60
+            BuildableName = "example.app"
61
+            BlueprintName = "example"
62
+            ReferencedContainer = "container:example.xcodeproj">
63
+         </BuildableReference>
64
+      </MacroExpansion>
65
+      <AdditionalOptions>
66
+      </AdditionalOptions>
67
+   </TestAction>
68
+   <LaunchAction
69
+      buildConfiguration = "Debug_Detox"
70
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
71
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
72
+      launchStyle = "0"
73
+      useCustomWorkingDirectory = "NO"
74
+      ignoresPersistentStateOnLaunch = "NO"
75
+      debugDocumentVersioning = "YES"
76
+      debugServiceExtension = "internal"
77
+      allowLocationSimulation = "YES">
78
+      <BuildableProductRunnable
79
+         runnableDebuggingMode = "0">
80
+         <BuildableReference
81
+            BuildableIdentifier = "primary"
82
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
83
+            BuildableName = "example.app"
84
+            BlueprintName = "example"
85
+            ReferencedContainer = "container:example.xcodeproj">
86
+         </BuildableReference>
87
+      </BuildableProductRunnable>
88
+      <AdditionalOptions>
89
+      </AdditionalOptions>
90
+   </LaunchAction>
91
+   <ProfileAction
92
+      buildConfiguration = "Release"
93
+      shouldUseLaunchSchemeArgsEnv = "YES"
94
+      savedToolIdentifier = ""
95
+      useCustomWorkingDirectory = "NO"
96
+      debugDocumentVersioning = "YES">
97
+      <BuildableProductRunnable
98
+         runnableDebuggingMode = "0">
99
+         <BuildableReference
100
+            BuildableIdentifier = "primary"
101
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
102
+            BuildableName = "example.app"
103
+            BlueprintName = "example"
104
+            ReferencedContainer = "container:example.xcodeproj">
105
+         </BuildableReference>
106
+      </BuildableProductRunnable>
107
+   </ProfileAction>
108
+   <AnalyzeAction
109
+      buildConfiguration = "Debug">
110
+   </AnalyzeAction>
111
+   <ArchiveAction
112
+      buildConfiguration = "Release"
113
+      revealArchiveInOrganizer = "YES">
114
+   </ArchiveAction>
115
+</Scheme>

+ 105
- 0
example/ios/example.xcodeproj/xcshareddata/xcschemes/example_release.xcscheme View File

@@ -0,0 +1,105 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0620"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
18
+               BuildableName = "example.app"
19
+               BlueprintName = "example"
20
+               ReferencedContainer = "container:example.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+         <BuildActionEntry
24
+            buildForTesting = "YES"
25
+            buildForRunning = "YES"
26
+            buildForProfiling = "NO"
27
+            buildForArchiving = "NO"
28
+            buildForAnalyzing = "YES">
29
+            <BuildableReference
30
+               BuildableIdentifier = "primary"
31
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
32
+               BuildableName = "exampleTests.xctest"
33
+               BlueprintName = "exampleTests"
34
+               ReferencedContainer = "container:example.xcodeproj">
35
+            </BuildableReference>
36
+         </BuildActionEntry>
37
+      </BuildActionEntries>
38
+   </BuildAction>
39
+   <TestAction
40
+      buildConfiguration = "Release"
41
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43
+      shouldUseLaunchSchemeArgsEnv = "YES">
44
+      <Testables>
45
+      </Testables>
46
+      <MacroExpansion>
47
+         <BuildableReference
48
+            BuildableIdentifier = "primary"
49
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
50
+            BuildableName = "example.app"
51
+            BlueprintName = "example"
52
+            ReferencedContainer = "container:example.xcodeproj">
53
+         </BuildableReference>
54
+      </MacroExpansion>
55
+      <AdditionalOptions>
56
+      </AdditionalOptions>
57
+   </TestAction>
58
+   <LaunchAction
59
+      buildConfiguration = "Release"
60
+      selectedDebuggerIdentifier = ""
61
+      selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
62
+      launchStyle = "0"
63
+      useCustomWorkingDirectory = "NO"
64
+      ignoresPersistentStateOnLaunch = "NO"
65
+      debugDocumentVersioning = "YES"
66
+      debugServiceExtension = "internal"
67
+      allowLocationSimulation = "YES">
68
+      <BuildableProductRunnable
69
+         runnableDebuggingMode = "0">
70
+         <BuildableReference
71
+            BuildableIdentifier = "primary"
72
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
73
+            BuildableName = "example.app"
74
+            BlueprintName = "example"
75
+            ReferencedContainer = "container:example.xcodeproj">
76
+         </BuildableReference>
77
+      </BuildableProductRunnable>
78
+      <AdditionalOptions>
79
+      </AdditionalOptions>
80
+   </LaunchAction>
81
+   <ProfileAction
82
+      buildConfiguration = "Release"
83
+      shouldUseLaunchSchemeArgsEnv = "YES"
84
+      savedToolIdentifier = ""
85
+      useCustomWorkingDirectory = "NO"
86
+      debugDocumentVersioning = "YES">
87
+      <BuildableProductRunnable
88
+         runnableDebuggingMode = "0">
89
+         <BuildableReference
90
+            BuildableIdentifier = "primary"
91
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
92
+            BuildableName = "example.app"
93
+            BlueprintName = "example"
94
+            ReferencedContainer = "container:example.xcodeproj">
95
+         </BuildableReference>
96
+      </BuildableProductRunnable>
97
+   </ProfileAction>
98
+   <AnalyzeAction
99
+      buildConfiguration = "Release">
100
+   </AnalyzeAction>
101
+   <ArchiveAction
102
+      buildConfiguration = "Release"
103
+      revealArchiveInOrganizer = "YES">
104
+   </ArchiveAction>
105
+</Scheme>

+ 4
- 1
example/ios/example/AppDelegate.m View File

@@ -15,8 +15,11 @@
15 15
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
16 16
 {
17 17
   NSURL *jsCodeLocation;
18
+#ifdef DEBUG
18 19
   jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
19
-  // jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
20
+#else
21
+   jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
22
+#endif
20 23
 
21 24
 
22 25
   // **********************************************

+ 18
- 3
example/package.json View File

@@ -3,14 +3,29 @@
3 3
   "version": "0.0.1",
4 4
   "private": true,
5 5
   "scripts": {
6
-    "postinstall": "rm -rf node_modules/react-native-navigation/node_modules && rm -rf node_modules/react-native-navigation/example && rm -rf yarn.lock",
7
-    "start": "watchman watch-del-all && (adb reverse tcp:8081 tcp:8081 || true) && node node_modules/react-native/local-cli/cli.js start",
6
+    "postinstall": "node ./scripts/postinstall.js",
7
+    "start": "watchman watch-del-all && (adb reverse tcp:8081 tcp:8081 || true) && node node_modules/react-native/local-cli/cli.js start --reset-cache",
8 8
     "xcode": "open ios/example.xcodeproj",
9
-    "android": "cd android && ./gradlew installDebug"
9
+    "android": "cd android && ./gradlew installDebug",
10
+    "e2e": "node ./scripts/e2e.ios.js"
10 11
   },
11 12
   "dependencies": {
12 13
     "react-native": "0.38.0",
13 14
     "react": "15.4.1",
14 15
     "react-native-navigation": "file:../"
16
+  },
17
+  "devDependencies": {
18
+    "detox": "4.x.x",
19
+    "detox-server": "1.x.x"
20
+  },
21
+  "detox": {
22
+    "session": {
23
+      "server": "ws://localhost:8099",
24
+      "sessionId": "example"
25
+    },
26
+    "ios-simulator": {
27
+      "app": "ios/DerivedData/example/Build/Products/Debug_Detox-iphonesimulator/example.app",
28
+      "device": "iPhone 7, iOS 10.1"
29
+    }
15 30
   }
16 31
 }

+ 44
- 0
example/scripts/e2e.ios.js View File

@@ -0,0 +1,44 @@
1
+const cp = require('child_process');
2
+
3
+function exec(cmd) {
4
+  cp.execSync(cmd, {stdio: ['inherit', 'inherit', 'inherit']});
5
+}
6
+
7
+function execSilent(cmd) {
8
+  cp.execSync(cmd, {stdio: ['inherit', 'ignore', 'inherit']});
9
+}
10
+
11
+function kill(process) {
12
+  execSilent(`pkill -f "${process}" || true`);
13
+}
14
+
15
+function buildXcodeReleaseProj() {
16
+//exec(`RCT_NO_LAUNCH_PACKAGER=true cd ios && xcodebuild \
17
+//-scheme example_Detox clean build \
18
+//-project example.xcodeproj \
19
+//-destination "platform=iOS Simulator,name=iPhone 7,OS=10.1" \
20
+//-derivedDataPath ./DerivedData/example`);
21
+}
22
+
23
+function e2e() {
24
+  kill(`detox-server`);
25
+
26
+  try {
27
+    cp.exec(`./node_modules/.bin/detox-server > ./detox-server.log 2>&1`);
28
+    exec(`BABEL_ENV=test ./node_modules/mocha/bin/mocha e2e --opts ./e2e/mocha.opts`);
29
+  } finally {
30
+    kill(`detox-server`);
31
+    kill(`Simulator`);
32
+    kill(`CoreSimulator`);
33
+    exec(`cat ./detox-server.log`);
34
+    exec(`sleep 5`);
35
+  }
36
+}
37
+
38
+function run() {
39
+  buildXcodeReleaseProj();
40
+  e2e();
41
+}
42
+
43
+run();
44
+

+ 4
- 0
example/scripts/postinstall.js View File

@@ -0,0 +1,4 @@
1
+const cp = require('child_process');
2
+cp.execSync(`rm -rf node_modules/react-native-navigation/node_modules`);
3
+cp.execSync(`rm -rf node_modules/react-native-navigation/example `);
4
+cp.execSync(`rm -rf yarn.lock`);