Skip to content

Commit 6af3b16

Browse files
hramosfacebook-github-bot
authored andcommitted
Run failing tests in CI, without turning CI red (#20775)
Summary: We have several disabled tests in Circle, and they are not running at all. This prevents us from seeing when a disabled test might actually be fixed, as enabling the test requires uncommenting the correct line in Circle CI's config. In this PR, we use the existing swallow_error script to run known-failing steps, without failing the job. This will let us see the step's output in CI, without polluting PRs that have not introduced new failures to CI. Pull Request resolved: #20775 Differential Revision: D9442412 Pulled By: hramos fbshipit-source-id: 83c930811a559fdcf6d7b926b4073343e862d2b3
1 parent d85226f commit 6af3b16

File tree

2 files changed

+71
-108
lines changed

2 files changed

+71
-108
lines changed

.circleci/config.yml

+68-104
Original file line numberDiff line numberDiff line change
@@ -275,81 +275,45 @@ aliases:
275275
name: Boot iPhone Simulator
276276
command: xcrun simctl boot "iPhone 5s" || true
277277

278-
- &boot-simulator-iphone-with-parallelism
279-
name: Boot iPhone Simulator
280-
command: |
281-
if [ $((0 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
282-
xcrun simctl boot "iPhone 5s" || true
283-
fi
284-
285-
- &boot-simulator-appletv-with-parallelism
278+
- &boot-simulator-appletv
286279
name: Boot Apple TV Simulator
287-
command: |
288-
if [ $((1 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
289-
xcrun simctl boot "Apple TV" || true
290-
fi
280+
command: xcrun simctl boot "Apple TV" || true
291281

292-
- &run-objc-ios-tests-with-parallelism
282+
- &run-objc-ios-tests
293283
name: iOS Test Suite
294-
command: |
295-
if [ $((0 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
296-
./scripts/objc-test-ios.sh test
297-
fi
284+
command: ./scripts/objc-test-ios.sh test
298285

299-
- &run-objc-tvos-tests-with-parallelism
286+
- &run-objc-tvos-tests
300287
name: tvOS Test Suite
301-
command: |
302-
if [ $((1 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
303-
./scripts/objc-test-tvos.sh test
304-
fi
288+
command: ./scripts/objc-test-tvos.sh test
305289

306-
- &run-podspec-tests-with-parallelism
307-
name: Test CocoaPods
290+
- &run-podspec-tests
291+
name: Test CocoaPods (Ignoring failures)
308292
command: |
309-
if [ $((2 % CIRCLE_NODE_TOTAL)) -eq "$CIRCLE_NODE_INDEX" ]; then
310-
./scripts/process-podspecs.sh
311-
fi
293+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
294+
scripts/circleci/exec_swallow_error.sh ./scripts/process-podspecs.sh
312295
313296
- &run-e2e-tests
314297
name: End-to-End Test Suite
315298
command: node ./scripts/run-ci-e2e-tests.js --android --ios --tvos --js --retries 3;
316299

317-
- &install-node-8
318-
name: Install Node 8
319-
command: |
320-
echo 'export PATH=/usr/local/opt/node@8/bin:$PATH' >> $BASH_ENV
321-
source $BASH_ENV
322-
brew install node@8
323-
brew link node@8
324-
node -v
325-
326-
- &install-apple-simulator-utils
327-
name: Install Apple Simulator Utilities
328-
command: |
329-
brew tap wix/brew
330-
brew install applesimutils
331-
332-
- &build-ios-app-e2e
333-
name: Build iOS App for Simulator
334-
command: yarn run build-ios-e2e
335-
336-
- &run-ios-detox-tests
337-
name: Run Detox Tests
338-
command: yarn run test-ios-e2e
339-
340300
- &run-objc-ios-e2e-tests
341-
name: iOS End-to-End Test Suite
301+
name: iOS End-to-End Test Suite (Ignoring failures)
342302
command: |
343-
node ./scripts/run-ci-e2e-tests.js --ios --retries 3;
303+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
304+
scripts/circleci/exec_swallow_error.sh node ./scripts/run-ci-e2e-tests.js --ios --retries 3;
344305
345306
- &run-objc-tvos-e2e-tests
346-
name: tvOS End-to-End Test Suite
307+
name: tvOS End-to-End Test Suite (Ignoring failures)
347308
command: |
348-
node ./scripts/run-ci-e2e-tests.js --tvos --js --retries 3;
309+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
310+
scripts/circleci/exec_swallow_error.sh node ./scripts/run-ci-e2e-tests.js --tvos --js --retries 3;
349311
350312
- &run-android-e2e-tests
351-
name: Android End-to-End Test Suite
352-
command: node ./scripts/run-ci-e2e-tests.js --android --retries 3;
313+
name: Android End-to-End Test Suite (Ignoring failures)
314+
command: |
315+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
316+
scripts/circleci/exec_swallow_error.sh node ./scripts/run-ci-e2e-tests.js --android --retries 3;
353317
354318
- &run-js-e2e-tests
355319
name: JavaScript End-to-End Test Suite
@@ -451,56 +415,63 @@ jobs:
451415
# Runs unit tests on iOS and Apple TV devices
452416
test_objc:
453417
<<: *macos_defaults
454-
# Bump back to 3 whenever podspec tests are re-enabled
455-
parallelism: 2
456418
steps:
457419
- attach_workspace:
458420
at: ~/react-native
459421

460-
- run: *boot-simulator-iphone-with-parallelism
461-
- run: *boot-simulator-appletv-with-parallelism
422+
- run: *boot-simulator-iphone
423+
- run: *boot-simulator-appletv
462424
- run: *brew-install-watchman
463425

464-
- run: *run-objc-ios-tests-with-parallelism
465-
- run: *run-objc-tvos-tests-with-parallelism
466-
# Disabled
467-
# - run: *run-podspec-tests-with-parallelism
468-
469-
- store_test_results:
470-
path: ~/react-native/reports/junit
471-
472-
# Runs end to end tests (Objective-C)
473-
test_objc_end_to_end:
474-
<<: *macos_defaults
475-
steps:
476-
- attach_workspace:
477-
at: ~/react-native
478-
479-
- run: *boot-simulator-iphone
426+
- run: *run-objc-ios-tests
427+
- run: *run-objc-tvos-tests
480428

429+
# The following are "disabled" - the steps will
430+
# still run, but failures will be ignored.
431+
# This is good for debugging flaky CI steps.
432+
# TODO: Reenable as soon as they are in working order.
433+
- run: *run-podspec-tests
481434
- run: *run-objc-ios-e2e-tests
435+
- run: *run-objc-tvos-e2e-tests
482436

483437
- store_test_results:
484438
path: ~/react-native/reports/junit
485439

486440
# Runs end to end tests (Detox)
487-
# Disabled.
488441
test_detox_end_to_end:
489442
<<: *macos_defaults
490443
steps:
491444
- attach_workspace:
492445
at: ~/react-native
493-
494-
- run: *boot-simulator-iphone
495-
496-
- run: *install-node-8
497-
- run: *install-apple-simulator-utils
498-
- run: *build-ios-app-e2e
499-
500-
- run: *run-ios-detox-tests
501-
502-
- store_test_results:
503-
path: ~/react-native/reports/junit
446+
- run: xcrun simctl boot "iPhone 5s" || true
447+
- run:
448+
name: Configure Environment Variables
449+
command: |
450+
echo 'export PATH=/usr/local/opt/node@8/bin:$PATH' >> $BASH_ENV
451+
source $BASH_ENV
452+
- run:
453+
name: Install Node 8
454+
command: |
455+
brew install node@8
456+
brew link node@8
457+
brew tap wix/brew
458+
brew install applesimutils
459+
node -v
460+
- run: *yarn
461+
# The following are "disabled" - the steps will
462+
# still run, but failures will be ignored.
463+
# This is good for debugging flaky CI steps.
464+
# TODO: Reenable as soon as they are in working order.
465+
- run:
466+
name: Build iOS app for simulator (Ignoring failures)
467+
command: |
468+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
469+
scripts/circleci/exec_swallow_error.sh yarn run build-ios-e2e
470+
- run:
471+
name: Run Detox Tests (Ignoring failures)
472+
command: |
473+
echo 'The following step is known to be failing in master, and any failures will be ignored.'
474+
scripts/circleci/exec_swallow_error.sh yarn run test-ios-e2e
504475
505476
# Set up an Android environment for downstream jobs
506477
test_android:
@@ -565,8 +536,11 @@ jobs:
565536
- run: *build-android-rntester-app
566537

567538
# Run Android end-to-end tests
568-
# Disabled
569-
# - run: *run-android-e2e-tests
539+
# The following are "disabled" - the steps will
540+
# still run, but failures will be ignored.
541+
# This is good for debugging flaky CI steps.
542+
# TODO: Reenable as soon as they are in working order.
543+
- run: *run-android-e2e-tests
570544

571545
# Collect Results
572546
- run: *collect-android-test-results
@@ -696,19 +670,10 @@ workflows:
696670
requires:
697671
- checkout_code
698672

699-
# Disabled on master.
700-
701-
# End-to-end tests
702-
# - test_objc_end_to_end:
703-
# filters: *filter-ignore-gh-pages
704-
# requires:
705-
# - checkout_code
706-
707-
# - test_detox_end_to_end:
708-
# filters: *filter-ignore-gh-pages
709-
# requires:
710-
# - checkout_code
711-
673+
- test_detox_end_to_end:
674+
filters: *filter-ignore-gh-pages
675+
requires:
676+
- checkout_code
712677

713678
# Only runs on vX.X.X tags if all tests are green
714679
- publish_npm_package:
@@ -722,7 +687,6 @@ workflows:
722687
- test_javascript
723688
- test_objc
724689
- test_android
725-
# - test_objc_end_to_end
726690

727691
# Only runs on PRs
728692
analyze:
+3-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
#!/bin/bash
22

33
# execute command
4-
$@
4+
"$@"
55

66
# check status
77
STATUS=$?
88
if [ $STATUS == 0 ]; then
9-
echo "Command '$@' completed successfully"
9+
echo "Command " "$@" " completed successfully"
1010
else
11-
echo "Command '$@' exited with error status $STATUS"
11+
echo "Command " "$@" " exited with error status $STATUS"
1212
fi
13-

0 commit comments

Comments
 (0)