k6-test-framework
Version:
Enterprise-grade load testing solution with k6
85 lines (69 loc) • 2.27 kB
YAML
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'