name: "Pull Requests"

on:
  workflow_dispatch:
  pull_request:
    types: [synchronize, opened, reopened]

jobs:
  main:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Set node version
      uses: actions/setup-node@v3
      with:
        node-version: '18.x'

    - name: Install
      run: |
        export DETECT_CHROMEDRIVER_VERSION=true
        npm install
        npm run setheapsize

    - name: Lint
      run: npx grunt lint

    - name: Unit Tests
      run: |
        npm test
        npm run testnodeconsumer

    - name: Production Build
      if: success()
      run: npx grunt prod

    - name: Production Image Build
      if: success()
      id: build-image
      uses: redhat-actions/buildah-build@v2
      with:
        # Not being uploaded to any registry, use a simple name to allow Buildah to build correctly.
        image: cyberchef
        containerfiles: ./Dockerfile
        platforms: linux/amd64
        oci: true
        # Webpack seems to use a lot of open files, increase the max open file limit to accomodate.
        extra-args: |
          --ulimit nofile=10000

    - name: UI Tests
      if: success()
      run: |
        sudo apt-get install xvfb
        xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui
