name: Desktop frontend on: # Build whenever a file that affects the frontend is changed in a pull request pull_request: paths: - .github/workflows/frontend.yml - gui/** - mullvad-management-interface/proto/** # Build if requested manually from the Actions tab workflow_dispatch: jobs: check-frontend: strategy: matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup volta uses: volta-cli/action@v1 - name: Get npm cache directory path id: npm-cache-dir-path run: echo "::set-output name=dir::$(npm config get cache)" - name: Cache npm dependencies uses: actions/cache@v3 with: path: ${{ steps.npm-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-npm- - name: Install dependencies working-directory: gui run: npm ci - name: Check formatting if: matrix.os == 'ubuntu-latest' working-directory: gui run: npm run lint - name: Build working-directory: gui run: npm run build - name: Run headless test uses: GabrielBB/xvfb-action@v1 with: working-directory: gui run: npm test