trigger:
  branches:
    include:
      - main

pr:
  branches:
    include:
      - main

parameters:
  - name: test_type
    type: string
    default: 'smoke'
    values:
      - smoke
      - stress
      - soak
      - load
      - ramp
      - spike

variables:
  BASE_URL: "https://reqres.in/api"  # Replace with your actual base URL
  workingDirectory: $(System.DefaultWorkingDirectory)

jobs:
  - job: LoadTest
    displayName: 'K6 Load Testing'
    pool:
      vmImage: 'ubuntu-latest'

    steps:
      - checkout: self
        displayName: 'Checkout repository'

      - script: |
          sudo apt-get remove -y containerd containerd.io docker docker-engine docker.io
          sudo apt-get purge -y containerd containerd.io docker docker-engine docker.io
          sudo apt-get autoremove -y
        displayName: 'Remove conflicting Docker packages'

      - script: |
          sudo apt-get update
          sudo apt-get install -y docker.io
          sudo systemctl start docker
          sudo systemctl enable docker
        displayName: 'Install Docker'

      - script: |
          mkdir -p $(workingDirectory)/reports
          chmod -R 777 $(workingDirectory)/reports
        displayName: 'Create reports directory'

      - script: |
          docker build -t k6-reqres .
        displayName: 'Build Docker image'

      - script: |
          export BASE_URL=$(BASE_URL)
          export TEST_TYPE=${{ parameters.test_type }}

          echo "BASE_URL is set to: $BASE_URL"
          echo "TEST_TYPE is set to: $TEST_TYPE"

          docker run --rm -v $(workingDirectory):/app \
            -e BASE_URL="$BASE_URL" \
            -e TEST_TYPE="$TEST_TYPE" \
            k6-reqres run tests/"$TEST_TYPE".test.js
        displayName: 'Run K6 test'

      - script: |
          ls -l $(workingDirectory)/reports
        displayName: 'Debug: List reports directory'

      - task: PublishBuildArtifacts@1
        displayName: 'Publish K6 test report'
        inputs:
          PathtoPublish: '$(workingDirectory)/reports'
          ArtifactName: 'k6-test-report'

      - script: |
          docker rmi k6-reqres || true
        displayName: 'Cleanup Docker image'
