# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: "Run Automated Tests" on: push: branches: [master, develop] pull_request: branches: [master, develop] permissions: contents: read jobs: code-style-check: runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: "Checkout code" uses: actions/checkout@v4 - name: "Use Node.js" uses: actions/setup-node@v4 with: node-version: 23 cache: "npm" - name: "Install dependencies" run: | npm run install-mm:dev - name: "Run linter tests" run: | npm run test:prettier npm run test:js npm run test:css npm run test:markdown test: runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: matrix: node-version: [22.14.0, 22.x, 23.x] steps: - name: Install electron dependencies and labwc run: | sudo apt-get update sudo apt-get install -y libnss3 libasound2t64 labwc - name: "Checkout code" uses: actions/checkout@v4 - name: "Use Node.js ${{ matrix.node-version }}" uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} check-latest: true cache: "npm" - name: "Install MagicMirror²" run: | npm run install-mm:dev - name: "Run tests" run: | # Fix chrome-sandbox permissions: sudo chown root:root ./node_modules/electron/dist/chrome-sandbox sudo chmod 4755 ./node_modules/electron/dist/chrome-sandbox # Start labwc WLR_BACKENDS=headless WLR_LIBINPUT_NO_DEVICES=1 WLR_RENDERER=pixman labwc & export WAYLAND_DISPLAY=wayland-0 touch css/custom.css npm run test