J'utilise actuellement Cypress comme outil de test, et j'ai rencontré un léger problème lors de son utilisation sur gitlab ci.Cypress utilisant les variables Gitlab
Le problème
Une partie de mon test de Cypress utilise actuellement des informations sensibles de carte de crédit, alors quand j'uploadé dans un dépôt de gitlab ce que je devais essayer de trouver un moyen pour empêcher quiconque de jamais regarder dit « des informations sensibles ". Finalement, j'ai essayé d'utiliser la fonctionnalité "Secret Variable" de Gitlabs. Après avoir configuré toutes les variables dont j'avais besoin pour rester caché, je suis allé dans mon fichier gitlab-ci.yml et l'ai configuré pour que le fichier .gitlab-ci.yml crée un nouveau fichier appelé "cypress/soutien/PaymentCredentials.js », et dans ce fichier toutes les informations de paiement sensibles seront stockées sous forme de javascript variables (ci-dessous)
image: bahmutov/cypress-image
# caching node_modules folder
# https://about.gitlab.com/2016/03/01/gitlab-runner-with-docker/
cache:
paths:
- node_modules/
before_script:
- cypress verify
- "echo -e \"export default {CARDHOLDER_NAME: '$CARDHOLDER_NAME', CARD_CC: '$CARD_CC', CARD_CC_MONTH: '$CARD_CC_MONTH', CARD_CC_YEAR: '$CARD_CC_YEAR', CARD_CC_CCV: '$CARD_CC_CCV'}\" > cypress/support/PaymentCredentials.js"
stages:
- build
- test
build-specs:
stage: build
script:
- npm install
artifacts:
paths:
- cypress/integration
.job_template: &e2e_test_definition
script:
- echo $CARDHOLDER_NAME
- export $CARDHOLDER_NAME
- cypress ci --spec "cypress/integration/$CI_BUILD_NAME.js"
Test_Project:
<<: *e2e_test_definition
donc à Cypress je configurer le fichier d'intégration à agir comme comme celui-ci:
describe('Test', function(){
afterEach(function(){
})
beforeEach(function(){
})
//The entire job
context('Test - Full Functionality Test', function(){
it('Front-end Walkthrough', function(){
/*This is going to go through the first step on Test*/
stepOne()
/*This is going to go through the Second step on Test*/
stepTwo()
/*This is going to go through the Third step on Test*/
stepThree()
/*Page loads very slowly, needed some buffer*/
cy.wait(5000)
/*This is going to go through the Fourth step on Test*/
cy.then(function(){
cy
.get('[name=method]').select("CC") //select CC
.get('#name').type(CARDHOLDER_NAME)
.get('#number').type(CARD_CC)
.get('#month').select(CARD_CC_MONTH)
.get('#year').select(CARD_CC_YEAR)
.get('#ccv').type(CARD_CC_CCV)
.get('[type=checkbox]').check({force: true})
.get('#scoreboard-enroll-form').submit()
})
})
})
})
Lorsque j'ai exécuté le pipeline, je reçois toujours une erreur sta ting que le « CARDHOLDER_NAME » n'a pas été défini: Gitlab ci build report
Existe-t-il des approches suggérées à prendre pour ce scénario? Est-ce que j'ai eu quelque chose de ridicule?
De toute façon, j'apprécie toute aide!