-
-
Notifications
You must be signed in to change notification settings - Fork 359
138 lines (120 loc) · 4.25 KB
/
native-tests.yml
File metadata and controls
138 lines (120 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: Native Tests
on:
push:
branches:
- main
- release/**
pull_request:
types: [opened, synchronize, reopened, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
ready-to-merge-gate:
name: Ready-to-merge gate
uses: ./.github/workflows/ready-to-merge-workflow.yml
with:
is-pr: ${{ github.event_name == 'pull_request' }}
labels: ${{ toJson(github.event.pull_request.labels) }}
diff_check:
needs: [ready-to-merge-gate]
uses: ./.github/workflows/skip-ci.yml
test-ios:
name: ios
runs-on: macos-15
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Enable Corepack
run: npm i -g corepack
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
package-manager-cache: false
node-version: 18
cache: 'yarn'
cache-dependency-path: yarn.lock
- name: Install SDK JS Dependencies
run: yarn install
- name: Install App Pods
working-directory: packages/core/RNSentryCocoaTester
run: pod install
- name: List Available Simulators
run: xcrun simctl list devices available iPhone
- name: Run iOS Tests
working-directory: packages/core/RNSentryCocoaTester
env:
SCHEME: RNSentryCocoaTester
CONFIGURATION: Release
run: |
# Find first available iPhone simulator from latest iOS runtime
DEVICE_ID=$(xcrun simctl list devices available iPhone -j | jq -r '
.devices |
to_entries |
map(select(.key | startswith("com.apple.CoreSimulator.SimRuntime.iOS-"))) |
sort_by(.key) |
reverse |
.[0].value[] |
select(.isAvailable == true) |
.udid
' | head -1)
if [ -z "$DEVICE_ID" ]; then
echo "No iPhone simulators available"
exit 1
fi
echo "Using simulator: $DEVICE_ID"
env NSUnbufferedIO=YES \
xcodebuild -workspace *.xcworkspace \
-scheme $SCHEME -configuration $CONFIGURATION \
-destination "id=$DEVICE_ID" \
-quiet \
test
test-android:
name: android
runs-on: ubuntu-latest
needs: [diff_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: ./.github/actions/disk-cleanup
- uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Gradle cache
uses: gradle/gradle-build-action@v3
- name: Run unit tests
working-directory: packages/core/RNSentryAndroidTester
run: ./gradlew testDebugUnitTest
- name: Setup KVM
shell: bash
run: |
# check if virtualization is supported...
sudo apt install -y --no-install-recommends cpu-checker coreutils && echo "CPUs=$(nproc --all)" && kvm-ok
# allow access to KVM to run the emulator
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run connected tests
uses: reactivecircus/android-emulator-runner@b530d96654c385303d652368551fb075bc2f0b6b #pin@v2.35.0
with:
working-directory: packages/core/RNSentryAndroidTester
api-level: 30
force-avd-creation: false
disable-animations: true
disable-spellchecker: true
target: 'aosp_atd'
channel: canary # Necessary for ATDs
emulator-options: >
-no-window
-no-snapshot-save
-gpu swiftshader_indirect
-noaudio
-no-boot-anim
-camera-back none
-camera-front none
-timezone US/Pacific
script: |
./gradlew uninstallDebug uninstallDebugAndroidTest
./gradlew connectedCheck