I have different environments added in my cypress.env.json file like below
{
"environment":"staging",
"prod":"http://production.com",
"staging":"http://qual.com/dashboard",
"sandbox":"http://sandbox.com/dashboard",
"test": "http://test.com/dashboard",
"versionProd": "vAlpha6",
"versionStage":"vAlpha7"
}
And in .YML file, I have stack data like below
parameters:
- name: TestType
displayName: Test
type: string
default: sanity
values:
- sanity
- smoke
- parameterization
- name: environment
displayName: environment
type: string
default: staging
values:
- test
- sandbox
- staging
When I try to select test type(Sanity/smoke, etc) it is taking correctly. But when I try to select test stack, it is considering what I provided in env.json file. I need it to run in the environment that I selected in pipeline but not the one that I have passed in env.json. Can I get some help here please. Thanks in Advance
Below is my package file and YML file.
====Package.json file
{
"name": "automation",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"clean:reports": "rmdir /S /Q cypress\\reports && mkdir cypress\\reports && mkdir cypress\\reports\\mochareports",
"presanity": "npm run clean:reports",
"presmoke": "npm run clean:reports",
"combine-reports": "mochawesome-merge cypress/reports/mocha/*.json > cypress/reports/mochareports/report.json",
"generate-reports": "marge cypress/reports/mochareports/report.json -f report -o cypress/reports/mochareports -i true",
"junitReport": "node_modules/.bin/jsonjunit --json cypress/reports/mocha --junit cypress/reports/mocha",
"cy:verify": "cypress verify",
"postsanity": "npm run combine-reports && npm run generate-reports && npm run junitReport",
"postsmoke": "npm run combine-reports && npm run generate-reports && npm run junitReport",
"sanityTest": "cypress run --headless --spec 'cypress/integration/SanityTestCases/**/*'",
"smokeTest": "cypress run --headless --spec 'cypress/integration/smokeTests/**/*'",
"postparameterization": "npm run combine-reports && npm run generate-reports && npm run junitReport",
"parameterizationTest": "cypress run --headless --spec 'cypress/integration/parameterizationTests/**/*'",
"sanity": "npm run sanityTest || npm run postsanity",
"smoke": "npm run smokeTest || npm run postsmoke",
"parameterization": "npm run parameterizationTest || npm run postparameterization"
},
"author": "Yeswanth",
"license": "ISC",
"devDependencies": {
"cypress": "^8.7.0",
"cypress-file-upload": "^4.0.6",
"cypress-junit-reporter": "^1.3.1",
"cypress-localstorage-commands": "^1.2.4",
"cypress-multi-reporters": "^1.2.4",
"json-to-junit": "^2.2.0",
"mocha": "^7.1.1",
"mocha-junit-reporters": "^1.23.6",
"mochawesome": "^5.0.0",
"mochawesome-merge": "^4.0.3",
"mochawesome-report-generator": "^5.1.0"
},
"dependencies": {
"convert-csv-to-json": "^1.3.0"
}
}}
=====YML file==
name: $(TeamProject)_$(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)
resources:
repositories:
- repository: templates
endpoint: cto.3dp.ind.GHE
name: codeway/templates
type: githubenterprise
#ref: refs/heads/3d-euphoria-dev
parameters:
- name: TestType
displayName: Test
type: string
default: sanity
values:
- sanity
- smoke
- parameterization
- name: environment
displayName: environment
type: string
default: staging
values:
- test
- sandbox
- staging
variables:
- name: result
value: 0
trigger: none
pr: none
schedules:
- cron: "0 */6 * * *"
displayName: Daily build
branches:
include:
- master
- develop
always: true
pool: CodeWayAWSWindows
stages:
- stage: apps_3d
displayName: 3d App
jobs:
- job: apps_3d_react
displayName: 3d Apps
steps:
- checkout: self
persistCredentials: true
clean: true
- template: lib/installers/nodejs-v0.yaml@templates
- bash: |
echo "Entering npm install"
npm install
echo "exiting into bash"
displayName: 'Npm Install'
- bash: |
npm run cy:verify
displayName: 'Cypress verify'
- bash: |
npm run ${{ parameters.TestType }}
displayName: npm run
- task: PublishBuildArtifacts@1
displayName: "Publish Artifact: html test report"
inputs:
PathtoPublish: cypress/reports/mochareports
ArtifactName: CypressAndAzureDevopsTestRunReport
condition: succeededOrFailed()
- task: PublishHtmlReport@1
displayName: 'Publish HTML Report'
inputs:
reportDir: 'cypress/reports/mochareports/report.html'
- task: PublishTestResults@1
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-results.*.xml'
mergeTestResults: true
publishRunAttachments: true
condition: succeededOrFailed()
- bash: |
!/bin/bash
echo "Entering into bash"
echo "##vso[task.setvariable variable=result]{passPercentage}"
echo ${{variables.result}}
echo $(result)
echo "exiting from bash"
displayName: 'update results'
- bash: |
# condition: succeededOrFailed()
# !/bin/bash
set -x
umask 0002
cat > ./post.json <<'endmsg'
{
"@type": "MessageCard",
"@context": "https://schema.org/extensions",
"summary": "1 new build message",
"themeColor": "008000",
"sections": [
{
"activityTitle": "${{ parameters.TestType }} test-${{ parameters.environment }} stack : [$(agent.jobstatus)] ,$(result) tests passed",
"activitySubtitle": "$(Build.RequestedFor) - $(Build.SourceBranchName) - $(Build.SourceVersion)",
"potentialAction": [
{
"@type": "OpenUri",
"name": "View results",
}
]
}
]
}
endmsg
curl --retry 3 -X POST -H "Content-Type: application/json" -d @post.json https://hp.webhook.office.com/webhookb2/75b2a1e8-6d3a-4421-95bc-4fc863ca2e6c@ca7981a2-785a-463d-b82a-3db87dfc3ce6/IncomingWebhook/78a9fd28974f4d28b1bef23cd282eb7f/f82806b8-765d-475d-8c5f-b7a12b378ee3
Without seeing your actual pipeline .yml file and the use of the environment variables in your tests, it is of course difficult to give an answer.
As far as I understand your question, you want to select an environment on which to run the tests before executing your pipeline. So I guess your pipeline parameters look something like this:
Then you have several options to use this information for your Cypress test execution. See also the Environment Variables section of the official docs.
One option for you would be to use the CYPRESS_ namepspace like described here. With this you could make the information from your pipeline parameters available in your tests as follows:
You can then access the information in your Cypress tests as follows, e.g. for visiting a certain url: