Delay iOS screenshot capture after UI launch #395
This file contains hidden or 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: Test iOS build scripts | |
| on: | |
| pull_request: | |
| paths: | |
| - '.github/workflows/scripts-ios.yml' | |
| - 'scripts/setup-workspace.sh' | |
| - 'scripts/build-ios-port.sh' | |
| - 'scripts/build-ios-app.sh' | |
| - 'scripts/run-ios-ui-tests.sh' | |
| - 'scripts/ios/tests/**' | |
| - 'scripts/ios/screenshots/**' | |
| - 'scripts/templates/**' | |
| - '!scripts/templates/**/*.md' | |
| - 'CodenameOne/src/**' | |
| - '!CodenameOne/src/**/*.md' | |
| - 'Ports/iOSPort/**' | |
| - '!Ports/iOSPort/**/*.md' | |
| - 'vm/**' | |
| - '!vm/**/*.md' | |
| - 'tests/**' | |
| - '!tests/**/*.md' | |
| - '!docs/**' | |
| push: | |
| branches: [ master ] | |
| paths: | |
| - '.github/workflows/scripts-ios.yml' | |
| - 'scripts/setup-workspace.sh' | |
| - 'scripts/build-ios-port.sh' | |
| - 'scripts/build-ios-app.sh' | |
| - 'scripts/run-ios-ui-tests.sh' | |
| - 'scripts/ios/tests/**' | |
| - 'scripts/ios/screenshots/**' | |
| - 'scripts/templates/**' | |
| - '!scripts/templates/**/*.md' | |
| - 'CodenameOne/src/**' | |
| - '!CodenameOne/src/**/*.md' | |
| - 'Ports/iOSPort/**' | |
| - '!Ports/iOSPort/**/*.md' | |
| - 'vm/**' | |
| - '!vm/**/*.md' | |
| - 'tests/**' | |
| - '!tests/**/*.md' | |
| - '!docs/**' | |
| jobs: | |
| build-ios: | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| issues: write | |
| runs-on: macos-15 # pinning macos-15 avoids surprises during the cutover window | |
| timeout-minutes: 60 # allow enough time for dependency installs and full build | |
| concurrency: # ensure only one mac build runs at once | |
| group: mac-ci-${{ github.workflow }}-${{ github.ref_name }} | |
| cancel-in-progress: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.CN1SS_GH_TOKEN }} | |
| GH_TOKEN: ${{ secrets.CN1SS_GH_TOKEN }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Ensure CocoaPods tooling | |
| run: | | |
| set -euo pipefail | |
| if ! command -v ruby >/dev/null; then | |
| echo "ruby not found"; exit 1 | |
| fi | |
| GEM_USER_DIR="$(ruby -e 'print Gem.user_dir')" | |
| export PATH="$GEM_USER_DIR/bin:$PATH" | |
| gem install cocoapods xcodeproj --no-document --user-install | |
| pod --version | |
| - name: Restore cn1-binaries cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ../cn1-binaries | |
| key: cn1-binaries-${{ runner.os }}-${{ hashFiles('scripts/setup-workspace.sh') }} | |
| restore-keys: | | |
| cn1-binaries-${{ runner.os }}- | |
| - name: Setup workspace | |
| run: ./scripts/setup-workspace.sh -q -DskipTests | |
| # per-step timeout | |
| timeout-minutes: 25 | |
| - name: Build iOS port | |
| run: ./scripts/build-ios-port.sh -q -DskipTests | |
| timeout-minutes: 25 | |
| - name: Build sample iOS app and compile workspace | |
| id: build-ios-app | |
| run: ./scripts/build-ios-app.sh -q -DskipTests | |
| timeout-minutes: 30 | |
| - name: Run iOS UI screenshot tests | |
| env: | |
| ARTIFACTS_DIR: ${{ github.workspace }}/artifacts | |
| run: | | |
| set -euo pipefail | |
| mkdir -p "${ARTIFACTS_DIR}" | |
| echo "workspace='${{ steps.build-ios-app.outputs.workspace }}'" | |
| echo "scheme='${{ steps.build-ios-app.outputs.scheme }}'" | |
| ./scripts/run-ios-ui-tests.sh \ | |
| "${{ steps.build-ios-app.outputs.workspace }}" \ | |
| "" \ | |
| "${{ steps.build-ios-app.outputs.scheme }}" | |
| timeout-minutes: 30 | |
| - name: Upload iOS artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ios-ui-tests | |
| path: artifacts | |
| if-no-files-found: warn | |
| retention-days: 14 | |