Skip to content

Commit

Permalink
Use Xcode 10.2.0 and iOS 12.2 in iOS tests (#24572)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: #24572

Bumps to Xcode 10.2.0 and uses the iOS 12.2 simulator when running tests.

Changelog:

[iOS] [Changed] - iOS tests: Bump Xcode to 10.2.0, iOS to 12.2.

Reviewed By: cpojer

Differential Revision: D15049833

fbshipit-source-id: 40ee039f8be4db1365ad650b45e2e3e0a4ea80f3
  • Loading branch information
hramos authored and facebook-github-bot committed Apr 24, 2019
1 parent f1086b8 commit 0a16b53
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 6 deletions.
101 changes: 97 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ android_defaults: &android_defaults
macos_defaults: &macos_defaults
<<: *defaults
macos:
xcode: "10.1.0"
xcode: "10.2.0"

# -------------------------
# JOBS
Expand Down Expand Up @@ -340,12 +340,22 @@ jobs:
# Runs unit tests on iOS devices
test_ios:
<<: *macos_defaults
environment:
- REPORTS_DIR: "./reports"
steps:
- attach_workspace:
at: ~/react-native

- run:
name: Boot iPhone Simulator
name: Print Xcode environment
command: xcodebuild -version

- run:
name: List available devices
command: instruments -s devices

- run:
name: Boot iOS Simulator
command: source scripts/.tests.env && xcrun simctl boot "$IOS_DEVICE" || true

- restore-cache: *restore-brew-cache
Expand All @@ -357,8 +367,91 @@ jobs:
- save-cache: *save-brew-cache

- run:
name: iOS Test Suite
command: ./scripts/objc-test-ios.sh test
name: Start Metro packager
command: yarn start --nonPersistent --max-workers=1 || echo "Can't start packager automatically"
background: true

- run:
name: Start WebSocket test server
command: open "./IntegrationTests/launchWebSocketServer.command" || echo "Can't start web socket server automatically"
background: true

- run:
name: Verify RNTester can be built
command: |
source ./scripts/.tests.env
xcodebuild \
-project RNTester/RNTester.xcodeproj \
-scheme RNTester \
-sdk iphonesimulator \
-destination "platform=iOS Simulator,name=$IOS_DEVICE,OS=$IOS_TARGET_OS" \
-UseModernBuildSystem=NO \
build | \
xcpretty --report junit --output "$REPORTS_DIR/junit/ios_buiild/results.xml" && \
exit "${PIPESTATUS[0]}"
- run:
name: Wait for Metro packager
command: |
max_attempts=60
attempt_num=1
until curl -s http://localhost:8081/status | grep "packager-status:running" -q; do
if (( attempt_num == max_attempts )); then
echo "Packager did not respond in time. No more attempts left."
exit 1
else
(( attempt_num++ ))
echo "Packager did not respond. Retrying for attempt number $attempt_num..."
sleep 1
fi
done
echo "Packager is ready!"
- run:
name: Preload the RNTesterApp bundles
command: |
curl --silent 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true' --output /dev/null
curl --silent 'http://localhost:8081/RNTester/js/RNTesterApp.ios.bundle?platform=ios&dev=true&minify=false' --output /dev/null
curl --silent 'http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=ios&dev=true' --output /dev/null
curl --silent 'http://localhost:8081/IntegrationTests/RCTRootViewIntegrationTestApp.bundle?platform=ios&dev=true' --output /dev/null
- run:
name: Run RNTester Unit Tests
command: |
source ./scripts/.tests.env
xcodebuild \
-project RNTester/RNTester.xcodeproj \
-scheme RNTester \
-sdk iphonesimulator \
-destination "platform=iOS Simulator,name=$IOS_DEVICE,OS=$IOS_TARGET_OS" \
-UseModernBuildSystem=NO \
-only-testing:RNTesterUnitTests \
build test | \
xcpretty --report junit --output "$REPORTS_DIR/junit/ios_unit_tests/results.xml" && \
exit "${PIPESTATUS[0]}"
- run:
name: Run RNTester Integration Tests
command: |
source ./scripts/.tests.env
xcodebuild \
-project RNTester/RNTester.xcodeproj \
-scheme RNTester \
-sdk iphonesimulator \
-destination "platform=iOS Simulator,name=$IOS_DEVICE,OS=$IOS_TARGET_OS" \
-UseModernBuildSystem=NO \
-only-testing:RNTesterIntegrationTests \
build test | \
xcpretty --report junit --output "$REPORTS_DIR/junit/ios_integration_tests/results.xml" && \
exit "${PIPESTATUS[0]}"
- run:
name: Stop Metro packager and WebSocket test server
command: |
# kill whatever is occupying port 8081 (packager)
lsof -i tcp:8081 | awk 'NR!=1 {print $2}' | xargs kill
# kill whatever is occupying port 5555 (web socket server)
lsof -i tcp:5555 | awk 'NR!=1 {print $2}' | xargs kill
- run:
name: iOS End-to-End Test Suite
Expand Down
2 changes: 1 addition & 1 deletion scripts/.tests.env
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export AVD_NAME="testAVD"
export AVD_ABI=x86

## IOS ##
export IOS_TARGET_OS="12.1"
export IOS_TARGET_OS="12.2"
export IOS_DEVICE="iPhone 6s"
export TVOS_DEVICE="Apple TV"

Expand Down
2 changes: 1 addition & 1 deletion scripts/run-ci-e2e-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ try {
if (
tryExecNTimes(
() => {
let destination = 'platform=iOS Simulator,name=iPhone 6s,OS=12.1';
let destination = 'platform=iOS Simulator,name=iPhone 6s,OS=12.2';
let sdk = 'iphonesimulator';
let scheme = 'EndToEndTest';

Expand Down

0 comments on commit 0a16b53

Please sign in to comment.