Flutter Integration Tests #20
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
on: | |
# pull_request: | |
# branches: [ main ] | |
# push: | |
workflow_dispatch: | |
name: App Integration Tests | |
env: | |
NDK_VERSION: 25.2.9519653 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
run_checker: | |
runs-on: ubuntu-22.04 | |
name: Check legibility | |
outputs: | |
should_run_all: ${{steps.PR.outputs.pr_found == 'true' && contains(steps.PR.outputs.pr_labels, 'ci-test-ui-all')}} | |
should_run_desktop: ${{steps.PR.outputs.pr_found == 'true' && contains(steps.PR.outputs.pr_labels, 'ci-test-ui-desktop')}} | |
should_run_emulator: ${{steps.PR.outputs.pr_found == 'true' && contains(steps.PR.outputs.pr_labels, 'ci-test-ui-emulators')}} | |
should_run_ios: ${{steps.PR.outputs.pr_found == 'true' && contains(steps.PR.outputs.pr_labels, 'ci-test-ui-ios')}} | |
should_run_android: ${{steps.PR.outputs.pr_found == 'true' && contains(steps.PR.outputs.pr_labels, 'ci-test-ui-android')}} | |
steps: | |
- uses: 8BitJonny/[email protected] | |
id: PR | |
with: | |
# Verbose setting SHA when using Pull_Request event trigger to fix #16. (For push even trigger this is not necessary.) | |
sha: ${{ github.event.pull_request.head.sha }} | |
# Only return if PR is still open. (By default it returns PRs in any state.) | |
filterOutClosed: true | |
# Only return if PR is not in draft state. (By default it returns PRs in any state.) | |
# filterOutDraft: true | |
- run: echo "PR $prNumber $prTitle at $prUrl is labeled $prLabels. It should run a demo build; $contains" | |
if: steps.PR.outputs.pr_found == 'true' | |
env: | |
# Direct access to common PR properties | |
prNumber: ${{ steps.PR.outputs.number }} | |
prUrl: ${{ steps.PR.outputs.pr_url }} | |
prTitle: ${{ steps.PR.outputs.pr_title }} | |
prBody: ${{ steps.PR.outputs.pr_body }} | |
prCreatedAt: ${{ steps.PR.outputs.pr_created_at }} | |
prMergedAt: ${{ steps.PR.outputs.pr_merged_at }} | |
prClosedAt: ${{ steps.PR.outputs.pr_closed_at }} | |
prLabels: ${{ steps.PR.outputs.pr_labels }} | |
contains: ${{ contains(steps.PR.outputs.pr_labels, 'ci-test-ui') }} | |
#### ####### ###### | |
## ## ## ## ## | |
## ## ## ## | |
## ## ## ###### | |
## ## ## ## | |
## ## ## ## ## | |
#### ####### ###### | |
flutter-ios: | |
runs-on: macos-latest | |
environment: release | |
name: iOS | |
needs: | |
- run_checker | |
# if: ${{ github.ref == 'refs/heads/main' || needs.run_checker.outputs.should_run_ios != 'false' || needs.run_checker.outputs.should_run_emulator != 'false' || needs.run_checker.outputs.should_run_all != 'false' }} | |
continue-on-error: true | |
strategy: | |
matrix: | |
include: | |
- test: "Smoke" | |
device: 'iPhone 14' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install supported toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-make | |
uses: davidB/rust-cargo-make@v1 | |
- name: Rust iOS Setup | |
run: cargo make setup-ios | |
- uses: subosito/flutter-action@v2 | |
name: Set up flutter | |
with: | |
flutter-version: '3.24' | |
channel: 'stable' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- uses: michaelkaye/setup-matrix-synapse@main | |
with: | |
uploadLogs: true | |
httpPort: 8118 | |
disableRateLimiting: true | |
public_baseurl: "http://10.0.2.2:8080/" | |
customModules: synapse_super_invites | |
customConfig: | | |
email: | |
smtp_host: localhost | |
smtp_port: 1025 | |
force_tls: false | |
require_transport_security: false | |
enable_tls: false | |
notif_from: "Your Friendly %(app)s homeserver <[email protected]>" | |
can_verify_email: true | |
modules: | |
- module: "synapse_super_invites.SynapseSuperInvites" | |
config: | |
sql_url: "sqlite://" | |
generate_registration_token: true | |
- name: Install & Run MailHog | |
run: | | |
wget -q https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 | |
sudo chmod +x MailHog_linux_amd64 | |
./MailHog_linux_amd64 & | |
- name: Build Native | |
run: cargo make --profile release ios-sim | |
- name: Write environment | |
working-directory: ./app | |
shell: bash | |
run: | | |
cat <<EOF > .env.production | |
RAGESHAKE_URL=http://10.0.2.2:9110/api/listing | |
RAGESHAKE_APP_NAME=acter-ci | |
DEFAULT_HOMESERVER_URL=http://10.0.2.2:8118 | |
DEFAULT_HOMESERVER_NAME=10.0.2.2 | |
isCI=true | |
EOF | |
dart run enven | |
echo "Show .env files" | |
ls -ltash .env* | |
- uses: futureware-tech/simulator-action@v3 | |
id: ios_simulator | |
timeout-minutes: 10 | |
with: | |
model: ${{matrix.device}} | |
- name: Flutter setup | |
working-directory: app | |
run: | | |
flutter pub get | |
- name: Run flutter integration tests | |
timeout-minutes: 10 | |
run: .github/scripts/flutter-integration-tests.sh Smoke | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: ios-convtest-report | |
path: /tmp/ConvenientTest/ | |
# # file an error if this failed on `main` post-merge | |
# - name: Report issue | |
# if: ${{ github.ref == 'refs/heads/main' && failure() }} | |
# uses: JasonEtco/create-an-issue@v2 | |
# env: | |
# GITHUB_TOKEN: ${{ github.token }} | |
# TITLE: "iOS integration tests failed on main" | |
# FAILED_RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }} | |
# ARTIFACT_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
# with: | |
# assignees: gnunicorn | |
# filename: .github/templates/failure-report-template.md.tmpl | |
# update_existing: true | |
# - name: Clean up keychain and provisioning profile | |
# if: ${{ always() }} | |
# run: | | |
# security delete-keychain $RUNNER_TEMP/app-signing.keychain-db | |
# rm ~/Library/MobileDevice/Provisioning\ Profiles/* | |
# rm .github/assets/git-crypt-key | |
### ## ## ######## ######## ####### #### ######## | |
## ## ### ## ## ## ## ## ## ## ## ## ## | |
## ## #### ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ######## ## ## ## ## ## | |
######### ## #### ## ## ## ## ## ## ## ## ## | |
## ## ## ### ## ## ## ## ## ## ## ## ## | |
## ## ## ## ######## ## ## ####### #### ######## | |
android: | |
runs-on: ubuntu-22.04 | |
name: Android | |
continue-on-error: true | |
# if: ${{ github.ref == 'refs/heads/main' || needs.run_checker.outputs.should_run_android != 'false' || needs.run_checker.outputs.should_run_emulator != 'false' || needs.run_checker.outputs.should_run_all != 'false' }} | |
needs: | |
- run_checker | |
strategy: | |
matrix: | |
api_level: [34] | |
test: ["Auth", "Updates", "Events", "Subspace", "SuperInvites", "Tasks", "Pins", "Attachments"] # "Bug Reporting", disabled as it needs a rageshake server | |
include: | |
- api_level: 23 # MinimalSDK version Smoke Test | |
test: "Smoke" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install supported toolchain | |
id: rust_toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: jlumbroso/free-disk-space@main | |
name: Free Disk Space (Ubuntu) | |
with: | |
tool-cache: true | |
android: false | |
- uses: Swatinem/rust-cache@v2 | |
id: cache-cargo | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
cache: gradle | |
- name: Install cargo-make | |
if: steps.cache-cargo.outputs.cache-hit != 'true' | |
uses: davidB/rust-cargo-make@v1 | |
- name: Rust Android Setup | |
run: cargo make setup-android | |
- name: Install NDK $NDK_VERSION | |
run: | | |
ANDROID_ROOT=/usr/local/lib/android | |
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk | |
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager | |
echo "y" | $SDKMANAGER "ndk;$NDK_VERSION" | |
echo "Installed $NDK_VERSION" | |
ls /usr/local/lib/android/sdk/ndk/$NDK_VERSION | |
- uses: subosito/flutter-action@v2 | |
name: Set up flutter | |
with: | |
flutter-version: '3.24' | |
channel: 'stable' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- uses: michaelkaye/setup-matrix-synapse@main | |
with: | |
uploadLogs: true | |
httpPort: 8118 | |
disableRateLimiting: true | |
public_baseurl: "http://10.0.2.2:8080/" | |
customModules: synapse_super_invites | |
customConfig: | | |
email: | |
smtp_host: localhost | |
smtp_port: 1025 | |
force_tls: false | |
require_transport_security: false | |
enable_tls: false | |
notif_from: "Your Friendly %(app)s homeserver <[email protected]>" | |
can_verify_email: true | |
modules: | |
- module: "synapse_super_invites.SynapseSuperInvites" | |
config: | |
sql_url: "sqlite://" | |
generate_registration_token: true | |
- name: Install & Run MailHog | |
run: | | |
wget -q https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 | |
sudo chmod +x MailHog_linux_amd64 | |
./MailHog_linux_amd64 & | |
- name: Build Native | |
run: | | |
export ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk/$NDK_VERSION | |
cargo make android-dev | |
- name: Flutter setup | |
working-directory: app | |
run: flutter pub get | |
- name: Enable KVM | |
run: | | |
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: Gradle cache | |
uses: gradle/actions/setup-gradle@v3 | |
- name: AVD cache | |
uses: actions/cache@v4 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{matrix.api_level}} | |
- name: Write environment | |
working-directory: ./app | |
shell: bash | |
run: | | |
cat <<EOF > .env.production | |
RAGESHAKE_URL=http://10.0.2.2:9110/api/listing | |
RAGESHAKE_APP_NAME=acter-ci | |
DEFAULT_HOMESERVER_URL=http://10.0.2.2:8118 | |
DEFAULT_HOMESERVER_NAME=10.0.2.2 | |
isCI=true | |
EOF | |
dart run enven | |
echo "Show .env files" | |
ls -ltash .env* | |
- name: create AVD and generate snapshot for caching | |
if: steps.avd-cache.outputs.cache-hit != 'true' | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{matrix.api_level}} | |
arch: x86_64 | |
target: google_apis | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: false | |
script: echo "Generated AVD snapshot for caching." | |
- name: Run integration tests on android | |
uses: reactivecircus/android-emulator-runner@v2 | |
timeout-minutes: 10 | |
with: | |
api-level: ${{matrix.api_level}} | |
arch: x86_64 | |
target: google_apis | |
force-avd-creation: false | |
# emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# disable-animations: true | |
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
# emulator-build: 7425822 # workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160 | |
script: | | |
sleep 15 | |
./.github/scripts/flutter-integration-tests.sh --run-only "${{matrix.test}}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: android-convtest-report-${{matrix.api_level}}-${{matrix.test}} | |
path: | | |
/tmp/ConvenientTest/ | |
# file an error if this failed on `main` post-merge | |
- name: Report issue | |
if: ${{ github.ref == 'refs/heads/main' && failure() }} | |
uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
TITLE: "Android integration tests failed on main" | |
FAILED_RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }} | |
ARTIFACT_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
with: | |
assignees: gnunicorn | |
filename: .github/templates/failure-report-template.md.tmpl | |
update_existing: true | |
## #### ## ## ## ## ## ## | |
## ## ### ## ## ## ## ## | |
## ## #### ## ## ## ## ## | |
## ## ## ## ## ## ## ### | |
## ## ## #### ## ## ## ## | |
## ## ## ### ## ## ## ## | |
######## #### ## ## ####### ## ## | |
linux-desktop: | |
runs-on: ubuntu-22.04 | |
name: Linux Desktop | |
continue-on-error: true | |
needs: | |
- run_checker | |
strategy: | |
matrix: | |
test: ["Smoke"] #, "Auth", "Updates", "Events", "Subspace", "SuperInvites", "Tasks", "Pins", "Attachments"] # "Bug Reporting", disabled as it needs a rageshake server | |
# if: ${{ github.ref == 'refs/heads/main' || needs.run_checker.outputs.should_run_all != 'false' || needs.run_checker.outputs.should_run_desktop != 'false' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install extra deps | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libgtk-3-dev libx11-dev pkg-config cmake ninja-build libblkid-dev liblzma-dev | |
sudo apt install -y dbus-x11 network-manager upower mpv libmpv-dev | |
- name: Install supported toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-make | |
uses: davidB/rust-cargo-make@v1 | |
- uses: subosito/flutter-action@v2 | |
name: Set up flutter | |
with: | |
flutter-version: '3.24' | |
channel: 'stable' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- uses: michaelkaye/setup-matrix-synapse@main | |
with: | |
uploadLogs: true | |
httpPort: 8118 | |
disableRateLimiting: true | |
public_baseurl: "http://localhost:8080/" | |
customModules: synapse_super_invites | |
customConfig: | | |
email: | |
smtp_host: localhost | |
smtp_port: 1025 | |
force_tls: false | |
require_transport_security: false | |
enable_tls: false | |
notif_from: "Your Friendly %(app)s homeserver <[email protected]>" | |
can_verify_email: true | |
modules: | |
- module: "synapse_super_invites.SynapseSuperInvites" | |
config: | |
sql_url: "sqlite://" | |
generate_registration_token: true | |
- name: Install & Run MailHog | |
run: | | |
wget -q https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 | |
sudo chmod +x MailHog_linux_amd64 | |
./MailHog_linux_amd64 & | |
- name: Enable Linux Desktop | |
run: flutter config --enable-linux-desktop | |
- name: Build Native | |
run: cargo make desktop | |
- name: Flutter setup | |
working-directory: app | |
run: flutter pub get | |
- name: Open Keyring | |
uses: t1m0thyj/unlock-keyring@v1 | |
- name: Write environment | |
working-directory: ./app | |
shell: bash | |
run: | | |
cat <<EOF > .env.production | |
RAGESHAKE_URL=http://localhost:9110/api/listing | |
RAGESHAKE_APP_NAME=acter-ci | |
DEFAULT_HOMESERVER_URL=http://localhost:8118 | |
DEFAULT_HOMESERVER_NAME=localhost | |
isCI=true | |
EOF | |
dart run enven | |
echo "Show .env files" | |
ls -ltash .env* | |
- name: Run flutter integration tests | |
working-directory: app | |
timeout-minutes: 10 | |
run: | | |
export DISPLAY=:99 | |
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & | |
xvfb_pid=$! | |
flutter run integration_test/main_test.dart \ | |
-d linux \ | |
--hot \ | |
--host-vmservice-port 9753 \ | |
--disable-service-auth-codes \ | |
--dart-define CI=true \ | |
--dart-define CONVENIENT_TEST_APP_CODE_DIR=lib \ | |
--dart-define MAILHOG_URL=http://localhost:8025 \ | |
--dart-define RAGESHAKE_LISTING_URL=http://localhost:9110/api/listing \ | |
& | |
subscript_pid=$! | |
# actual manager runner | |
dart run convenient_test_manager_dart --enable-report-saver ${{matrix.test}} | |
exit_status=$? | |
kill "$xvfb_pid" "$subscript_pid" | |
exit exit_status | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: linux-desktop-${{matrix.test}}-convtest-report | |
path: /tmp/ConvenientTest/ | |
# # file an error if this failed on `main` post-merge | |
# - name: Report issue | |
# if: ${{ github.ref == 'refs/heads/main' && failure() }} | |
# uses: JasonEtco/create-an-issue@v2 | |
# env: | |
# GITHUB_TOKEN: ${{ github.token }} | |
# TITLE: "Desktop integration tests failed on main" | |
# FAILED_RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }} | |
# ARTIFACT_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
# with: | |
# assignees: gnunicorn | |
# filename: .github/templates/failure-report-template.md.tmpl | |
# update_existing: true | |
## ## #### ## ## ######## ####### ## ## ###### | |
## ## ## ## ### ## ## ## ## ## ## ## ## ## ## | |
## ## ## ## #### ## ## ## ## ## ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## ## ## ## ## ###### | |
## ## ## ## ## #### ## ## ## ## ## ## ## ## | |
## ## ## ## ## ### ## ## ## ## ## ## ## ## ## | |
### ### #### ## ## ######## ####### ### ### ###### | |
windows-desktop: | |
runs-on: windows-latest | |
name: Windows Desktop | |
continue-on-error: true | |
needs: | |
- run_checker | |
strategy: | |
matrix: | |
test: ["Smoke"] #, "Auth", "Updates", "Events", "Subspace", "SuperInvites", "Tasks", "Pins", "Attachments"] # "Bug Reporting", disabled as it needs a rageshake server | |
# if: ${{ github.ref == 'refs/heads/main' || needs.run_checker.outputs.should_run_all != 'false' || needs.run_checker.outputs.should_run_desktop != 'false' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install supported toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-make | |
uses: davidB/rust-cargo-make@v1 | |
- uses: subosito/flutter-action@v2 | |
name: Set up flutter | |
with: | |
flutter-version: '3.24' | |
channel: 'stable' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- uses: michaelkaye/setup-matrix-synapse@main | |
with: | |
uploadLogs: true | |
httpPort: 8118 | |
disableRateLimiting: true | |
public_baseurl: "http://localhost:8080/" | |
customModules: synapse_super_invites | |
customConfig: | | |
email: | |
smtp_host: localhost | |
smtp_port: 1025 | |
force_tls: false | |
require_transport_security: false | |
enable_tls: false | |
notif_from: "Your Friendly %(app)s homeserver <[email protected]>" | |
can_verify_email: true | |
modules: | |
- module: "synapse_super_invites.SynapseSuperInvites" | |
config: | |
sql_url: "sqlite://" | |
generate_registration_token: true | |
- name: Install & Run MailHog | |
run: | | |
wget -q https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_windows_amd64 | |
sudo chmod +x MailHog_windows_amd64 | |
./MailHog_windows_amd64 & | |
- name: Enable Windows Desktop | |
run: flutter config --enable-windows-desktop | |
- name: Build Native | |
run: cargo make desktop | |
- name: Flutter setup | |
working-directory: app | |
run: flutter pub get | |
- name: Write environment | |
working-directory: ./app | |
shell: bash | |
run: | | |
cat <<EOF > .env.production | |
RAGESHAKE_URL=http://localhost:9110/api/listing | |
RAGESHAKE_APP_NAME=acter-ci | |
DEFAULT_HOMESERVER_URL=http://localhost:8118 | |
DEFAULT_HOMESERVER_NAME=localhost | |
isCI=true | |
EOF | |
dart run enven | |
echo "Show .env files" | |
ls -ltash .env* | |
- name: Run flutter integration tests | |
working-directory: app | |
timeout-minutes: 10 | |
run: | | |
flutter run integration_test/main_test.dart \ | |
-d Windows \ | |
--hot \ | |
--host-vmservice-port 9753 \ | |
--disable-service-auth-codes \ | |
--dart-define CI=true \ | |
--dart-define CONVENIENT_TEST_APP_CODE_DIR=lib \ | |
--dart-define MAILHOG_URL=http://localhost:8025 \ | |
--dart-define RAGESHAKE_LISTING_URL=http://localhost:9110/api/listing \ | |
& | |
subscript_pid=$! | |
# actual manager runner | |
dart run convenient_test_manager_dart --enable-report-saver ${{matrix.test}} | |
exit_status=$? | |
kill "$subscript_pid" | |
exit exit_status | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: windows-desktop-${{matrix.test}}-convtest-report | |
path: /tmp/ConvenientTest/ | |
# # file an error if this failed on `main` post-merge | |
# - name: Report issue | |
# if: ${{ github.ref == 'refs/heads/main' && failure() }} | |
# uses: JasonEtco/create-an-issue@v2 | |
# env: | |
# GITHUB_TOKEN: ${{ github.token }} | |
# TITLE: "Desktop integration tests failed on main" | |
# FAILED_RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }} | |
# ARTIFACT_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
# with: | |
# assignees: gnunicorn | |
# filename: .github/templates/failure-report-template.md.tmpl | |
# update_existing: true | |
## ## ### ###### ####### ###### | |
### ### ## ## ## ## ## ## ## ## | |
#### #### ## ## ## ## ## ## | |
## ### ## ## ## ## ## ## ###### | |
## ## ######### ## ## ## ## | |
## ## ## ## ## ## ## ## ## ## | |
## ## ## ## ###### ####### ###### | |
macos-desktop: | |
runs-on: macos-12 | |
name: MacOS Desktop | |
continue-on-error: true | |
needs: | |
- run_checker | |
strategy: | |
matrix: | |
test: ["Smoke"] #, "Auth", "Updates", "Events", "Subspace", "SuperInvites", "Tasks", "Pins", "Attachments"] # "Bug Reporting", disabled as it needs a rageshake server | |
# if: ${{ github.ref == 'refs/heads/main' || needs.run_checker.outputs.should_run_all != 'false' || needs.run_checker.outputs.should_run_desktop != 'false' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install supported toolchain | |
uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-make | |
uses: davidB/rust-cargo-make@v1 | |
- uses: subosito/flutter-action@v2 | |
name: Set up flutter | |
with: | |
flutter-version: '3.24' | |
channel: 'stable' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- uses: michaelkaye/setup-matrix-synapse@main | |
with: | |
uploadLogs: true | |
httpPort: 8118 | |
disableRateLimiting: true | |
public_baseurl: "http://localhost:8080/" | |
customModules: synapse_super_invites | |
customConfig: | | |
email: | |
smtp_host: localhost | |
smtp_port: 1025 | |
force_tls: false | |
require_transport_security: false | |
enable_tls: false | |
notif_from: "Your Friendly %(app)s homeserver <[email protected]>" | |
can_verify_email: true | |
modules: | |
- module: "synapse_super_invites.SynapseSuperInvites" | |
config: | |
sql_url: "sqlite://" | |
generate_registration_token: true | |
- name: Install & Run MailHog | |
shell: bash | |
run: | | |
wget -q https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_darwin_amd64 | |
sudo chmod +x MailHog_darwin_amd64 | |
./MailHog_windows_amd64 & | |
- name: Enable MacOS Desktop | |
run: flutter config --enable-macos-desktop | |
- name: Build Native | |
run: cargo make desktop | |
- name: Flutter setup | |
working-directory: app | |
run: flutter pub get | |
- name: Write environment | |
working-directory: ./app | |
shell: bash | |
run: | | |
cat <<EOF > .env.production | |
RAGESHAKE_URL=http://localhost:9110/api/listing | |
RAGESHAKE_APP_NAME=acter-ci | |
DEFAULT_HOMESERVER_URL=http://localhost:8118 | |
DEFAULT_HOMESERVER_NAME=localhost | |
isCI=true | |
EOF | |
dart run enven | |
echo "Show .env files" | |
ls -ltash .env* | |
- name: Run flutter integration tests | |
working-directory: app | |
timeout-minutes: 10 | |
shell: bash | |
run: | | |
flutter run integration_test/main_test.dart \ | |
-d macOS \ | |
--hot \ | |
--host-vmservice-port 9753 \ | |
--disable-service-auth-codes \ | |
--dart-define CI=true \ | |
--dart-define CONVENIENT_TEST_APP_CODE_DIR=lib \ | |
--dart-define MAILHOG_URL=http://localhost:8025 \ | |
--dart-define RAGESHAKE_LISTING_URL=http://localhost:9110/api/listing \ | |
& | |
subscript_pid=$! | |
# actual manager runner | |
dart run convenient_test_manager_dart --enable-report-saver ${{matrix.test}} | |
exit_status=$? | |
kill "$subscript_pid" | |
exit exit_status | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v1 | |
if: failure() | |
with: | |
name: macos-desktop-${{matrix.test}}-convtest-report | |
path: /tmp/ConvenientTest/ | |
# # file an error if this failed on `main` post-merge | |
# - name: Report issue | |
# if: ${{ github.ref == 'refs/heads/main' && failure() }} | |
# uses: JasonEtco/create-an-issue@v2 | |
# env: | |
# GITHUB_TOKEN: ${{ github.token }} | |
# TITLE: "Desktop integration tests failed on main" | |
# FAILED_RUN_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }} | |
# ARTIFACT_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
# with: | |
# assignees: gnunicorn | |
# filename: .github/templates/failure-report-template.md.tmpl | |
# update_existing: true |