Skip to content

SplitTunnel 04: Add Daemon Error Reporting #3558

SplitTunnel 04: Add Daemon Error Reporting

SplitTunnel 04: Add Daemon Error Reporting #3558

Workflow file for this run

name: MacOS Tests
on:
push:
branches:
- main
- "releases/**"
pull_request:
branches:
- main
- "releases/**"
# Restrict tests to the most recent commit.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build_test_app:
name: Build Test Client
runs-on: macos-latest
defaults:
run:
shell: bash -el {0}
outputs:
matrix: ${{ steps.testGen.outputs.tests }}
steps:
- name: Clone repository
uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
environment-file: env.yml
activate-environment: vpn
- name: Install build dependencies
run: |
./scripts/macos/conda_install_extras.sh
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
brew install ninja
- name: Install Qt6
run: |
wget https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/mozillavpn.v2.mozillavpn.cache.level-3.toolchains.v3.qt-macos-6.6.latest/artifacts/public%2Fbuild%2Fqt6_mac.zip -O qt6_mac.zip
unzip -a -d ${{ github.workspace }} qt6_mac.zip
- name: Compile test client
run: |
mkdir -p build/cmake
cmake -S $(pwd) -B build/cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/qt_dist/lib/cmake
cmake --build build/cmake
cp -r ./build/cmake/src/Mozilla\ VPN.app/ build/Mozilla\ VPN.app
- name: Compile test addons
run: |
mkdir -p build/addons
cmake -S $(pwd)/tests/functional/addons -B build/addons \
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/qt_dist/lib/cmake
cmake --build build/addons
- uses: actions/upload-artifact@v4
with:
name: test-client-${{ github.sha }}
path: |
build/
!build/cmake/
- name: Generate tasklist
id: testGen
run: |
echo -n "tests=" >> $GITHUB_OUTPUT
for test in $(find tests/functional -name 'test*.js' | sort); do
printf '{"name": "%s", "path": "%s"}' $(basename ${test%.js} | sed -n 's/test//p') $test
done | jq -s -c >> $GITHUB_OUTPUT
- name: Check tests
env:
TEST_LIST: ${{ steps.testGen.outputs.tests }}
run: |
echo $TEST_LIST | jq
functionaltests:
name: Functional tests
needs:
- build_test_app
runs-on: macos-latest
timeout-minutes: 45
strategy:
fail-fast: false # Don't cancel other jobs if a test fails
matrix:
test: ${{ fromJson(needs.build_test_app.outputs.matrix) }}
steps:
- name: Clone repository
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: test-client-${{ github.sha }}
path: build/
- uses: actions/setup-python@v5
env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
with:
python-version: "3.9"
cache: "pip"
- run: pip install -r requirements.txt
- uses: actions/setup-node@v4
with:
node-version: 18
cache: "npm"
- run: npm install
- name: Check build
shell: bash
run: |
chmod +x ./build/Mozilla\ VPN.app/Contents/MacOS/Mozilla\ VPN
./build/Mozilla\ VPN.app/Contents/MacOS/Mozilla\ VPN -v
- name: Running ${{ matrix.test.name }} Tests
shell: bash
id: runTests
env:
TZ: Europe/London
HEADLESS: yes
ARTIFACT_DIR: ${{ runner.temp }}/artifacts
MVPN_ADDONS_PATH: ./build/addons
MVPN_BIN: ./build/Mozilla VPN.app/Contents/MacOS/Mozilla VPN
run: |
export PATH=$GECKOWEBDRIVER:$(npm bin):$PATH
mkdir -p $ARTIFACT_DIR
npm run functionalTest -- --retries 3 ${{ matrix.test.path }}
- name: Uploading artifacts
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: ${{ matrix.test.name }} Logs
path: ${{ runner.temp }}/artifacts
if-no-files-found: ignore