[pull] trunk from WordPress:trunk #2419
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: React Native E2E Tests (iOS) | |
on: | |
pull_request: | |
push: | |
branches: [trunk] | |
# Cancels all previous workflow runs for pull requests that have not completed. | |
concurrency: | |
# The concurrency group contains the workflow name and the branch name for pull requests | |
# or the commit hash for any other events. | |
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
runs-on: macos-12 | |
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | |
strategy: | |
matrix: | |
xcode: ['14.2'] | |
device: ['iPhone 14'] | |
native-test-name: [gutenberg-editor-rendering] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
show-progress: ${{ runner.debug == '1' && 'true' || 'false' }} | |
- uses: ruby/setup-ruby@a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc # v1.202.0 | |
with: | |
# `.ruby-version` file location | |
working-directory: packages/react-native-editor/ios | |
- name: Switch Xcode version to ${{ matrix.xcode }} | |
run: sudo xcode-select --switch /Applications/Xcode_${{ matrix.xcode }}.app | |
- name: Launch simulator | |
run: (open -a Simulator && xcrun simctl boot '${{ matrix.device }}') & | |
- name: Setup Node.js and install dependencies | |
uses: ./.github/setup-node | |
- name: Restore tests setup cache | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
~/.appium | |
key: ${{ runner.os }}-tests-setup-${{ hashFiles('package-lock.json') }} | |
- name: Prepare tests setup | |
run: npm run native test:e2e:setup | |
- name: Prepare build cache key | |
run: find package-lock.json packages/react-native-editor/ios packages/react-native-aztec/ios packages/react-native-bridge/ios -type f -print0 | sort -z | xargs -0 shasum | tee ios-checksums.txt | |
- name: Restore build cache | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app | |
packages/react-native-editor/ios/build/WDA | |
key: ${{ runner.os }}-ios-build-${{ matrix.xcode }}-${{ matrix.device }}-${{ hashFiles('ios-checksums.txt') }} | |
- name: Restore pods cache | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: | | |
packages/react-native-editor/ios/Pods | |
~/Library/Caches/CocoaPods | |
~/.cocoapods/repos/trunk | |
packages/react-native-editor/ios/vendor | |
key: ${{ runner.os }}-pods-${{ hashFiles('packages/react-native-editor/ios/Gemfile.lock') }}-${{ hashFiles('packages/react-native-editor/ios/Podfile.lock') }}-${{ hashFiles('package-lock.json') }} | |
- name: Bundle iOS | |
run: npm run native test:e2e:bundle:ios | |
- name: Build (if needed) | |
run: test -e packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app/GutenbergDemo || npm run native test:e2e:build-app:ios | |
- name: Build Web Driver Agent (if needed) | |
run: test -d packages/react-native-editor/ios/build/WDA || npm run native test:e2e:build-wda | |
- name: Run iOS Device Tests | |
run: TEST_RN_PLATFORM=ios npm run native device-tests:local ${{ matrix.native-test-name }} | |
- name: Prepare build cache | |
run: | | |
rm packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app/main.jsbundle | |
rm -rf packages/react-native-editor/ios/build/GutenbergDemo/Build/Products/Release-iphonesimulator/GutenbergDemo.app/assets | |
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
if: always() | |
with: | |
name: ios-screen-recordings | |
path: packages/react-native-editor/ios-screen-recordings | |
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
if: always() | |
with: | |
name: appium-logs | |
path: packages/react-native-editor/appium-out.log |