의미
목적
E2E 테스트 도구
Cypress
특징
https://docs.cypress.io/guides/component-testing/vue/overview
설치 방법
npm install cypress -D
npx cypress open
config 변경 (Vue CLI 사용하는 경우)
const { defineConfig } = require('cypress')
module.exports = defineConfig({
component: {
devServer: {
framework: 'vue-cli',
bundler: 'webpack',
},
},
})
폴더 구조
fixtures
: 더미 데이터cypress/e2e
: 테스트 파일의 위치파일명.js
cypress/support
: 공통으로 이루어지는 작업 혹은 설정commands.js
: 커스텀 커멘드 작성Cypress 문제점
유료 플랜 없이는 병렬 테스트를 제공하지 않기 때문에 테스트 속도가 매우 느리다.
⇒ 해결책 : https://docs.sorry-cypress.dev/
Sorry-Cypress
Cypress Studio (URL)
크롬 Recorder와 같이 사용자의 마우스, 키보드 등의 액션을 기록하여 테스트 코드를 자동으로 만드는 툴
// Code from Real World App (RWA)
describe('Cypress Studio Demo', () => {
...
it('create new transaction', () => {
/* ==== Generated with Cypress Studio ==== */
cy.get('[data-test=nav-top-new-transaction]').click()
cy.get('[data-test=user-list-search-input]').clear()
cy.get('[data-test=user-list-search-input]').type('dev')
cy.get(
'[data-test=user-list-item-tsHF6_D5oQ] > .MuiListItemText-root > .MuiListItemText-primary'
).should('have.text', 'Devon Becker')
cy.get('[data-test=user-list-item-tsHF6_D5oQ]').click()
cy.get('#amount').clear()
cy.get('#amount').type('$25')
cy.get('#transaction-create-description-input').clear()
cy.get('#transaction-create-description-input').type('Sushi dinner')
cy.get('[data-test=transaction-create-submit-payment]').should('be.enabled')
cy.get('[data-test=transaction-create-submit-payment]').click()
/* ==== End Cypress Studio ==== */
})
})
지원하지 않는 기능
설치 방법
Reference