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  }