Skip to content

Setup Testing

Setup Testing #99

Workflow file for this run

name: Test Suite
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
GOPRIVATE: github.com/getlantern
jobs:
test-suite:
runs-on: ${{ matrix.os }}
# runs-on: ubuntu-latest-16-cores
strategy:
matrix:
os: [ ubuntu-latest-16-cores, windows-latest ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
lfs: true
- name: Pull LFS objects
run: git lfs pull
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
- name: Granting private modules access
run: git config --global url."https://${{ secrets.GH_TOKEN }}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
- name: GCloud Auth
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
- name: 'Set up Cloud SDK'
uses: google-github-actions/setup-gcloud@v2
- name: Setup protoc
uses: arduino/setup-protoc@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install latest protoc-gen-go
run: go install github.com/golang/protobuf/protoc-gen-go@latest
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: 'gradle'
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
- name: Activate dart plugins
run: |
dart pub global activate protoc_plugin
dart pub global activate patrol_cli
- name: Install dependencies
run: flutter pub get
- name: Generate app.env
env:
ANDROID_INTERSTITIAL_AD_ID: ${{ secrets.INTERSTITIAL_AD_UNIT_ID }}
IOS_INTERSTITIAL_AD_ID: ${{ secrets.INTERSTITIAL_AD_UNIT_ID_IOS }}
TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID: ${{ secrets.TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID }}
TAPSELL_INTERSTITIAL_ZONE_ID: ${{ secrets.TAPSELL_INTERSTITIAL_ZONE_ID }}
run: |
touch app.env
echo "Android_interstitialAd=$ANDROID_INTERSTITIAL_AD_ID" > app.env
echo "IOS_interstitialAd=$IOS_INTERSTITIAL_AD_ID" >> app.env
echo "VideoInterstitialZoneId=$TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID" >> app.env
echo "InterstitialZoneId=$TAPSELL_INTERSTITIAL_ZONE_ID" >> app.env
- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
if: runner.os == 'macOS'
with:
xcode-version: latest-stable
- name: Install Linux dependencies
if: runner.os == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y network-manager dbus-x11
sudo apt-get install -y libwebkit2gtk-4.1-dev
sudo apt-get install -y libunwind-dev libstdc++-12-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-d cmake
sudo apt-get install -y libgtk-3-0 libblkid1 liblzma5
sudo apt-get install -y libpcap-dev libgtk-3-dev libayatana-appindicator3-dev ruby ruby-dev && sudo gem install bundler -v 2.2.26
- name: Install the ninja build tool
if: runner.os == 'linux'
uses: seanmiddleditch/gha-setup-ninja@master
- name: Install WebView2 Runtime
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/p/?LinkId=2124703" -OutFile "MicrosoftEdgeWebView2Setup.exe"
Start-Process -FilePath ".\MicrosoftEdgeWebView2Setup.exe" -ArgumentList "/silent", "/install" -Wait
- name: Set up MinGW
if: matrix.os == 'windows-latest'
run: choco install mingw -y
- name: Build for Windows
if: matrix.os == 'windows-latest'
run: |
echo "Building for Windows..."
make windows
make ffigen
- name: Build linux Libraries
shell: bash
if: runner.os == 'linux'
run: |
make android ANDROID_ARCH=all
make linux
make ffigen
- name: Running widget tests
run: make widget-tests
# Run firebase test only on one OS runner
# Does make sense to run on all OS runners
- name: Running workflow test for android on Firebase test labs
if: runner.os == 'linux'
run: make ci-android-test
- name: Running workflow test for macos
run: make maOSWorkflowTest
if: runner.os == 'macOS'
timeout-minutes: 60
- name: Running workflow test for linux
uses: coactions/setup-xvfb@v1
if: runner.os == 'linux'
timeout-minutes: 60
with:
run: |
sudo systemctl start dbus
sudo systemctl start NetworkManager
make linuxDesktopTest
- name: Running workflow test for windows
run: make windowsDesktopTest
if: runner.os == 'windows'
timeout-minutes: 60