metadata: name: karmaExecuteTests description: Executes the Karma test runner longDescription: | In this step the ([Karma test runner](http://karma-runner.github.io)) is executed. The step is using the `seleniumExecuteTest` step to spin up two containers in a Docker network: * a Selenium/Chrome container (`selenium/standalone-chrome`) * a NodeJS container (`node:lts-buster`) In the Docker network, the containers can be referenced by the values provided in `dockerName` and `sidecarName`, the default values are `karma` and `selenium`. These values must be used in the `hostname` properties of the test configuration ([Karma](https://karma-runner.github.io/1.0/config/configuration-file.html) and [WebDriver](https://github.com/karma-runner/karma-webdriver-launcher#usage)). !!! note In a Kubernetes environment, the containers both need to be referenced with `localhost`. spec: inputs: secrets: - name: seleniumHubCredentialsId type: jenkins description: "Defines the id of the user/password credentials to be used to connect to a Selenium Hub. The credentials are provided in the environment variables `PIPER_SELENIUM_HUB_USER` and `PIPER_SELENIUM_HUB_PASSWORD`." resources: - name: buildDescriptor type: stash - name: tests type: stash params: - name: installCommand type: string description: The command that is executed to install the test tool. default: npm install --quiet scope: - GENERAL - PARAMETERS - STAGES - STEPS mandatory: true - name: modules type: "[]string" description: Define the paths of the modules to execute tests on. default: ["."] scope: - PARAMETERS - STAGES - STEPS mandatory: true - name: runCommand type: string description: The command that is executed to start the tests. default: npm run karma scope: - GENERAL - PARAMETERS - STAGES - STEPS mandatory: true outputs: resources: - name: reports type: reports params: - filePattern: "**/TEST-*.xml" type: karma - filePattern: "**/cobertura-coverage.xml" type: karma - filePattern: "**/TEST-*.xml" type: junit - filePattern: "**/jacoco.xml" type: jacoco-coverage - filePattern: "**/cobertura-coverage.xml" type: cobertura-coverage - filePattern: "**/xmake_stage.json" type: xmake - filePattern: "**/requirement.mapping" type: requirement-mapping containers: - name: karma image: node:lts-buster env: - name: no_proxy value: localhost,selenium,$no_proxy - name: NO_PROXY value: localhost,selenium,$NO_PROXY - name: "PIPER_SELENIUM_HOSTNAME" value: "karma" - name: "PIPER_SELENIUM_WEBDRIVER_HOSTNAME" value: "selenium" - name: "PIPER_SELENIUM_WEBDRIVER_PORT" value: "4444" workingDir: /home/node volumeMounts: - mountPath: /dev/shm name: dev-shm sidecars: - image: selenium/standalone-chrome name: selenium securityContext: privileged: true volumeMounts: - mountPath: /dev/shm name: dev-shm env: - name: "NO_PROXY" value: "localhost,karma,$NO_PROXY" - name: "no_proxy" value: "localhost,selenium,$no_proxy"