fix: take gravity
into consideration when calculating selection coordinates on Android
#1120
Workflow file for this run
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: 🛠 iOS e2e tests | |
on: | |
pull_request: | |
paths: | |
- ".github/workflows/ios-e2e-test.yml" | |
- "react-native-keyboard-controller.podspec" | |
- "package.json" | |
- "ios/**" | |
- "example/**" | |
- "e2e/**" | |
- "src/**" | |
push: | |
branches: | |
- main | |
paths: | |
- ".github/workflows/ios-e2e-test.yml" | |
- "react-native-keyboard-controller.podspec" | |
- "package.json" | |
- "ios/**" | |
- "example/**" | |
- "e2e/**" | |
- "src/**" | |
jobs: | |
build: | |
name: 🏗️ Build E2E ipa | |
runs-on: macos-14 | |
timeout-minutes: 60 | |
env: | |
WORKING_DIRECTORY: example | |
concurrency: | |
group: ios-e2e-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
cache: "yarn" | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: "15.4" | |
- name: Get Xcode version | |
run: xcodebuild -version | |
- name: Save yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- name: Restore node_modules from cache | |
uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install root dependencies | |
run: yarn install | |
- name: Install example project dependencies | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
run: yarn | |
- name: Install e2e dependencies | |
run: yarn install --cwd e2e | |
- name: Install Ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
max-size: 1.5G | |
key: ${{ runner.os }}-ccache-e2e-ios | |
create-symlink: true | |
- name: Setup ccache behavior | |
run: | | |
echo "CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros" >> $GITHUB_ENV | |
echo "CCACHE_FILECLONE=true" >> $GITHUB_ENV | |
echo "CCACHE_DEPEND=true" >> $GITHUB_ENV | |
echo "CCACHE_INODECACHE=true" >> $GITHUB_ENV | |
- name: Restore Pods cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
example/ios/Pods | |
~/Library/Caches/CocoaPods | |
~/.cocoapods | |
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pods- | |
- name: Install pods | |
working-directory: ${{ env.WORKING_DIRECTORY }}/ios | |
run: export USE_CCACHE=1 && pod install | |
- name: Build app | |
working-directory: e2e | |
run: yarn build-example:ios | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ios-e2e-ipa | |
path: example/ios/build/Build/Products/Release-iphonesimulator/KeyboardControllerExample.app/** | |
e2e-test: | |
name: ⚙️ Automated test cases (iOS-${{ matrix.devices.ios }}) | |
runs-on: macos-${{ matrix.devices.macos }} | |
timeout-minutes: 90 | |
env: | |
WORKING_DIRECTORY: example | |
concurrency: | |
group: ios-e2e-${{ matrix.devices.ios }}-${{ github.ref }} | |
cancel-in-progress: true | |
strategy: | |
matrix: | |
devices: [ | |
{ ios: 15, xcode: "15.4", macos: 14, runtime: "15.5" }, | |
{ ios: 16, xcode: "15.4", macos: 14, runtime: "16.4" }, | |
{ ios: 17, xcode: "15.4", macos: 14 }, | |
# { ios: 18, xcode: "16.0", macos: 15 }, | |
] | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download a single artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ios-e2e-ipa | |
path: example/ios/build/Build/Products/Release-iphonesimulator/KeyboardControllerExample.app/ | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ matrix.devices.xcode }} | |
- name: Get Xcode version | |
run: xcodebuild -version | |
# needed for additional runtime installation | |
- name: Install Xcodes | |
run: brew tap robotsandpencils/made | |
- name: Install additional iOS runtimes | |
if: ${{ matrix.devices.runtime != '' && matrix.devices.runtime != null }} | |
uses: ./.github/actions/retry-sudo-with-timeout | |
with: | |
command: "xcodes runtimes install --keep-archive 'iOS ${{ matrix.devices.runtime }}'" | |
timeout: 600 # 10 minutes | |
max_retries: 3 | |
retry_interval: 60 | |
- name: List all available simulators | |
run: xcrun simctl list | |
- name: Install AppleSimulatorUtils | |
run: brew tap wix/brew && brew install applesimutils | |
- name: Save yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- name: Restore node_modules from cache | |
uses: actions/cache@v4 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install root dependencies | |
run: yarn install | |
- name: Install e2e dependencies | |
run: yarn install --cwd e2e | |
- name: Use software keyboard | |
run: defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool NO | |
- name: Test app | |
working-directory: e2e | |
run: SOFT_CHECK=false yarn test-example:ios-${{ matrix.devices.ios }} | |
- uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: ios-fail-screen-shoots | |
path: e2e/artifacts |