Ana içeriğe geç

Jenkins

Bir Jenkinsfile kullanarak TestFly testlerini Jenkins'te çalıştırın. Aşağıdaki pipeline kodu çeker (checkout), testleri çalıştırır, JUnit sonuçlarını yayınlar ve HTML raporunu arşivler.


Declarative pipeline​

Jenkinsfile
pipeline {
agent any

tools {
jdk 'JDK21'
maven 'Maven3'
}

stages {
stage('Checkout') {
steps {
checkout scm
}
}

stage('Test') {
steps {
sh 'mvn clean test -B'
}
post {
always {
junit '**/surefire-reports/TEST-*.xml'
archiveArtifacts artifacts: 'target/testfly-report.html',
allowEmptyArchive: true
}
}
}
}

post {
always {
publishHTML(target: [
allowMissing : false,
alwaysLinkToLastBuild: true,
keepAll : true,
reportDir : 'target',
reportFiles : 'testfly-report.html',
reportName : 'TestFly Report'
])
}
}
}

publishHTML adımı, Jenkins'te HTML Publisher Plugin eklentisinin kurulu olmasını gerektirir.


Jenkins aracılarında Headless Chrome​

Aracıya Chrome ekleyin ve headless modu yapılandırın:

testfly.yml
browser:
type: chrome
headless: true

Aracınızdaki PATH içinde Chrome yoksa, ikili dosya yolunu ayarlayın:

browser:
type: chrome
headless: true

Paralel aşamalar​

Birden çok tarayıcı veya test grubu yapılandırmasını paralel çalıştırın:

stage('Test') {
parallel {
stage('Chrome') {
steps {
withEnv(["TESTFLY_BROWSER=chrome"]) {
sh 'mvn test -B'
}
}
}
stage('Firefox') {
steps {
withEnv(["TESTFLY_BROWSER=firefox"]) {
sh 'mvn test -B'
}
}
}
}
}

Ortam değişkenleri​

testfly.yml dosyasını değiştirmeden yapılandırma değerlerini iletin:

environment {
BASE_URL = 'https://staging.example.com'
}

stage('Test') {
steps {
sh 'mvn test -B'
}
}

SCM değişikliklerinde tetikleme​

triggers {
pollSCM('H/5 * * * *') // her 5 dakikada bir yokla
}

Ya da push'ta pipeline'ı tetiklemek için bir GitHub webhook'u kullanın.

Ortam değerlerini YAML alanlarına bağlama​

Paralel tarayıcı aşamaları ve BASE_URL örneği, seçilen tam yapılandırmada aşağıdaki yer tutucuları gerektirir. Otomatik -Dbrowser.name veya -DbaseUrl override uygulanmaz. Her agent üzerinde ilgili tarayıcıyı kurun; paralel Maven koşumlarını ayrı workspace içinde çalıştırarak target dosyalarının çakışmasını önleyin.

testfly.yml
execution:
mode: local
baseUrl: ${BASE_URL:-https://example.com}
browser:
name: ${TESTFLY_BROWSER:-chrome}
headless: true