Skip to content

Commit ebc1912

Browse files
author
Krzysztof Borowy
committed
chore: e2e setup
1 parent af0677c commit ebc1912

File tree

2 files changed

+98
-89
lines changed

2 files changed

+98
-89
lines changed

.circleci/config.yml

Lines changed: 97 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ default config for macOS: &macos_defaults
2626
macos:
2727
xcode: '12.1.0'
2828

29+
30+
config for macOS (android): &macos_defaults_android
31+
<<: *defaults
32+
resource_class: 'medium'
33+
macos:
34+
xcode: '11.5.0'
35+
2936
default config for android apk builds: &android_defaults
3037
<<: *defaults
3138
docker:
@@ -41,67 +48,76 @@ default config for android apk builds: &android_defaults
4148
# CACHE CONFIG
4249
# ==============================
4350

44-
# brew
45-
save brew cache: &cache_save_brew
46-
name: Saving Brew cache
47-
paths:
51+
cache keys:
52+
brew ios: &key_brew_ios cache-brew-ios-v3-{{ arch }}
53+
brew android: &key_brew_android cache-brew-android-v3-{{ arch }}
54+
yarn: &key_yarn cache-yarn-{{ checksum "package.json" }}-{{ arch }}
55+
gradle: &key_gradle cache-gradle-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "example/android/app/build.gradle" }}-{{ arch }}
56+
pods: &key_pods cache-pods-v1-{{ checksum "example/ios/Podfile" }}-{{ checksum "package.json" }}-{{ arch }}
57+
58+
cache:
59+
# brew
60+
save brew cache for ios: &cache_save_brew_ios
61+
name: Saving Brew cache
62+
paths:
63+
- /usr/local/Homebrew
64+
- ~/Library/Caches/Homebrew
65+
key: *key_brew_ios
66+
67+
restore brew cache for ios: &cache_restore_brew_ios
68+
name: Restoring Brew cache
69+
keys:
70+
- *key_brew_ios
71+
72+
save brew cache for android: &cache_save_brew_android
73+
name: Saving Brew cache for android
74+
paths:
4875
- /usr/local/Homebrew
4976
- ~/Library/Caches/Homebrew
50-
key: legacy-brew-cache-node12-{{ arch }}
51-
52-
restore brew cache: &cache_restore_brew
53-
name: Restoring Brew cache
54-
keys:
55-
- legacy-brew-cache-node12-{{ arch }}
56-
57-
save brew cache for android: &cache_save_brew_android
58-
name: Saving Brew cache for android
59-
paths:
60-
- /usr/local/Homebrew
61-
- ~/Library/Caches/Homebrew
62-
key: legacy-brew-cache-node12-{{ arch }}-android
63-
64-
restore brew cache for android: &cache_restore_brew_android
65-
name: Restoring Brew cache for android
66-
keys:
67-
- legacy-brew-cache-node12-{{ arch }}-android
68-
69-
# yarn
70-
save yarn cache: &cache_save_yarn
71-
name: Saving Yarn cache
72-
paths:
73-
- ~/.cache/yarn
74-
- ~/Library/Detox
75-
key: legacy-yarn-cache-{{ checksum "package.json" }}-{{ arch }}
76-
77-
restore yarn cache: &cache_restore_yarn
78-
name: Restoring Yarn cache
79-
keys:
80-
- legacy-yarn-cache-{{ checksum "package.json" }}-{{ arch }}
81-
82-
# gradle
83-
save gradle wrapper cache: &cache_save_gradle_wrapper
84-
name: Saving Gradle Wrapper cache
85-
paths:
86-
- ~/.gradle/wrapper
87-
key: gradle-wrapper-legacy-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}
88-
89-
save gradle build cache: &cache_save_gradle_build
90-
name: Saving Gradle app/build cache
91-
paths:
92-
- ~/.gradle/caches
93-
key: app-build-gradle-legacy-{{ checksum "example/android/app/build.gradle" }}
94-
95-
restore gradle wrapper cache: &cache_restore_gradle_wrapper
96-
name: Restoring Gradle Wrapper cache
97-
keys:
98-
- gradle-wrapper-legacy-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}
99-
100-
restore gradle build cache: &cache_restore_gradle_build
101-
name: Restoring Gradle app/build cache
102-
keys:
103-
- app-build-gradle-legacy-{{ checksum "example/android/app/build.gradle" }}
104-
77+
key: *key_brew_android
78+
79+
restore brew cache for android: &cache_restore_brew_android
80+
name: Restoring Brew cache for android
81+
keys:
82+
- *key_brew_android
83+
84+
# yarn
85+
save yarn cache: &cache_save_yarn
86+
name: Saving Yarn cache
87+
paths:
88+
- ~/.cache/yarn
89+
- ~/Library/Detox
90+
key: *key_yarn
91+
92+
restore yarn cache: &cache_restore_yarn
93+
name: Restoring Yarn cache
94+
keys:
95+
- *key_yarn
96+
97+
# gradle
98+
save gradle cache: &cache_save_gradle
99+
name: Saving Gradle cache
100+
key: *key_gradle
101+
paths:
102+
- ~/.gradle/wrapper
103+
- ~/.gradle/caches
104+
105+
restore gradle cache: &cache_restore_gradle
106+
name: Restoring Gradle cache
107+
keys:
108+
- *key_gradle
109+
110+
# cocoapods
111+
save pods cache: &cache_save_pods
112+
name: Saving Pods
113+
key: *key_pods
114+
paths:
115+
- example/ios/Pods
116+
117+
restore pods cache: &cache_restore_pods
118+
name: Restoring Pods
119+
keys:
120+
- *key_pods
105121

