1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-05-31 23:09:34 +02:00
sap-jenkins-library/documentation/docs/steps/uiVeri5ExecuteTests.md
Laura Veinberga e83a380c09
SAP CP to SAP BTP Rebranding (#2703)
* Update configuration.md

* Update build.md

* Update cloneRepositories.md

* Update integrationTest.md

* Update post.md

* Update prepareSystem.md

* Update publish.md

* Update configuration.md

* Update configuration.md

* Update introduction.md

* Update build.md

* Update CAP_Scenario.md

* Update CAP_Scenario.md

* Update abapEnvironmentAddons.md

* Update abapEnvironmentAddons.md

* Update abapEnvironmentTest.md

* Update changeManagement.md

* Update Readme.md

* Update Readme.md

* Update introduction.md

* Update abapEnvironmentAssembleConfirm.md

* Update abapEnvironmentAssemblePackages.md

* Update abapEnvironmentCheckoutBranch.md

* Update abapEnvironmentCloneGitRepo.md

* Update abapEnvironmentCreateSystem.md

* Update abapEnvironmentPullGitRepo.md

* Update abapEnvironmentRunATCCheck.md

* Update cloudFoundryCreateService.md

* Update cloudFoundryCreateSpace.md

* Update cloudFoundryDeleteSpace.md

* Update mtaBuild.md

* Update neoDeploy.md

* Update protecodeExecuteScan.md

* Update uiVeri5ExecuteTests.md

* Update guidedtour.md

* Update index.md

* Update configuration.md

* Update guidedtour.md

* Update configuration.md

* Update build.md

* Update CAP_Scenario.md

* Update TMS_Extension.md

* Update TMS_Extension.md

* Update abapEnvironmentAddons.md

* Update abapEnvironmentTest.md

* Update Readme.md

* Update Readme.md

* Update cloudFoundryDeploy.md

* Update influxWriteData.md

* Update neoDeploy.md

* Update CAP_Scenario.md

* Update TMS_Extension.md

* Update Readme.md

* Update Readme.md

* Update guidedtour.md

* Update guidedtour.md

* Update guidedtour.md

* Update configuration.md

Co-authored-by: Thorsten Duda <thorsten.duda@sap.com>
2021-03-19 10:51:24 +01:00

4.6 KiB

${docGenStepName}

!!! warning "Deprecation notice" Details of changes after the step migrated to a golang based step can be found below.

${docGenDescription}

Prerequisites

${docGenParameters}

${docGenConfiguration}

${docJenkinsPluginDependencies}

Exceptions

The parameter testOptions is deprecated and is replaced by array type parameter runOptions. Groovy templating for this parameter is deprecated and no longer supported.

Using the runOptions parameter the 'seleniumAddress' for UIVeri5 can be set. The former groovy implementation included a default for seleniumAddress in the runCommand. Since this is not possible with the golang-based implementation, the seleniumAddress has to be added to the runOptions. For jenkins on kubernetes the host is 'localhost', in other environments, e.g. native jenkins installations, the host can be set to 'selenium'.

runOptions: ["--seleniumAddress=http://localhost:4444/wd/hub", ..... ]

The parameter failOnError is no longer supported on the step due to strategic reasons of pipeline resilience. To achieve the former behaviour with failOnError: false configured, the step can be wrapped using try/catch in your custom pipeline script.

The installCommand does not support queueing shell commands using && and | operator any longer.

If you see an error like fatal: Not a git repository (or any parent up to mount point /home/jenkins) it is likely that your test description cannot be found.
Please make sure to point parameter runOptions to your conf.js file like runOptions: [...., './path/to/my/tests/conf.js']

Examples

Passing credentials from Jenkins

When running acceptance tests in a real environment, authentication will be enabled in most cases. UIVeri5 includes features to automatically perform the login with credentials in the conf.js. However, having credentials to the acceptance system stored in plain text is not an optimal solution.

Therefore, UIVeri5 allows templating to set parameters at runtime, as shown in the following example conf.js:

// Read environment variables
const defaultParams = {
    url: process.env.TARGET_SERVER_URL,
    user: process.env.TEST_USER,
    pass: process.env.TEST_PASS
};

// Resolve path to specs relative to the working directory
const path = require('path');
const specs = path.relative(process.cwd(), path.join(__dirname, '*.spec.js'));

// export UIVeri5 config
exports.config = {
    profile: 'integration',
    baseUrl: '\${params.url}',
    specs: specs,
    params: defaultParams, // can be overridden via cli `--params.<key>=<value>`
    auth: {
        // set up authorization for CF XSUAA
        'sapcloud-form': {
            user: '\${params.user}',
            pass: '\${params.pass}',
            userFieldSelector: 'input[name="username"]',
            passFieldSelector: 'input[name="password"]',
            logonButtonSelector: 'input[type="submit"]',
            redirectUrl: /cp.portal\/site/
        }
    }
};

While default values for baseUrl, user and pass are read from the environment, they can also be overridden when calling the CLI.

In a custom Pipeline, this is very simple: Just wrap the call to uiVeri5ExecuteTests in withCredentials (TARGET_SERVER_URL is read from config.yml):

withCredentials([usernamePassword(
    credentialsId: 'MY_ACCEPTANCE_CREDENTIALS',
    passwordVariable: 'password',
    usernameVariable: 'username'
)]) {
    uiVeri5ExecuteTests script: this, runOptions: ["./uiveri5/conf.js", "--params.user=\${username}", "--params.pass=\${password}"]
}

In a Pipeline Template, a Stage Exit can be used to fetch the credentials and store them in the environment. As the environment is passed down to uiVeri5ExecuteTests, the variables will be present there. This is an example for the stage exit .pipeline/extensions/Acceptance.groovy where the credentialsId is read from the config.yml:

void call(Map params) {
    // read username and password from the credential store
    withCredentials([usernamePassword(
        credentialsId: params.config.acceptanceCredentialsId,
        passwordVariable: 'password',
        usernameVariable: 'username'
    )]) {
        // store the result in the environment variables for executeUIVeri5Test
        withEnv(["TEST_USER=\${username}", "TEST_PASS=\${password}"]) {
            //execute original stage as defined in the template
            params.originalStage()
        }
    }
}
return this