VPN-4684: Add privacy features help sheet #963
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: WebAssembly 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: | |
wasmQt6: | |
name: Wasm Qt6 | |
runs-on: ubuntu-20.04 | |
outputs: | |
matrix: ${{ steps.testGen.outputs.tests }} | |
env: | |
QTVERSION: 6.2.4 | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Install build dependencies | |
shell: bash | |
run: | | |
pip install -r requirements.txt | |
- name: Install Qt6 | |
shell: bash | |
run: | | |
# qt6.2.3 for wasm needs the desktop linux installation | |
python -m aqt install-qt -O /opt linux desktop $QTVERSION | |
python -m aqt install-qt -O /opt linux desktop $QTVERSION wasm_32 -m qtcharts qtwebsockets qt5compat | |
- name: Setup emsdk | |
uses: mymindstorm/setup-emsdk@v7 | |
- name: Compile test client | |
shell: bash | |
run: | | |
export PATH=/opt/$QTVERSION/wasm_32/bin:/opt/$QTVERSION/gcc_64/bin:$PATH | |
mkdir -p build/cmake | |
/opt/$QTVERSION/wasm_32/bin/qt-cmake -S $(pwd) -B build/cmake -DCMAKE_BUILD_TYPE=Release \ | |
-DQT_HOST_PATH_CMAKE_DIR=/opt/$QTVERSION/gcc_64/lib/cmake \ | |
-DQT_HOST_PATH=/opt/$QTVERSION/gcc_64 | |
cmake --build build/cmake -j4 | |
cp -r build/cmake/wasm_build build/wasm_build | |
- name: Compile test addons | |
shell: bash | |
run: | | |
mkdir -p build/addons | |
cmake -S $(pwd)/tests/functional/addons -B build/addons \ | |
-DCMAKE_PREFIX_PATH=/opt/$QTVERSION/gcc_64/lib/cmake | |
cmake --build build/addons | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: WebAssembly Build Qt6 | |
path: | | |
build/ | |
!build/cmake/ | |
- name: Generate tasklist | |
id: testGen | |
shell: bash | |
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 | |
shell: bash | |
env: | |
TEST_LIST: ${{ steps.testGen.outputs.tests }} | |
run: | | |
echo $TEST_LIST | jq | |
functionaltests: | |
name: Functional tests | |
needs: | |
- wasmQt6 | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 45 | |
strategy: | |
fail-fast: false # Don't cancel other jobs if a test fails | |
matrix: | |
test: ${{ fromJson(needs.wasmQt6.outputs.matrix) }} | |
env: | |
QTVERSION: 6.2.4 | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: WebAssembly Build Qt6 | |
path: build/ | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- run: pip install -r requirements.txt | |
- name: Install test dependecies | |
run: | | |
sudo apt install --no-upgrade firefox xvfb -y | |
npm install | |
- name: Running ${{ matrix.test.name }} Tests | |
id: runTests | |
uses: nick-invision/retry@v2 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: | | |
export PATH=$GECKOWEBDRIVER:$(npm bin):$PATH | |
export HEADLESS=yes | |
export WASM_BUILD_DIRECTORY=$(pwd)/build/wasm_build | |
export MVPN_ADDONS_PATH=$(pwd)/build/addons | |
xvfb-run -a npm run functionalTestWasm -- --retries 3 ${{ matrix.test.path }} |