diff --git a/.travis.yml b/.travis.yml index c0c40fb5bb..ac5343c0ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,67 @@ -language: objective-c -osx_image: xcode8.3 +language: node_js +node_js: 8 + +matrix: + include: + - language: objective-c + os: osx + osx_image: xcode8.3 + env: + - REACT_NATIVE_VERSION=0.44.2 + install: + - ./scripts/install.ios.sh + script: + - ./scripts/ci.ios.sh + - language: objective-c + os: osx + osx_image: xcode8.3 + env: + - REACT_NATIVE_VERSION=0.49.3 + install: + - ./scripts/install.ios.sh + script: + - ./scripts/ci.ios.sh + - language: objective-c + os: osx + osx_image: xcode9 + env: + - REACT_NATIVE_VERSION=0.44.2 + install: + - ./scripts/install.ios.sh + script: + - ./scripts/ci.ios.sh + - language: objective-c + os: osx + osx_image: xcode9 + env: + - REACT_NATIVE_VERSION=0.49.3 + install: + - ./scripts/install.ios.sh + script: + - ./scripts/ci.ios.sh + - language: android + os: linux + jdk: oraclejdk8 + env: + - REACT_NATIVE_VERSION=0.49.3 + android: + components: + - build-tools-25.0.3 + - android-25 + - extra-android-m2repository + - extra-google-google_play_services + - extra-google-m2repository + - sys-img-armeabi-v7a-android-26 + install: + - ./scripts/install.android.sh + script: + - ./scripts/ci.android.sh + branches: only: - master -env: - global: - - NODE_VERSION=stable -install: -- brew install yarn -- export CODE_SIGNING_REQUIRED=NO -- brew tap wix/brew -- brew install applesimutils --HEAD -- curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash -- export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" -- nvm install $NODE_VERSION -- nvm use $NODE_VERSION -- npm install -g lerna@2.1.2 >/dev/null 2>&1 -- npm install -g react-native-cli >/dev/null 2>&1 -- npm install -g detox-cli >/dev/null 2>&1 -- gem install xcpretty >/dev/null 2>&1 -script: -- ./scripts/ci.sh +before_install: + - nvm install stable notifications: email: true slack: diff --git a/detox/package.json b/detox/package.json index 3a6b9b1c5d..391950cf5e 100644 --- a/detox/package.json +++ b/detox/package.json @@ -43,9 +43,7 @@ "eslint-plugin-react-native": "^2.3.2", "jest": "^20.0.4", "minimist": "^1.2.0", - "mockdate": "^2.0.1", - "shelljs": "^0.7.3", - "ttab": "^0.3.1" + "mockdate": "^2.0.1" }, "dependencies": { "child-process-promise": "^2.2.0", @@ -55,6 +53,7 @@ "get-port": "^2.1.0", "lodash": "^4.14.1", "npmlog": "^4.0.2", + "shell-utils": "^1.0.9", "telnet-client": "0.15.3", "ws": "^1.1.1" }, diff --git a/detox/scripts/build_framework.ios.sh b/detox/scripts/build_framework.ios.sh index 0e63d6ca36..576fa4bdfe 100755 --- a/detox/scripts/build_framework.ios.sh +++ b/detox/scripts/build_framework.ios.sh @@ -22,7 +22,7 @@ echo "###############################" echo "###############################" echo "Extracting Detox sources..." -xcodebuild build -project "${detoxSourcePath}"/Detox.xcodeproj -scheme DetoxFramework -configuration Release -derivedDataPath "${detoxFrameworkDirPath}"/DetoxBuild > /dev/null +xcodebuild build -project "${detoxSourcePath}"/Detox.xcodeproj -scheme DetoxFramework -configuration Release -derivedDataPath "${detoxFrameworkDirPath}"/DetoxBuild mv "${detoxFrameworkDirPath}"/DetoxBuild/Build/Products/Release-universal/Detox.framework "${detoxFrameworkDirPath}" rm -fr "${detoxFrameworkDirPath}"/DetoxBuild diff --git a/detox/src/devices/IosDriver.js b/detox/src/devices/IosDriver.js index af59f3d870..5600b9a417 100644 --- a/detox/src/devices/IosDriver.js +++ b/detox/src/devices/IosDriver.js @@ -5,7 +5,7 @@ const DeviceDriverBase = require('./DeviceDriverBase'); const InvocationManager = require('../invoke').InvocationManager; const invoke = require('../invoke'); const GREYConfiguration = require('./../ios/earlgreyapi/GREYConfiguration'); -const exec = require('child-process-promise').exec; +const exec = require('shell-utils').exec; const environment = require('../utils/environment'); class IosDriver extends DeviceDriverBase { @@ -40,7 +40,7 @@ class IosDriver extends DeviceDriverBase { } } else { log.info(`Building Detox.framework (${environment.getDetoxVersion()}) into ${detoxFrameworkDirPath}...`); - await exec(path.join(__dirname, `../../scripts/build_framework.ios.sh "${detoxIosSourceTarballDirPath}" "${detoxFrameworkDirPath}"`)); + await exec.execAsync(path.join(__dirname, `../../scripts/build_framework.ios.sh "${detoxIosSourceTarballDirPath}" "${detoxFrameworkDirPath}"`)); } } diff --git a/detox/test/android/app/build.gradle b/detox/test/android/app/build.gradle index dceb441bd9..5d803872a2 100644 --- a/detox/test/android/app/build.gradle +++ b/detox/test/android/app/build.gradle @@ -58,7 +58,7 @@ dependencies { testCompile 'junit:junit:4.12' - androidTestCompile(project(path: ":detox", configuration: "oldOkhttpDebug"), { + androidTestCompile(project(path: ":detox", configuration: "newOkhttpDebug"), { exclude group: 'com.android.support', module: 'support-annotations' }) } diff --git a/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java b/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java index 410b8fc4be..83bc447bf2 100644 --- a/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java +++ b/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java @@ -19,7 +19,6 @@ public List createNativeModules(ReactApplicationContext reactConte ); } - @Override public List> createJSModules() { return Collections.emptyList(); } diff --git a/detox/test/e2e/mocha.opts b/detox/test/e2e/mocha.opts index 4e8545b16a..bfb952dc38 100644 --- a/detox/test/e2e/mocha.opts +++ b/detox/test/e2e/mocha.opts @@ -1,3 +1,3 @@ --recursive ---timeout 240000 +--timeout 480000 --bail \ No newline at end of file diff --git a/detox/test/ios/example.xcodeproj/project.pbxproj b/detox/test/ios/example.xcodeproj/project.pbxproj index 358fcfdc95..25ae614cbc 100644 --- a/detox/test/ios/example.xcodeproj/project.pbxproj +++ b/detox/test/ios/example.xcodeproj/project.pbxproj @@ -244,6 +244,48 @@ remoteGlobalIDString = 394767961DBF985400D72256; remoteInfo = Detox; }; + 4644B8641F897583003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; + remoteInfo = "third-party"; + }; + 4644B8661F897583003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + 4644B8681F897583003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7E881E25C6D100323FB7; + remoteInfo = "double-conversion"; + }; + 4644B86A1F897583003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; + 4644B86E1F916562003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; + remoteInfo = fishhook; + }; + 4644B8701F916562003223D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; + remoteInfo = "fishhook-tvOS"; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -412,6 +454,8 @@ children = ( 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 39A34C4B1E30ED3600BEBB59 /* libRCTWebSocket-tvOS.a */, + 4644B86F1F916562003223D4 /* libfishhook.a */, + 4644B8711F916562003223D4 /* libfishhook-tvOS.a */, ); name = Products; sourceTree = ""; @@ -445,6 +489,10 @@ 39A34C5D1E30ED3600BEBB59 /* libcxxreact.a */, 39A34C5F1E30ED3600BEBB59 /* libjschelpers.a */, 39A34C611E30ED3600BEBB59 /* libjschelpers.a */, + 4644B8651F897583003223D4 /* libthird-party.a */, + 4644B8671F897583003223D4 /* libthird-party.a */, + 4644B8691F897583003223D4 /* libdouble-conversion.a */, + 4644B86B1F897583003223D4 /* libdouble-conversion.a */, ); name = Products; sourceTree = ""; @@ -856,6 +904,48 @@ remoteRef = 39B044611DAED76400431EC5 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4644B8651F897583003223D4 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 4644B8641F897583003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4644B8671F897583003223D4 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = 4644B8661F897583003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4644B8691F897583003223D4 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 4644B8681F897583003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4644B86B1F897583003223D4 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = 4644B86A1F897583003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4644B86F1F916562003223D4 /* libfishhook.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libfishhook.a; + remoteRef = 4644B86E1F916562003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4644B8711F916562003223D4 /* libfishhook-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libfishhook-tvOS.a"; + remoteRef = 4644B8701F916562003223D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -906,7 +996,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; 399B4E001ED587120098D2AC /* Bundle React Native code and images */ = { isa = PBXShellScriptBuildPhase; @@ -920,7 +1010,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; /* End PBXShellScriptBuildPhase section */ diff --git a/detox/test/package.json b/detox/test/package.json index 019a91bc2c..92fb2e91c2 100644 --- a/detox/test/package.json +++ b/detox/test/package.json @@ -1,70 +1,65 @@ { - "name": "detox-test", - "version": "0.0.1", - "private": true, - "scripts": { - "packager": "react-native start", - "detox-server": "detox run-server", - "e2e": "detox test --configuration ios.sim.release --debug-synchronization 3000", - "build": "detox build --configuration ios.sim.release" - }, - "dependencies": { - "react": "16.0.0-alpha.6", - "react-native": "0.44.0" - }, - "devDependencies": { - "detox": "^5.0.0", - "express": "^4.15.3", - "lodash": "^4.14.1", - "mocha": "^3.2.0" - }, - "detox": { - "specs": "e2e", - "__session": { - "server": "ws://localhost:8099", - "sessionId": "test" - }, - "configurations": { - "ios.sim.debug": { - "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app", - "build": "set -o pipefail && xcodebuild -project ios/example.xcodeproj -scheme example_ci -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build | xcpretty", - "type": "ios.simulator", - "name": "iPhone 7 Plus" - }, - "ios.sim.release": { - "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/example.app", - "build": "set -o pipefail && export CODE_SIGNING_REQUIRED=NO && export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project ios/example.xcodeproj -scheme example_ci -configuration Release -sdk iphonesimulator -derivedDataPath ios/build | xcpretty", - "type": "ios.simulator", - "name": "iPhone 7 Plus" - }, - "ios.none": { - "type": "ios.none", - "name": "iPhone 7 Plus", - "session": { - "server": "ws://localhost:8099", - "sessionId": "test" - } - }, + "name": "detox-test", + "version": "0.0.1", + "private": true, + "scripts": { + "test": ":", + "packager": "react-native start", + "detox-server": "detox run-server", + "e2e:ios": "detox test --configuration ios.sim.release --debug-synchronization 10000", + "e2e:android": "detox test --configuration android.emu.release --loglevel verbose", + "build:ios": "detox build --configuration ios.sim.release", + "build:android": "detox build --configuration android.emu.release" + }, + "dependencies": { + "react": "^16.0.0-beta.5", + "react-native": "^0.49.3" + }, + "devDependencies": { + "detox": "^5.0.0", + "express": "^4.15.3", + "lodash": "^4.14.1", + "mocha": "^3.2.0" + }, + "detox": { + "specs": "e2e", + "__session": { + "server": "ws://localhost:8099", + "sessionId": "test" + }, + "configurations": { + "ios.sim.debug": { + "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app", + "build": "set -o pipefail && xcodebuild -project ios/example.xcodeproj -scheme example_ci -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build | xcpretty", + "type": "ios.simulator", + "name": "iPhone 7 Plus" + }, + "ios.sim.release": { + "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/example.app", + "build": "set -o pipefail && export CODE_SIGNING_REQUIRED=NO && export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project ios/example.xcodeproj -scheme example_ci -configuration Release -sdk iphonesimulator -derivedDataPath ios/build | xcpretty", + "type": "ios.simulator", + "name": "iPhone 7 Plus" + }, + "ios.none": { + "type": "ios.none", + "name": "iPhone 7 Plus", + "session": { + "server": "ws://localhost:8099", + "sessionId": "test" + } + }, "android.emu.debug": { "binaryPath": "android/app/build/outputs/apk/app-debug.apk", - "build": "pushd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && popd", + "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..", "type": "android.emulator", - "name": "Nexus_5X_API_24", - "session": { - "server": "ws://localhost:8099", - "sessionId": "test" - } + "name": "Nexus_5X_API_24" }, "android.emu.release": { "binaryPath": "android/app/build/outputs/apk/app-release.apk", - "build": "pushd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && popd", + "build": "cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..", "type": "android.emulator", - "name": "Nexus_5X_API_24", - "session": { - "server": "ws://localhost:8099", - "sessionId": "test" - } + "name": "Nexus_5X_API_26" } } - } + } } diff --git a/lerna.json b/lerna.json index 010ab49790..bfecd76541 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "lerna": "2.1.2", + "lerna": "2.4.0", "packages": [ "detox", "detox-server", @@ -22,5 +22,5 @@ } }, "version": "independent", - "npmClient": "yarn" + "npmClient": "npm" } diff --git a/package.json b/package.json index bfaa0dcda2..8007e8f595 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,7 @@ { "scripts": { - "build": "pushd detox && npm run build && popd", - "test": "npm run test:lerna && npm run test:e2e && npm run test:generation", - "test:lerna": "lerna run --ignore detox-demo* build && lerna run --ignore detox-demo* test", - "test:e2e": "pushd detox/test && npm run e2e && popd", - "test:generation": "pushd generation && npm run test && popd", + "test:e2e:ios": "pushd detox/test && npm run e2e:ios && popd", + "test:e2e:android": "pushd detox/test && npm run e2e:android && popd", "release": "node scripts/release.js" } } diff --git a/scripts/ci.android.sh b/scripts/ci.android.sh new file mode 100755 index 0000000000..995c197b75 --- /dev/null +++ b/scripts/ci.android.sh @@ -0,0 +1,9 @@ +#!/bin/bash -e + +$(dirname "$0")/ci.sh + +#echo no | "$ANDROID_HOME"/tools/bin/avdmanager create avd --force --name Nexus_5X_API_26 --abi armeabi-v7a --device "Nexus 5X" -k system-images;android-26;default;armeabi-v7a +#pushd detox/test +#npm run build:android +#npm run e2e:android +#popd diff --git a/scripts/ci.ios.sh b/scripts/ci.ios.sh new file mode 100755 index 0000000000..97e065b1e0 --- /dev/null +++ b/scripts/ci.ios.sh @@ -0,0 +1,12 @@ +#!/bin/bash -e + +$(dirname "$0")/ci.sh + +set -o pipefail && xcodebuild -project detox/ios/Detox.xcodeproj -scheme Detox -configuration Debug -sdk iphonesimulator build-for-testing | xcpretty +set -o pipefail && xcodebuild -project detox/ios/Detox.xcodeproj -scheme Detox -configuration Debug -sdk iphonesimulator test-without-building -destination 'platform=iOS Simulator,name=iPhone 7 Plus' | xcpretty + +pushd detox/test +npm run build:ios +npm run e2e:ios +popd +#npm run release \ No newline at end of file diff --git a/scripts/ci.sh b/scripts/ci.sh index 575feb0d5e..c760b90bcd 100755 --- a/scripts/ci.sh +++ b/scripts/ci.sh @@ -1,11 +1,12 @@ #!/bin/bash -e -lerna bootstrap -npm run build - -set -o pipefail && xcodebuild -project detox/ios/Detox.xcodeproj -scheme Detox -configuration Debug -sdk iphonesimulator build-for-testing | xcpretty -set -o pipefail && xcodebuild -project detox/ios/Detox.xcodeproj -scheme Detox -configuration Debug -sdk iphonesimulator test-without-building -destination 'platform=iOS Simulator,name=iPhone 7 Plus' | xcpretty +case "$REACT_NATIVE_VERSION" in + 0.44.2) + echo "Applying git patch to convert React Native version in test project to $REACT_NATIVE_VERSION" + git apply scripts/testProjRN49to44.diff + ;; +esac - -npm test -#npm run release \ No newline at end of file +lerna bootstrap +lerna run --ignore detox-demo* build +lerna run --ignore detox-demo* test diff --git a/scripts/install.android.sh b/scripts/install.android.sh new file mode 100755 index 0000000000..bdce25b097 --- /dev/null +++ b/scripts/install.android.sh @@ -0,0 +1,4 @@ +#!/bin/bash -e + +$(dirname "$0")/install.sh + diff --git a/scripts/install.ios.sh b/scripts/install.ios.sh new file mode 100755 index 0000000000..da36648728 --- /dev/null +++ b/scripts/install.ios.sh @@ -0,0 +1,7 @@ +#!/bin/bash -e + +$(dirname "$0")/install.sh + +export CODE_SIGNING_REQUIRED=NO +brew tap wix/brew +brew install applesimutils --HEAD \ No newline at end of file diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 0000000000..93b122aa65 --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,6 @@ +#!/bin/bash -e + +npm install -g lerna@2.4.0 >/dev/null 2>&1 +npm install -g react-native-cli >/dev/null 2>&1 +npm install -g detox-cli >/dev/null 2>&1 +gem install xcpretty >/dev/null 2>&1 \ No newline at end of file diff --git a/scripts/testProjRN49to44.diff b/scripts/testProjRN49to44.diff new file mode 100644 index 0000000000..34b531a252 --- /dev/null +++ b/scripts/testProjRN49to44.diff @@ -0,0 +1,180 @@ +diff --git a/detox/test/android/app/build.gradle b/detox/test/android/app/build.gradle +index 5d80387..dceb441 100644 +--- a/detox/test/android/app/build.gradle ++++ b/detox/test/android/app/build.gradle +@@ -58,7 +58,7 @@ dependencies { + + testCompile 'junit:junit:4.12' + +- androidTestCompile(project(path: ":detox", configuration: "newOkhttpDebug"), { ++ androidTestCompile(project(path: ":detox", configuration: "oldOkhttpDebug"), { + exclude group: 'com.android.support', module: 'support-annotations' + }) + } +diff --git a/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java b/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java +index 83bc447..410b8fc 100644 +--- a/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java ++++ b/detox/test/android/app/src/main/java/com/example/NativeModulePackage.java +@@ -19,6 +19,7 @@ public class NativeModulePackage implements ReactPackage { + ); + } + ++ @Override + public List> createJSModules() { + return Collections.emptyList(); + } +diff --git a/detox/test/ios/example.xcodeproj/project.pbxproj b/detox/test/ios/example.xcodeproj/project.pbxproj +index 25ae614..358fcfd 100644 +--- a/detox/test/ios/example.xcodeproj/project.pbxproj ++++ b/detox/test/ios/example.xcodeproj/project.pbxproj +@@ -244,48 +244,6 @@ + remoteGlobalIDString = 394767961DBF985400D72256; + remoteInfo = Detox; + }; +- 4644B8641F897583003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; +- remoteInfo = "third-party"; +- }; +- 4644B8661F897583003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; +- remoteInfo = "third-party-tvOS"; +- }; +- 4644B8681F897583003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 139D7E881E25C6D100323FB7; +- remoteInfo = "double-conversion"; +- }; +- 4644B86A1F897583003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 3D383D621EBD27B9005632C8; +- remoteInfo = "double-conversion-tvOS"; +- }; +- 4644B86E1F916562003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; +- remoteInfo = fishhook; +- }; +- 4644B8701F916562003223D4 /* PBXContainerItemProxy */ = { +- isa = PBXContainerItemProxy; +- containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; +- proxyType = 2; +- remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; +- remoteInfo = "fishhook-tvOS"; +- }; + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; +@@ -454,8 +412,6 @@ + children = ( + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 39A34C4B1E30ED3600BEBB59 /* libRCTWebSocket-tvOS.a */, +- 4644B86F1F916562003223D4 /* libfishhook.a */, +- 4644B8711F916562003223D4 /* libfishhook-tvOS.a */, + ); + name = Products; + sourceTree = ""; +@@ -489,10 +445,6 @@ + 39A34C5D1E30ED3600BEBB59 /* libcxxreact.a */, + 39A34C5F1E30ED3600BEBB59 /* libjschelpers.a */, + 39A34C611E30ED3600BEBB59 /* libjschelpers.a */, +- 4644B8651F897583003223D4 /* libthird-party.a */, +- 4644B8671F897583003223D4 /* libthird-party.a */, +- 4644B8691F897583003223D4 /* libdouble-conversion.a */, +- 4644B86B1F897583003223D4 /* libdouble-conversion.a */, + ); + name = Products; + sourceTree = ""; +@@ -904,48 +856,6 @@ + remoteRef = 39B044611DAED76400431EC5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +- 4644B8651F897583003223D4 /* libthird-party.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = "libthird-party.a"; +- remoteRef = 4644B8641F897583003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; +- 4644B8671F897583003223D4 /* libthird-party.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = "libthird-party.a"; +- remoteRef = 4644B8661F897583003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; +- 4644B8691F897583003223D4 /* libdouble-conversion.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = "libdouble-conversion.a"; +- remoteRef = 4644B8681F897583003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; +- 4644B86B1F897583003223D4 /* libdouble-conversion.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = "libdouble-conversion.a"; +- remoteRef = 4644B86A1F897583003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; +- 4644B86F1F916562003223D4 /* libfishhook.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = libfishhook.a; +- remoteRef = 4644B86E1F916562003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; +- 4644B8711F916562003223D4 /* libfishhook-tvOS.a */ = { +- isa = PBXReferenceProxy; +- fileType = archive.ar; +- path = "libfishhook-tvOS.a"; +- remoteRef = 4644B8701F916562003223D4 /* PBXContainerItemProxy */; +- sourceTree = BUILT_PRODUCTS_DIR; +- }; + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; +@@ -996,7 +906,7 @@ + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; +- shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; ++ shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; + }; + 399B4E001ED587120098D2AC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; +@@ -1010,7 +920,7 @@ + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; +- shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; ++ shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; + }; + /* End PBXShellScriptBuildPhase section */ + +diff --git a/detox/test/package.json b/detox/test/package.json +index 8b12dc2..91fceae 100644 +--- a/detox/test/package.json ++++ b/detox/test/package.json +@@ -12,8 +12,8 @@ + "build:android": "detox build --configuration android.emu.release" + }, + "dependencies": { +- "react": "^16.0.0-beta.5", +- "react-native": "^0.49.3" ++ "react-native": "0.44.2", ++ "react": "16.0.0-alpha.6" + }, + "devDependencies": { + "detox": "^5.0.0",