106122
# ==============================
107123
# JOBS
@@ -141,26 +157,28 @@ jobs:
141157
<<: *macos_defaults
142158
steps:
143159
- *addWorkspace
144-
- restore-cache: *cache_restore_brew
160+
- restore-cache: *cache_restore_brew_ios
145161
- run:
146162
name: Configure macOS Environment
147163
command: |
148164
brew bundle --file=.circleci/Brewfile.ios --no-lock
149165
touch .watchmanconfig
150166
echo Node $(node --version)
151-
- save-cache: *cache_save_brew
167+
- save-cache: *cache_save_brew_ios
152168
- restore-cache: *cache_restore_yarn
153169
- run:
154170
name: Installing Yarn dependencies
155171
command: yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
156172
- save-cache: *cache_save_yarn
173+
- restore-cache: *cache_restore_pods
157174
- run:
158175
name: Bundle JS
159176
command: yarn bundle:ios --dev false
160177
- run:
161178
name: Install pod dependencies
162179
working_directory: example/ios
163180
command: pod install
181+
- save-cache: *cache_save_pods
164182
- run:
165183
name: Build iOS app
166184
command: yarn build:e2e:ios
@@ -177,18 +195,12 @@ jobs:
177195
name: Installing Yarn dependencies
178196
command: yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
179197
- save-cache: *cache_save_yarn
180-
181-
# Gradle
182-
- restore-cache: *cache_restore_gradle_wrapper
183-
- restore-cache: *cache_restore_gradle_build
198+
- restore-cache: *cache_restore_gradle
184199
- run:
185200
name: Downloading Gradle dependencies
186201
working_directory: example/android
187202
command: ./gradlew --max-workers 2 fetchDependencies
188-
- save-cache: *cache_save_gradle_wrapper
189-
- save-cache: *cache_save_gradle_build
190-
191-
# Build and test
203+
- save-cache: *cache_save_gradle
192204
- run:
193205
name: Bundle JS
194206
command: yarn bundle:android --dev false
@@ -203,35 +215,34 @@ jobs:
203215
- example/android/app/build/outputs/apk/*
204216

205217
"Test: Android e2e":
206-
<<: *macos_defaults
218+
<<: *macos_defaults_android
207219
steps:
208220
- *addWorkspace
209221
- run:
210222
name: Configure env variables
211223
command: |
212224
echo 'export ANDROID_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV
213225
echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> $BASH_ENV
214-
echo 'export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/tools/bin:$PATH"' >> $BASH_ENV
226+
echo 'export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH"' >> $BASH_ENV
215227
echo 'export QEMU_AUDIO_DRV=none' >> $BASH_ENV
216-
echo 'export JAVA_HOME=/Library/Java/Home' >> $BASH_ENV
228+
echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> $BASH_ENV
217229
source $BASH_ENV
218-
219-
# Android tools
220230
- restore-cache: *cache_restore_brew_android
221231
- run:
222232
name: Install Android SDK tools
223233
command: |
234+
brew update --preinstall
224235
brew bundle --file=.circleci/Brewfile.android --no-lock
225236
- save-cache: *cache_save_brew_android
226237
- run:
227238
name: Install Android emulator
228239
shell: /bin/bash -e
229240
command: |
230-
yes | sdkmanager "platform-tools" "tools" 1> /dev/null
231-
yes | sdkmanager "platforms;android-28" "system-images;android-21;google_apis;x86" 1> /dev/null
232-
yes | sdkmanager "emulator" --channel=3 1> /dev/null
233-
yes | sdkmanager "build-tools;28.0.3" 1> /dev/null
234-
yes | sdkmanager --licenses 1> /dev/null
241+
yes | sdkmanager "platform-tools" "tools" >/dev/null
242+
yes | sdkmanager "platforms;android-28" "system-images;android-28;default;x86_64" >/dev/null
243+
yes | sdkmanager "emulator" --channel=3 >/dev/null
244+
yes | sdkmanager "build-tools;28.0.3" >/dev/null
245+
yes | sdkmanager --licenses >/dev/null
235246
yes | sdkmanager --list
236247
- run:
237248
name: ADB start/stop
@@ -243,12 +254,11 @@ jobs:
243254
- run:
244255
name: Create emulator
245256
command: |
246-
avdmanager create avd \
247-
--force \
257+
avdmanager create avd --force \
248258
-n "Emu_E2E" \
249-
-k "system-images;android-21;google_apis;x86" \
250-
-g "google_apis" \
251-
-d "Nexus 4"
259+
-k "system-images;android-28;default;x86_64" \
260+
-g "default" \
261+
-d "pixel"
252262
- run:
253263
name: Start emulator in background
254264
background: true
@@ -311,8 +321,6 @@ workflows:
311321
filters:
312322
branches:
313323
only: master
314-
# - "Test: Android e2e":
315-
# requires:
316-
# - "Test: lint"
317-
# - "Test: flow"
318-
# - "Build: Android release apk"
324+
- "Test: Android e2e":
325+
requires:
326+
- "Build: Android release apk"

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
},
113113
"android.emu.release": {
114114
"binaryPath": "example/android/app/build/outputs/apk/release/app-release.apk",
115+
"testBinaryPath": "example/android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk",
115116
"build": ".circleci/scripts/run_android_e2e.sh",
116117
"type": "android.emulator",
117118
"device": {

0 commit comments

Comments
 (0)