Estoy usando Cypress.io para mis pruebas automatizadas y lo activé en CI/D con Github Actions . El archivo config cypress.json
tiene valores env
anidados así:
{ "baseUrl": "<url-to-login>", "env": { "roles": { "admin": { "PASSWORD": "<password>", "USERNAME": "<username>" }, "employee": { "PASSWORD": "<password>", "USERNAME": "<username>" }, "client": { "PASSWORD": "<password>", "USERNAME": "<username>" } } } }
Desafortunadamente, Cypress no puede acceder a las variables de entorno profundo, por lo que estoy creando la configuración cypress.json
de la siguiente manera:
name: Cypress Tests on: [push] jobs: cypress-run: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 # creates cypress.json file to run Cypress - name: Create Cypress config files run: | echo '{ "baseUrl": "${{ secrets.BASE_URL }}", "env": { "roles": { "admin": { "PASSWORD": "${{ secrets.PASSWORD }}", "USERNAME": "${{ secrets.USERNAME }}" } } } }' > cypress.json - name: Cypress run uses: cypress-io/github-action@v2 with: build: yarn run start: yarn cypress:run wait-on-timeout: 120 browser: chrome
No funciona, pero codifiqué los valores que funcionó así:
run: | echo '{ "baseUrl": "<hardcoded-redacted-value>", "env": { "roles": { "admin": { "PASSWORD": "<hardcoded-redacted-value>", "USERNAME": "<hardcoded-redacted-value>" } } } }' > cypress.json
Entonces mi pregunta es, ¿cómo pasar el secreto en el archivo json
?
Creo que encontrará que se corrigió la verificación de valores indefinidos en la función setPluginResolvedOn # 7960
const roles = Cypress.env('roles') expect(roles.client.PASSWORD).to.eq('<password>') // ✅ passes
Resolví este problema almacenando todo el contenido del archivo de configuración cypress.json
como el secreto cifrado del repositorio de GitHub . Luego, utilicé la acción de GitHub create-json
para generar el cypress.json
necesario para ejecutar Cypress en CI/CD. Este es el .github/workflows/main.yml
:
name: Cypress Tests on: [push] jobs: cypress-run: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: create-json id: create-json uses: jsdaniell/create-json@1.1.2 with: name: "cypress.json" json: ${{ secrets.CYPRESS_CONFIG_JSON }} - name: Cypress run uses: cypress-io/github-action@v2 with: build: yarn run start: yarn cypress:run wait-on-timeout: 120 browser: chrome