--- name: Desktop frontend on: pull_request: paths: - .github/workflows/frontend.yml - desktop/** - mullvad-management-interface/proto/** workflow_dispatch: permissions: {} jobs: check-frontend: strategy: matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Checkout wireguard-go submodule run: git submodule update --init --depth=1 wireguard-go-rs - name: Install Rust uses: actions-rs/toolchain@v1.0.6 with: toolchain: stable default: true profile: minimal - name: Setup node uses: actions/setup-node@v4 with: node-version-file: desktop/package.json cache: 'npm' cache-dependency-path: desktop/package-lock.json - name: Install dependencies working-directory: desktop shell: bash run: npm ci - name: Check formatting if: matrix.os == 'ubuntu-latest' working-directory: desktop shell: bash run: npm run lint - name: Build working-directory: desktop shell: bash run: npm run build -w mullvad-vpn - name: Run headless test Linux if: runner.os == 'Linux' working-directory: desktop run: xvfb-run -a npm test - name: Run headless test Windows if: runner.os != 'Linux' working-directory: desktop shell: bash run: npm test - name: Run Playwright tests on Linux if: runner.os == 'Linux' working-directory: desktop # The sandbox is disabled as a workaround for lacking userns permisisons which is required # since Ubuntu 24.04. run: NO_SANDBOX=1 npm run e2e:no-build -w mullvad-vpn - name: Run Playwright tests on Windows if: runner.os != 'Linux' working-directory: desktop shell: bash run: npm run e2e:no-build --w mullvad-vpn