feat(core): Run all e2e tests on ci #4067
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: CI | |
on: | |
push: | |
branches: | |
- master | |
- '[0-9]+.[0-9]+.x' | |
pull_request: | |
branches: | |
- "**" | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
jobs: | |
main-linux: | |
runs-on: ubuntu-latest | |
env: | |
NX_E2E_CI_CACHE_KEY: e2e-github-linux | |
NX_DAEMON: 'true' | |
NX_PERF_LOGGING: 'false' | |
NX_VERBOSE_LOGGING: 'false' | |
NX_NATIVE_LOGGING: 'false' | |
NX_E2E_RUN_E2E: 'true' | |
NX_CI_EXECUTION_ENV: 'linux' | |
NX_CLOUD_NO_TIMEOUTS: 'true' | |
NX_ALLOW_NON_CACHEABLE_DTE: 'true' | |
NX_CLOUD_USE_NEW_TASK_APIS: 'true' | |
NX_CLOUD_USE_NEW_STREAM_OUTPUT: 'true' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
- name: Fetch Master | |
run: git fetch origin master:master | |
if: ${{ github.event_name == 'pull_request' }} | |
- name: Set SHAs | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'master' | |
- name: Start CI Run | |
run: npx nx-cloud@next start-ci-run --distribute-on="./.nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e" | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev | |
- name: Install Chrome | |
uses: browser-actions/setup-chrome@v1 | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
with: | |
version: 9.8.0 | |
run_install: false | |
- name: Install project dependencies | |
run: | | |
pnpm install --frozen-lockfile | |
pnpm playwright install --with-deps | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 17 | |
- name: Check Documentation | |
run: pnpm nx documentation | |
timeout-minutes: 20 | |
- name: Run Checks/Lint/Test/Build | |
run: | | |
pids=() | |
pnpm nx-cloud record -- nx format:check & | |
pids+=($!) | |
pnpm nx-cloud record -- nx sync:check | |
pids+=($!) | |
pnpm nx-cloud record -- nx-cloud conformance:check | |
pids+=($!) | |
pnpm nx run-many -t check-imports check-commit check-lock-files check-codeowners --parallel=1 --no-dte & | |
pids+=($!) | |
pnpm nx affected --targets=lint,test,build,format-native,lint-native & | |
pids+=($!) | |
pnpm nx run-many -t e2e-ci -- --json=true --outputFile=test-results.json & | |
pids+=($!) | |
for pid in "${pids[@]}"; do | |
wait "$pid" | |
done | |
timeout-minutes: 100 | |
- name: Check for test results | |
run: tree e2e | |
- name: Install dependencies for golden test monitor | |
run: pnpm install axios | |
- name: Golden Test Monitor - Final E2E CI Check | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }} | |
run: | | |
echo "🎯 Running Golden Test Monitor" | |
node ./scripts/golden-test-config.js | |
main-macos: | |
runs-on: macos-latest | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}${{ contains(github.event_name, 'push') && format('-{0}', github.sha) || '' }} | |
cancel-in-progress: true | |
env: | |
NX_E2E_CI_CACHE_KEY: e2e-github-macos | |
NX_PERF_LOGGING: 'false' | |
NX_CI_EXECUTION_ENV: 'macos' | |
SELECTED_PM: 'npm' | |
steps: | |
- name: Log concurrency info | |
run: | | |
echo "Concurrency group: ${{ github.workflow }}-${{ github.ref }}${{ contains(github.event_name, 'push') && format('-{0}', github.sha) || '' }}" | |
echo "Concurrency cancel-in-progress: ${{ !contains(github.event_name, 'push') }}" | |
echo "Concurrency cancel-event-name: ${{ github.event_name }}" | |
if: always() | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
- name: Fetch Master | |
run: git fetch origin master:master | |
if: ${{ github.event_name == 'pull_request' }} | |
- name: Restore Homebrew packages | |
uses: actions/cache@v4 | |
with: | |
path: | | |
/opt/homebrew | |
~/Library/Caches/Homebrew | |
key: nrwl-nx-homebrew-packages | |
- name: Configure Detox Environment, Install applesimutils | |
run: | | |
HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew >/dev/null | |
HOMEBREW_NO_AUTO_UPDATE=1 brew install applesimutils >/dev/null | |
xcrun simctl shutdown all && xcrun simctl erase all | |
timeout-minutes: 20 | |
- name: Save Homebrew Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
/opt/homebrew | |
~/Library/Caches/Homebrew | |
key: nrwl-nx-homebrew-packages | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
with: | |
version: 9.8.0 | |
run_install: false | |
- name: Install project dependencies | |
run: | | |
pnpm install --frozen-lockfile | |
pnpm playwright install --with-deps | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Set SHAs | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'master' | |
- name: Run E2E Tests for macOS | |
run: | | |
HAS_CHANGED=$(node ./scripts/check-react-native-changes.js $NX_BASE $NX_HEAD); | |
if $HAS_CHANGED; then | |
pnpm nx affected -t e2e-macos-local --parallel=1 --base=$NX_BASE --head=$NX_HEAD | |
else | |
echo "Skip E2E tests for macOS as there are no changes in React Native projects." | |
fi |