Unit testing 利用Gitlab变量的Cypress

Unit testing 利用Gitlab变量的Cypress,unit-testing,continuous-integration,gitlab,gitlab-ci,cypress,Unit Testing,Continuous Integration,Gitlab,Gitlab Ci,Cypress,我目前正在使用它作为测试工具,在gitlab ci上运行时遇到了一个小问题 问题 我的Cypress测试目前有一部分使用了敏感的信用卡信息,所以当我将其上传到gitlab存储库时,我必须尝试找出一种方法,防止任何人查看上述“敏感信息”。最后,我尝试利用Gitlab便捷的“秘密变量”功能 设置完所有需要隐藏的变量后,我进入我的gitlab-ci.yml文件并进行设置,以便.gitlab-ci.yml文件创建一个名为“cypress/support/PaymentCredentials.js”的新文

我目前正在使用它作为测试工具,在gitlab ci上运行时遇到了一个小问题

问题 我的Cypress测试目前有一部分使用了敏感的信用卡信息,所以当我将其上传到gitlab存储库时,我必须尝试找出一种方法,防止任何人查看上述“敏感信息”。最后,我尝试利用Gitlab便捷的“秘密变量”功能

设置完所有需要隐藏的变量后,我进入我的gitlab-ci.yml文件并进行设置,以便.gitlab-ci.yml文件创建一个名为“cypress/support/PaymentCredentials.js”的新文件,并且在该文件中,所有敏感的支付信息都将存储为javascript变量(如下所示)

当我运行管道时,我仍然收到一个错误,指出“持卡人姓名”尚未定义:

对于这种情况,有没有建议采取的方法?我搞错什么可笑的事了吗

不管怎样,我感谢你的帮助

以下是几种方法:

CLI中的环境变量

  • 将秘密变量作为参数传递给
    cypress ci
    命令,以创建cypress环境变量

    cypress ci --env CARDHOLDER_NAME=$CARDHOLDER_NAME,CARD_CC=$CARD_CC
    
    Cypress.env('CARDHOLDER_NAME')
    Cypress.env('CARD_CC')
    
  • 稍后在测试中,访问Cypress环境变量

    cypress ci --env CARDHOLDER_NAME=$CARDHOLDER_NAME,CARD_CC=$CARD_CC
    
    Cypress.env('CARDHOLDER_NAME')
    Cypress.env('CARD_CC')
    
导出为CYPRESS.*

  • 您可以在尝试导出秘密变量时进行导出,但是您需要将
    CYPRESS\uuu
    附加到该变量,以便在测试中访问它

    export CYPRESS_CARD_CC=$CARD_CC
    
  • 稍后在测试中,访问导出的变量

    Cypress.env('CARD_CC')
    

  • 使用Cypress'
    exec
    获取秘密变量的内联

    cy.exec("echo $CARDHOLDER_NAME").its("stdout").then(function(stdout){
       cy.get('#name').type(stdout)
    })
    
    • 以下是一些方法:

      CLI中的环境变量

      • 将秘密变量作为参数传递给
        cypress ci
        命令,以创建cypress环境变量

        cypress ci --env CARDHOLDER_NAME=$CARDHOLDER_NAME,CARD_CC=$CARD_CC
        
        Cypress.env('CARDHOLDER_NAME')
        Cypress.env('CARD_CC')
        
      • 稍后在测试中,访问Cypress环境变量

        cypress ci --env CARDHOLDER_NAME=$CARDHOLDER_NAME,CARD_CC=$CARD_CC
        
        Cypress.env('CARDHOLDER_NAME')
        Cypress.env('CARD_CC')
        
      导出为CYPRESS.*

      • 您可以在尝试导出秘密变量时进行导出,但是您需要将
        CYPRESS\uuu
        附加到该变量,以便在测试中访问它

        export CYPRESS_CARD_CC=$CARD_CC
        
      • 稍后在测试中,访问导出的变量

        Cypress.env('CARD_CC')
        

      • 使用Cypress'
        exec
        获取秘密变量的内联

        cy.exec("echo $CARDHOLDER_NAME").its("stdout").then(function(stdout){
           cy.get('#name').type(stdout)
        })
        

      我意识到这与你的问题无关,但我真的很好奇。决定使用只支持Chrome的东西是什么?Cypress有什么更好的地方?我一直在从事开源项目Courgette,我想知道是什么特性吸引了大家对Cypress的兴趣。我意识到这与你的问题无关,但我真的很好奇。决定使用只支持Chrome的东西是什么?Cypress有什么更好的地方?我一直在从事开源项目Courgette,我想知道是什么特性吸引了大家对Cypress的兴趣。