Create android config in patrol android_test_backend #1277
Workflow file for this run
This file contains 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 android emulator | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 */12 * * *" | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
run_tests: | |
name: Flutter ${{ matrix.flutter-version }} on emulator.wtf | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
outputs: | |
SLACK_MESSAGE_TITLE: Flutter ${{ matrix.flutter-version }} on emulator.wtf | |
TESTS_EXIT_CODE: ${{ steps.tests_step.outputs.TESTS_EXIT_CODE }} | |
EXCLUDED_TESTS: ${{ steps.set_excluded_tests.outputs.EXCLUDED_TESTS }} | |
URL_TO_DETAILS: ${{ steps.tests_step.outputs.URL_TO_DETAILS }} | |
strategy: | |
fail-fast: false | |
matrix: | |
flutter-version: ["3.22.x"] | |
flutter-channel: ["stable"] | |
defaults: | |
run: | |
working-directory: dev/e2e_app | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 17 | |
- name: Gradle cache | |
uses: gradle/gradle-build-action@v2 | |
with: | |
generate-job-summary: false | |
- name: Set up Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ matrix.flutter-version }} | |
channel: ${{ matrix.flutter-channel }} | |
- name: Preload Flutter artifacts | |
run: flutter precache --android | |
- name: Set up Melos and activate workspace | |
working-directory: . | |
run: | | |
dart pub global activate melos | |
melos bootstrap | |
- name: Set up Patrol CLI | |
working-directory: packages/patrol_cli | |
run: dart pub global activate --source path . && patrol | |
- name: Generate Gradle wrapper | |
run: flutter build apk --config-only | |
- name: Install ew-cli | |
run: | | |
mkdir -p "$HOME/bin" | |
curl "https://maven.emulator.wtf/releases/ew-cli" -o "$HOME/bin/ew-cli" | |
chmod a+x "$HOME/bin/ew-cli" | |
echo "$HOME/bin" >> $GITHUB_PATH | |
echo "EW_API_TOKEN=${{ secrets.EW_API_TOKEN }}" >> $GITHUB_ENV | |
- name: Set tests to exclude | |
id: set_excluded_tests | |
run: | | |
TESTS_TO_EXCLUDE="permissions/notifications_test,\ | |
webview_hackernews_test,\ | |
webview_leancode_test,\ | |
webview_stackoverflow_test" | |
target_paths="" | |
for target in $(echo $TESTS_TO_EXCLUDE | tr ',' '\n'); do | |
target_paths+="integration_test/${target}.dart," | |
done | |
target_paths="${target_paths%,}" | |
echo "EXCLUDED_TESTS=$TESTS_TO_EXCLUDE" >> "$GITHUB_OUTPUT" | |
echo "EXCLUDED_TESTS=$target_paths" >> "$GITHUB_ENV" | |
- name: patrol build android | |
run: | | |
patrol build android --exclude ${{ env.EXCLUDED_TESTS }} \ | |
--dart-define-from-file=defines_1.json --dart-define-from-file=defines_2.json --dart-define-from-file=defines_3.env \ | |
--verbose | |
- name: Upload APKs to emulator.wtf and wait for tests to finish | |
id: tests_step | |
run: | | |
set +e | |
output="$(ew-cli \ | |
emulatorwtf.yaml:ci --json \ | |
--display-name "Patrol example app (${GITHUB_SHA::7})")" | |
TESTS_EXIT_CODE=$? | |
set -e | |
# Extract the results URL and write it to Github Summmary | |
link="$(echo "$output" | jq -r ".resultsUrl")" | |
echo "[Test details on emulator.wtf]($link) (LeanCode members only)" >> "$GITHUB_STEP_SUMMARY" | |
echo "URL_TO_DETAILS=$link" >> "$GITHUB_OUTPUT" | |
echo "TESTS_EXIT_CODE=$TESTS_EXIT_CODE" >> "$GITHUB_OUTPUT" | |
exit $TESTS_EXIT_CODE | |
call_send_slack_message: | |
name: Notify on Slack | |
uses: ./.github/workflows/send-slack-message.yaml | |
needs: run_tests | |
if: always() | |
with: | |
TESTS_EXIT_CODE: ${{ needs.run_tests.outputs.TESTS_EXIT_CODE }} | |
SLACK_MESSAGE_TITLE: ${{ needs.run_tests.outputs.SLACK_MESSAGE_TITLE }} | |
EXCLUDED_TESTS: ${{ needs.run_tests.outputs.EXCLUDED_TESTS }} | |
URL_TO_DETAILS: ${{ needs.run_tests.outputs.URL_TO_DETAILS }} | |
secrets: inherit |