github.com/xgoffin/jenkins-library@v1.154.0/vars/piperPipelineStageAdditionalUnitTests.groovy (about) 1 import com.sap.piper.ConfigurationHelper 2 import com.sap.piper.GenerateStageDocumentation 3 import com.sap.piper.StageNameProvider 4 import com.sap.piper.Utils 5 import groovy.transform.Field 6 7 import static com.sap.piper.Prerequisites.checkScript 8 9 @Field String STEP_NAME = getClass().getName() 10 @Field String TECHNICAL_STAGE_NAME = 'additionalUnitTests' 11 12 @Field Set GENERAL_CONFIG_KEYS = [] 13 @Field STAGE_STEP_KEYS = [ 14 /** Executes bats tests which are for example suitable for testing Docker images via a shell.*/ 15 'batsExecuteTests', 16 /** Executes karma tests which are for example suitable for OPA5 testing as well as QUnit testing of SAP UI5 apps.*/ 17 'karmaExecuteTests', 18 /** Executes npm scripts to run frontend unit tests */ 19 'npmExecuteScripts', 20 /** Publishes test results to Jenkins. It will automatically be active in cases tests are executed. */ 21 'testsPublishResults' 22 ] 23 @Field Set STEP_CONFIG_KEYS = GENERAL_CONFIG_KEYS.plus(STAGE_STEP_KEYS) 24 @Field Set PARAMETER_KEYS = STEP_CONFIG_KEYS 25 26 /** 27 * In this stage unit tests, which can not or should not be executed in the central build environment, are executed.<br /> 28 * These are for example Karma(OPA5 & QUnit) tests. 29 */ 30 @GenerateStageDocumentation(defaultStageName = 'Additional Unit Tests') 31 void call(Map parameters = [:]) { 32 33 def script = checkScript(this, parameters) ?: this 34 def utils = parameters.juStabUtils ?: new Utils() 35 def stageName = StageNameProvider.instance.getStageName(script, parameters, this) 36 37 Map config = ConfigurationHelper.newInstance(this) 38 .loadStepDefaults() 39 .mixinGeneralConfig(script.commonPipelineEnvironment, GENERAL_CONFIG_KEYS) 40 .mixinStageConfig(script.commonPipelineEnvironment, stageName, STEP_CONFIG_KEYS) 41 .mixin(parameters, PARAMETER_KEYS) 42 .addIfEmpty('batsExecuteTests', script.commonPipelineEnvironment.configuration.runStep?.get(stageName)?.batsExecuteTests) 43 .addIfEmpty('karmaExecuteTests', script.commonPipelineEnvironment.configuration.runStep?.get(stageName)?.karmaExecuteTests) 44 .addIfEmpty('npmExecuteScripts', script.commonPipelineEnvironment.configuration.runStep?.get(stageName)?.npmExecuteScripts) 45 .use() 46 47 piperStageWrapper (script: script, stageName: stageName) { 48 49 // telemetry reporting 50 utils.pushToSWA([step: STEP_NAME], config) 51 52 if (config.batsExecuteTests) { 53 durationMeasure(script: script, measurementName: 'bats_duration') { 54 batsExecuteTests script: script 55 testsPublishResults script: script 56 } 57 } 58 59 if (config.karmaExecuteTests) { 60 durationMeasure(script: script, measurementName: 'karma_duration') { 61 karmaExecuteTests script: script 62 testsPublishResults script: script 63 } 64 } 65 66 if (config.npmExecuteScripts) { 67 durationMeasure(script: script, measurementName: 'npmExecuteScripts_duration') { 68 npmExecuteScripts script: script 69 testsPublishResults script: script 70 } 71 } 72 } 73 }