Как мы можем запустить тест cypress в конвейере Дженкинса, используя » теги cypress`

#jenkins #cypress #cypress-cucumber-preprocessor

Вопрос:

Как мы можем запустить тест cypress в конвейере Дженкинса с помощью cypress-tags . Приведенная ниже команда успешно выполняется в локальной командной строке Windows

Local:

CYPRESS_baseUrl=https://someurl.com/book/ npx cypress-tags run -e TAGS='@regression' GLOB='test/cypress/integration/**/*.feature' --headless --browser chrome

Но когда я попытался ниже в файле Дженкинса:

/node_modules/.bin/npx cypress-tags ${cypressArgs} // ( выдает ошибку > Не удается найти модуль ‘/node_modules/.bin/npx’ )

Jenkins file:

 stage('Run cypress') {
        steps {
            script {
                mattermostSend color: 'good', channel: channel, message: "**STARTING** - Cypress CI starting (<${env.BUILD_URL}|build ${env.BUILD_NUMBER}>)"
                sh "mkdir -p "${ARTEFACT_DIR}/videos""
                sh "mkdir -p "${ARTEFACT_DIR}/screenshots""
                def baseUrlConfig="-e CYPRESS_baseUrl=https://someurl.com/book"
                def screenshotsFolderConfig="screenshotsFolder=/artefacts/screenshots"
                def videosFolderConfig="videosFolder=/artefacts/videos"
                def config = "--config ${screenshotsFolderConfig},${videosFolderConfig}"
                def cypressArgs = "run -e TAGS='@regression' GLOB='tests/cypress/integration/**/*.feature' --headless --browser chrome ${config} --project /books-suite"
                sh """
                docker run ${baseUrlConfig} 
                  -v "${ARTEFACT_DIR}:/artefacts" 
                  -v "${env.WORKSPACE}/books-co:/books-suite" 
                  -e CYPRESS_OUTPUT_FILE="/artefacts/report.html" 
                  -e CYPRESS_USERNAME="CypressUser3" 
                  -e CYPRESS_PASSWORD="CypressTest123"  
                  -e CYPRESS_API_GRANT="client_credentials" 
                  -e CYPRESS_CLIENT_ID="50e556ffa1970d8f7b38564df218177" 
                  -e CYPRESS_CLIENT_SECRET="8745b8c7" 
                  -e CYPRESS_API_KEY="some_key" 
                  -e CYPRESS_BASE_URL="https://someurl.com/book/" 
                  -e CYPRESS_API_URL="https://someurl.com/api/v2.0/books/" 
                  
                   cypress:latest 
                    /node_modules/.bin/npx cypress-tags ${cypressArgs}
                """
                mattermostSend color: 'good', channel: channel, message: "**SUCCESSED** - Cypress CI passed successfully (<${env.BUILD_URL}|build ${env.BUILD_NUMBER}>)"
            }
        }
    }
 

Комментарии:

1. Не очень хорошо знаком с докеризацией, но когда я получаю это сообщение об ошибке, это обычно означает, что мои зависимости npm не установлены. Можете ли вы попробовать установить зависимости перед выполнением действия npx?

2. Я попытался установить все зависимости, но если я обновлю строку /node_modules/.bin/ cypress ${cypressArgs} , она будет работать хорошо.

3. npx глобально установлен с узлом, его нет внутри /node_modules/.bin . Кроме того, почему вы пытаетесь бежать cypress_tags ? Так как это плагин, вы можете запустить его только с cypress.

4. У меня есть тесты BDD, и я использую плагин cypress-cucumber-preproccessor в своей структуре вместе с cypress. Таким образом, я могу запустить свой тест либо с помощью npx cypress run, либо CYPRESS_baseUrl=https://someurl.com/book/ npx cypress-tags run -e TAGS='@regression' GLOB='test/cypress/integration/**/*.feature' --headless --browser chrome из командной строки. Так как же я могу запустить то же самое из конвейера Дженкинса, используя теги cypress ?