# 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: Build and Test

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build_and_test:

    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    strategy:
      matrix:
        node-version: [20.x, 22.x, 24.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - uses: actions/checkout@v2
    - name: Setup Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: ${{ matrix.node-version }}

    - name: Set up Artifactory Auth with OIDC
      id: jfrog_setup
      uses: jfrog/setup-jfrog-cli@v4
      env:
        JF_URL: https://artifactory.coxautoinc.com
      with:
        oidc-provider-name: gh-public

    - name: Configure npm to use Artifactory
      run: |
        jf npm-config --repo-resolve cai-npm --server-id-resolve setup-jfrog-cli-server

    # Note: if this step is failing due to authentication errors, it is likely because you regenerated the npm-shrinkwrap.json
    #   file while your local NPM was set to use the coxauto artifactory NPM registry. To fix this, locally delete your node_modules
    #   folder and npm-shrinkwrap.json file, then run `npm i --registry=https://registry.npmjs.org/` to reinstall using public NPM
    #   and then `npm shrinkwrap` to regenerate the npm-shrinkwrap.json file.
    - name: Install dependencies
      run: jf npm ci
    - run: npm run build --if-present
    - name: Run tests
      run: npm test -- --no-watch

    # TODO: Fix e2e tests - currently disabled due to authentication and registry issues
    # - name: Run end-2-end tests
    #   env:
    #     REFRESH_TOKEN: ${{ secrets.ALKS_REFRESH_TOKEN }}
    #     USERNAME: ${{ secrets.ALKS_USER }}
    #   run: |
    #     make test CI_MODE=true
    #   working-directory: ./e2e
