Cypress로 민감한 데이터를 보호하는 방법

오늘 "Pinches of Cypress"에서 사용자 이름 및 비밀번호와 같은 자격 증명을 보호하는 방법에 대해 알아보십시오.



시나리오는 다음과 같습니다. 로그인 기능에 대한 종단 간 테스트가 있으며 여러 다른 테스트도 사전 조건으로 로그인하는 사용자에 따라 다릅니다.

그러나 사용자 이름 및 암호와 같은 자격 증명의 버전을 지정하는 것은 좋지 않습니다.

이 문제를 해결하기 위해 여러 번 사용한 대안은 cypress.env.json 파일을 사용하는 것입니다(로컬 개발 환경에서 작업할 때).

이러한 파일을 사용하면 민감한 데이터(예:)를 저장할 수 있지만 버전을 지정하지는 않습니다(즉, .gitignore 파일에 포함됨).

실용적인 예를 살펴보겠습니다.
cypress.env.json 파일은 다음과 같습니다.

{
  "user_name": "admin",
  "user_password": "s3creT-p@ssw0rd"
}


Remember that this file would only be available on my computer. And if other developers use another username and password on their computers, the credentials would be different but also not versioned.



그리고 로그인 테스트는 다음과 같습니다.

describe('Login', () => {
  it('successfully', () => {
    cy.visit('https://example.com/login')

    cy.get('#user')
      .type(Cypress.env('user_name'))
    cy.get('#password')
      .type(Cypress.env('user_password'))
    cy.contains('Login').click()

    cy.get('.navbar-top .avatar')
      .should('be.visible')
  })
})


타다! 🎉

그렇게 하면 민감한 데이터를 노출하지 않고 테스트에서 계속 로그인할 수 있습니다.

게다가, 이러한 접근 방식은 우리의 로컬 환경이 아닌 다른 환경에 대해 테스트를 수행하는 지속적인 통합 서비스에서 environment variables (CYPRESS_ 또는 cypress_로 접두어가 붙음)와 같은 자격 증명을 노출할 수 있다는 이점을 제공합니다.

즉, 민감한 데이터가 보호되고 서로 다른 환경(로컬, 스테이징, 프로덕션 등)에서 동일한 테스트를 실행할 수 있습니다. 💯

마지막으로 로컬 환경에서 대화형 모드로 테스트를 실행할 때 암호가 "유출"되지 않도록 보호하려면 옵션{ log: false }.type()의 두 번째 인수로 전달하면 해당 명령이 Cypress runner 목록에 나열되지 않습니다. 명령(아래 참조)

describe('Login', () => {
  it('successfully', () => {
    cy.visit('https://example.com/login')

    cy.get('#user')
      .type(Cypress.env('user_name'))
    cy.get('#password')
      .type(Cypress.env('user_password'), { log: false })
    cy.contains('Login').click()

    cy.get('.navbar-top .avatar')
      .should('be.visible')
  })
})



궁금해. 시리즈에 대해 어떻게 생각하세요?

귀하의 피드백을 기다리겠습니다!


이 게시물은 원래 Talking About Testing 블로그에 포르투갈어로 게시되었습니다.


Cypress를 사용한 테스트 자동화에 대해 배우고 싶습니까? Udemy에서 내 온라인 과정을 알아보십시오.

좋은 웹페이지 즐겨찾기