test #60
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 | |
on: | |
workflow_dispatch: | |
inputs: | |
flutter_version: | |
description: 'Flutter Version' | |
required: false | |
default: '3.7.x' | |
type: choice | |
options: | |
- 'any' | |
- '3.10.x' | |
- '3.7.x' | |
- '3.3.x' | |
fatal_warnings: | |
description: 'Treat warnings as fatal' | |
required: false | |
default: true | |
type: boolean | |
enable_android: | |
description: 'Test Android' | |
required: false | |
default: true | |
type: boolean | |
enable_web: | |
description: 'Test Web' | |
required: false | |
default: true | |
type: boolean | |
enable_ios: | |
description: 'Test IOS' | |
required: false | |
default: true | |
type: boolean | |
enable_windows: | |
description: 'Test Windows' | |
required: false | |
default: true | |
type: boolean | |
enable_linux: | |
description: 'Test Linux' | |
required: false | |
default: true | |
type: boolean | |
enable_macos: | |
description: 'Test MacOS' | |
required: false | |
default: true | |
type: boolean | |
workflow_call: | |
inputs: | |
flutter_version: | |
required: false | |
default: '3.10.2' | |
type: string | |
fatal_warnings: | |
required: false | |
default: true | |
type: boolean | |
enable_android: | |
required: false | |
default: true | |
type: boolean | |
enable_web: | |
required: false | |
default: true | |
type: boolean | |
enable_ios: | |
required: false | |
default: true | |
type: boolean | |
enable_windows: | |
required: false | |
default: true | |
type: boolean | |
enable_linux: | |
required: false | |
default: true | |
type: boolean | |
enable_macos: | |
required: false | |
default: true | |
type: boolean | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ inputs.flutter_version }} | |
channel: 'stable' | |
- uses: bluefireteam/melos-action@main | |
- run: melos run format-check | |
- run: melos run analyze -- ${{ inputs.fatal_warnings && '--fatal-infos' || '--no-fatal-warnings --no-fatal-infos' }} | |
- run: melos run test | |
web: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
if: inputs.enable_web | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ inputs.flutter_version }} | |
channel: 'stable' | |
- uses: bluefireteam/melos-action@main | |
- uses: nanasess/setup-chromedriver@v2 | |
- name: Run Flutter integration tests | |
working-directory: ./packages/audioplayers/example | |
run: | | |
export DISPLAY=:99 | |
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & | |
chromedriver --port=4444 & | |
( cd server; dart run bin/server.dart ) & | |
flutter drive \ | |
--driver=test_driver/integration_test.dart \ | |
--target=integration_test/platform_test.dart \ | |
-d web-server \ | |
--web-browser-flag="--autoplay-policy=no-user-gesture-required" \ | |
--web-browser-flag="--disable-web-security" \ | |
--dart-define USE_LOCAL_SERVER=true | |
flutter drive \ | |
--driver=test_driver/integration_test.dart \ | |
--target=integration_test/lib_test.dart \ | |
-d web-server \ | |
--web-browser-flag="--autoplay-policy=no-user-gesture-required" \ | |
--web-browser-flag="--disable-web-security" \ | |
--dart-define USE_LOCAL_SERVER=true | |
flutter drive \ | |
--driver=test_driver/integration_test.dart \ | |
--target=integration_test/app_test.dart \ | |
-d web-server \ | |
--web-browser-flag="--autoplay-policy=no-user-gesture-required" \ | |
--web-browser-flag="--disable-web-security" \ | |
--dart-define USE_LOCAL_SERVER=true | |
android: | |
runs-on: macos-13 | |
timeout-minutes: 90 | |
if: inputs.enable_android | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v3 | |
with: | |
# AGP8 needs JDK 17 | |
distribution: 'temurin' | |
java-version: '17' | |
- uses: subosito/flutter-action@v2 | |
with: | |
# TODO: use `inputs.flutter_version` and change to `stable`, when flutter/flutter#125657 has been released. | |
flutter-version: '3.13.0-0.1.pre' | |
channel: 'beta' | |
- uses: bluefireteam/melos-action@main | |
- name: Download Android emulator image | |
run: | | |
export ANDROID_TOOLS="$ANDROID_HOME/cmdline-tools/latest/bin" | |
echo "y" | $ANDROID_TOOLS/sdkmanager --install "system-images;android-30;aosp_atd;x86" | |
echo "no" | $ANDROID_TOOLS/avdmanager create avd --force --name emu --device "Nexus 5X" -k 'system-images;android-30;aosp_atd;x86' | |
$ANDROID_HOME/emulator/emulator -list-avds | |
- name: Start Android emulator | |
timeout-minutes: 10 | |
run: | | |
export ANDROID_TOOLS="$ANDROID_HOME/cmdline-tools/latest/bin" | |
echo "Starting emulator" | |
$ANDROID_TOOLS/sdkmanager "platform-tools" "platforms;android-30" | |
nohup $ANDROID_HOME/emulator/emulator -avd emu -no-audio -no-snapshot -no-window & | |
$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82' | |
$ANDROID_HOME/platform-tools/adb devices | |
echo "Emulator started" | |
- name: Run Flutter integration tests | |
working-directory: ./packages/audioplayers/example | |
# Need to execute lib and app tests one by one, see: https://github.com/flutter/flutter/issues/101031 | |
run: | | |
( cd server; dart run bin/server.dart ) & | |
flutter test integration_test/platform_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test integration_test/lib_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test integration_test/app_test.dart --dart-define USE_LOCAL_SERVER=true | |
- name: Run Android unit tests | |
working-directory: ./packages/audioplayers/example/android | |
run: ./gradlew test | |
ios: | |
runs-on: macos-latest | |
timeout-minutes: 60 | |
if: inputs.enable_ios | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ inputs.flutter_version }} | |
channel: 'stable' | |
- uses: bluefireteam/melos-action@main | |
- name: List all simulators | |
run: "xcrun simctl list devices" | |
- name: Start simulator | |
run: | | |
UDID=$(xcrun simctl list devices | grep "iPhone" | sed -n 1p | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})") | |
echo "Using simulator $UDID" | |
xcrun simctl boot "${UDID:?No Simulator with this name iPhone found}" | |
- name: Run Flutter integration tests | |
working-directory: ./packages/audioplayers/example | |
# Need to execute lib and app tests one by one, see: https://github.com/flutter/flutter/issues/101031 | |
run: | | |
( cd server; dart run bin/server.dart ) & | |
flutter test integration_test/platform_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test integration_test/lib_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test integration_test/app_test.dart --dart-define USE_LOCAL_SERVER=true | |
macos: | |
runs-on: macos-13 | |
timeout-minutes: 30 | |
if: inputs.enable_macos | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ inputs.flutter_version }} | |
channel: 'stable' | |
- uses: bluefireteam/melos-action@main | |
- name: setup-cocoapods | |
uses: maxim-lobanov/setup-cocoapods@v1 | |
with: | |
podfile-path: ./packages/audioplayers/example/macos/Podfile.lock | |
- name: Run Flutter integration tests | |
working-directory: ./packages/audioplayers/example | |
# Need to execute lib and app tests one by one, see: https://github.com/flutter/flutter/issues/101031 | |
run: | | |
( cd server; dart run bin/server.dart ) & | |
flutter test -d macos integration_test/platform_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d macos integration_test/lib_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d macos integration_test/app_test.dart --dart-define USE_LOCAL_SERVER=true | |
windows: | |
runs-on: windows-latest | |
timeout-minutes: 30 | |
if: inputs.enable_windows | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ inputs.flutter_version }} | |
channel: 'stable' | |
- uses: bluefireteam/melos-action@main | |
- name: Start audio server | |
run: net start audiosrv | |
- name: Install virtual audio device | |
timeout-minutes: 1 | |
shell: powershell | |
# TODO(gustl22): Remove workaround of setting the time when virtual audio device certificate is valid again (#1573) | |
run: | | |
Invoke-WebRequest https://github.com/duncanthrax/scream/releases/download/4.0/Scream4.0.zip -OutFile Scream.zip | |
Expand-Archive -Path Scream.zip -DestinationPath Scream | |
net stop w32time; W32tm /unregister; Set-Date (Get-Date "2023-07-04 12:00:00") | |
Import-Certificate -FilePath Scream\Install\driver\x64\Scream.cat -CertStoreLocation Cert:\LocalMachine\TrustedPublisher | |
Scream\Install\helpers\devcon-x64.exe install Scream\Install\driver\x64\Scream.inf *Scream | |
W32tm /register; net start w32time; w32tm /resync /force; $currentDate = Get-Date; Write-Host "Current System Date: $currentDate" | |
- name: Run Flutter integration tests | |
shell: powershell | |
working-directory: ./packages/audioplayers/example | |
# Need to execute lib and app tests one by one, see: https://github.com/flutter/flutter/issues/101031 | |
run: | | |
Start-Process -NoNewWindow -WorkingDirectory "server" dart -ArgumentList "run", "bin/server.dart" | |
flutter test -d windows integration_test/platform_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d windows integration_test/lib_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d windows integration_test/app_test.dart --dart-define USE_LOCAL_SERVER=true | |
linux: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
if: inputs.enable_linux | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: subosito/flutter-action@v2 | |
with: | |
# TODO: use `inputs.flutter_version` and change to `stable`, when flutter/flutter#129534 has been released. | |
flutter-version: '3.13.0-0.1.pre' | |
channel: 'beta' | |
- uses: bluefireteam/melos-action@main | |
- name: Install Flutter requirements for Linux | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev | |
- name: Install GStreamer | |
# Install libunwind-dev, see https://github.com/actions/runner-images/issues/6399#issuecomment-1285011525 | |
run: | | |
sudo apt install -y libunwind-dev | |
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad | |
- name: Run Flutter integration tests | |
working-directory: ./packages/audioplayers/example | |
# Need to execute lib and app tests one by one, see: https://github.com/flutter/flutter/issues/101031 | |
run: | | |
export DISPLAY=:99 | |
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & | |
( cd server; dart run bin/server.dart ) & | |
flutter test -d linux integration_test/platform_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d linux integration_test/lib_test.dart --dart-define USE_LOCAL_SERVER=true | |
flutter test -d linux integration_test/app_test.dart --dart-define USE_LOCAL_SERVER=true |