karmaExecuteTests¶
Executes the Karma test runner
Please note that Karma is marked as DEPRECATED as of 04/2023. There is no migration path defined yet.
Description¶
In this step the (Karma test runner) 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-bookworm)
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 and WebDriver).
Note
In a Kubernetes environment, the containers both need to be referenced with localhost.
Usage¶
We recommend to define values of step parameters via .pipeline/config.yml file.
In this case, calling the step is essentially reduced to defining the step name.
Calling the step can be done either in an orchestrator specific way (e.g. via a Jenkins library step) or on the command line.
library('piper-lib-os')
karmaExecuteTests script: this
piper karmaExecuteTests
Outputs¶
| Output type | Details |
|---|---|
Prerequisites¶
- running Karma tests - have a NPM module with running tests executed with Karma
- configured WebDriver - have the
karma-webdriver-launcherpackage installed and a custom, WebDriver-based browser configured in Karma
Parameters¶
Overview - Step¶
| Name | Mandatory | Additional information |
|---|---|---|
| script | (yes) | |
| installCommand | no | |
| modules | no | |
| runCommand | no | |
| verbose | no | activates debug output |
Overview - Execution Environment¶
Orchestrator-specific only
These parameters are relevant for orchestrator usage and not considered when using the command line option.
| Name | Mandatory | Additional information |
|---|---|---|
| containerCommand | no | |
| containerName | no | |
| containerShell | no | |
| dockerEnvVars | no | |
| dockerImage | no | |
| dockerName | no | |
| dockerOptions | no | |
| dockerPullImage | no | |
| dockerVolumeBind | no | |
| dockerWorkspace | no | |
| sidecarEnvVars | no | |
| sidecarImage | no | |
| sidecarName | no | |
| sidecarOptions | no | |
| sidecarPullImage | no | |
| sidecarReadyCommand | no | |
| sidecarVolumeBind | no | |
| sidecarWorkspace | no | |
| stashContent | no |
Details¶
containerCommand¶
Jenkins-specific: Used for proper environment setup.
Kubernetes only: Allows to specify start command for container created with dockerImage parameter to overwrite Piper default (/usr/bin/tail -f /dev/null).
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
containerName¶
Jenkins-specific: Used for proper environment setup.
Optional configuration in combination with containerMap to define the container where the commands should be executed in.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | karma |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
containerShell¶
Jenkins-specific: Used for proper environment setup.
Allows to specify the shell to be executed for container with containerName.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerEnvVars¶
Environment variables to set in the container, e.g. [http_proxy: "proxy:8080"].
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | map[NO_PROXY:localhost,selenium,$NO_PROXY PIPER_SELENIUM_HOSTNAME:karma PIPER_SELENIUM_WEBDRIVER_HOSTNAME:selenium PIPER_SELENIUM_WEBDRIVER_PORT:4444 no_proxy:localhost,selenium,$no_proxy] |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerImage¶
Name of the docker image that should be used. If empty, Docker is not used and the command is executed directly on the Jenkins system.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | node:lts-bookworm |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerName¶
Kubernetes only: Name of the container launching dockerImage. SideCar only: Name of the container in local network.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | karma |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerOptions¶
Docker options to be set when starting the container.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | []string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerPullImage¶
Set this to 'false' to bypass a docker image pull. Useful during development process. Allows testing of images which are available in the local registry only.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | true |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerVolumeBind¶
Jenkins-specific: Used for proper environment setup.
Volumes that should be mounted into the docker container.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
dockerWorkspace¶
Jenkins-specific: Used for proper environment setup.
Kubernetes only: Specifies a dedicated user home directory for the container which will be passed as value for environment variable HOME.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | /home/node |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
installCommand¶
The command that is executed to install the test tool.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | npm install --quiet |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
modules¶
Define the paths of the modules to execute tests on.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | []string |
| Mandatory | no |
| Default | - . |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
runCommand¶
The command that is executed to start the tests.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | npm run karma |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
script¶
The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the this parameter, as in script: this. This allows the function to access the commonPipelineEnvironment for retrieving, e.g. configuration parameters.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | Jenkins Script |
| Mandatory | yes |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarEnvVars¶
A map of environment variables to set in the sidecar container, similar to dockerEnvVars.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarImage¶
The name of the docker image of the sidecar container. If empty, no sidecar container is started. Similar to dockerImage.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarName¶
Name of the sidecar container. Similar to dockerName.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarOptions¶
Options to be set when starting the sidecar container. Similar to dockerOptions.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | []string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarPullImage¶
Set this to 'false' to bypass a docker image pull. Useful during development process. Allows testing of images which are available in the local registry only.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | false |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarReadyCommand¶
Jenkins-specific: Used for proper environment setup.
Command executed inside the container which returns exit code 0 when the container is ready to be used.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarVolumeBind¶
Volumes that should be mounted into the sidecar container. Similar to dockerVolumeBind.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | map[string]string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
sidecarWorkspace¶
Jenkins-specific: Used for proper environment setup.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Mandatory | no |
| Default | |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
stashContent¶
Jenkins-specific: Used for proper environment setup.
Specific stashes that should be considered for the step execution.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | []string |
| Mandatory | no |
| Default | - buildDescriptor- tests |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
verbose¶
verbose output
| Scope | Details |
|---|---|
| Aliases | - |
| Type | bool |
| Mandatory | no |
| Default | false |
| Possible values | - true- false |
| Secret | no |
| Configuration scope |
|
| Resource references | none |
seleniumHubCredentialsId¶
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.
| Scope | Details |
|---|---|
| Aliases | - |
| Type | string |
| Configuration scope |
|
Side effects¶
Step uses seleniumExecuteTest & dockerExecute inside.
Exceptions¶
none
Example¶
karmaExecuteTests script: this, modules: ['./shoppinglist', './catalog']