# 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: lts/* cache: "npm" - name: "Install dependencies" run: | node --run install-mm:dev - name: "Run linter tests" run: | node --run test:prettier node --run test:js node --run test:css node --run test:markdown test: runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: matrix: node-version: [22.14.0, 22.x, 24.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: | node --run install-mm:dev - name: "Prepare environment for 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 & touch css/custom.css - name: "Run tests" run: | export WAYLAND_DISPLAY=wayland-0 node --run test