• auto-test.yml
  • # 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: Auto Test
    
    on:
      push:
        branches: [ master, 1.23.X ]
        paths-ignore:
          - '*.md'
      pull_request:
        branches: [ master, 1.23.X ]
        paths-ignore:
          - '*.md'
    
    jobs:
      auto-test:
        needs: [ check-linters ]
        runs-on: ${{ matrix.os }}
        timeout-minutes: 15
    
        strategy:
          matrix:
            os: [macos-latest, ubuntu-latest, windows-latest, ARM64]
            node: [ 18, 20 ]
            # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
    
        steps:
        - run: git config --global core.autocrlf false  # Mainly for Windows
        - uses: actions/checkout@v4
    
        - name: Use Node.js ${{ matrix.node }}
          uses: actions/setup-node@v4
          with:
            node-version: ${{ matrix.node }}
        - run: npm install
        - run: npm run build
        - run: npm run test-backend
          env:
            HEADLESS_TEST: 1
            JUST_FOR_TEST: ${{ secrets.JUST_FOR_TEST }}
    
      # As a lot of dev dependencies are not supported on ARMv7, we have to test it separately and just test if `npm ci --production` works
      armv7-simple-test:
        needs: [ ]
        runs-on: ${{ matrix.os }}
        timeout-minutes: 15
        if: ${{ github.repository == 'louislam/uptime-kuma' }}
        strategy:
          matrix:
            os: [ ARMv7 ]
            node: [ 18, 20 ]
            # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
    
        steps:
          - run: git config --global core.autocrlf false  # Mainly for Windows
          - uses: actions/checkout@v4
    
          - name: Use Node.js ${{ matrix.node }}
            uses: actions/setup-node@v4
            with:
              node-version: ${{ matrix.node }}
          - run: npm ci --production
    
      check-linters:
        runs-on: ubuntu-latest
    
        steps:
        - run: git config --global core.autocrlf false  # Mainly for Windows
        - uses: actions/checkout@v4
    
        - name: Use Node.js 20
          uses: actions/setup-node@v4
          with:
            node-version: 20
        - run: npm install
        - run: npm run lint:prod
    
      e2e-test:
        needs: [ ]
        runs-on: ubuntu-24.04-arm
        steps:
        - run: git config --global core.autocrlf false  # Mainly for Windows
        - uses: actions/checkout@v4
    
        - name: Use Node.js 20
          uses: actions/setup-node@v4
          with:
            node-version: 20
        - run: npm install
        - run: npx playwright install
        - run: npm run build
        - run: npm run test-e2e