Skip to content

test

test #60

Workflow file for this run

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