Skip to content

refactor: P1 structural improvements — move interactors to core, cons… #205

refactor: P1 structural improvements — move interactors to core, cons…

refactor: P1 structural improvements — move interactors to core, cons… #205

Workflow file for this run

name: macOS
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
integration-macos:
name: Integration Tests
runs-on: macos-26
timeout-minutes: 80
continue-on-error: true
env:
AGENT_DEVICE_IOS_RUNNER_DERIVED_PATH: ${{ github.workspace }}/.tmp/macos-runner-derived
AGENT_DEVICE_DAEMON_TIMEOUT_MS: '300000'
AGENT_DEVICE_IOS_APP_LAUNCH_TIMEOUT_MS: '60000'
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup toolchain
uses: ./.github/actions/setup-node-pnpm
- name: Resolve Xcode cache key
id: xcode
run: |
set -euo pipefail
XCODE_VERSION="$(xcodebuild -version | tr '\n' ' ' | sed -E 's/[[:space:]]+/ /g; s/[[:space:]]$//')"
XCODE_KEY="$(echo "$XCODE_VERSION" | tr ' ' '-' | tr -cd '[:alnum:]._-')"
echo "key=$XCODE_KEY" >> "$GITHUB_OUTPUT"
- name: Resolve prebuild source hash
id: source-hash
run: |
set -euo pipefail
echo "value=${{ hashFiles('ios-runner/**', 'package.json', 'pnpm-lock.yaml') }}" >> "$GITHUB_OUTPUT"
- name: Cache macOS runner prebuilt
id: restore-prebuilt
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.2.3
with:
path: ${{ env.AGENT_DEVICE_IOS_RUNNER_DERIVED_PATH }}
key: macos-runner-prebuilt-${{ steps.xcode.outputs.key }}-${{ steps.source-hash.outputs.value }}
- name: Resolve agent-device home
id: macos-agent-home
run: echo "dir=$HOME/.agent-device" >> "$GITHUB_OUTPUT"
- name: Build macOS XCTest runner
if: steps.restore-prebuilt.outputs.cache-hit != 'true'
run: pnpm build:xcuitest:macos
- name: Build macOS helper
run: pnpm build:macos-helper
- name: Run macOS integration test
run: node --experimental-strip-types src/bin.ts test test/integration/replays/macos --retries 3
- name: Upload macOS artifacts
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: macos-artifacts
if-no-files-found: ignore
path: |
${{ steps.macos-agent-home.outputs.dir }}/daemon.log
${{ steps.macos-agent-home.outputs.dir }}/sessions/**
test/artifacts/**
test/screenshots/**