소프트웨어 개발

Cypress - 테스트 자동화, CI/CD 파이프라인에 통합

인어공쭈 2023. 12. 20. 16:35

Cypress 소개
Cypress는 강력한 엔드 투 엔드(E2E) 테스트 도구로, 사용자 경험을 시뮬레이트하고 테스트하는 데 특히 용이합니다. 다양한 기능과 직관적인 사용자 인터페이스로 프론트엔드 테스트를 쉽게 작성하고 유지보수할 수 있습니다.

 

npm install --save-dev cypress

 

테스트 작성

// 예시 테스트 파일 (cypress/integration/sample.spec.js)

describe('테스트 예제', () => {
  it('홈페이지 방문', () => {
    cy.visit('/');
    cy.contains('환영합니다!'); // 페이지에 '환영합니다!' 텍스트가 있는지 확인
  });

  it('로그인', () => {
    cy.visit('/login');
    cy.get('input[name=username]').type('testuser');
    cy.get('input[name=password]').type('password');
    cy.get('button[type=submit]').click();
    cy.url().should('include', '/dashboard'); // 로그인 후 대시보드 페이지로 이동하는지 확인
  });
});

 

테스트 실행

npx cypress run

 

젠킨스 파일 작성

pipeline {
    agent any

    environment {
        NODE_VERSION = '14'
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Install Dependencies') {
            steps {
                script {
                    // Node.js 설치
                    tools {
                        nodejs "${NODE_VERSION}"
                    }

                    // 의존성 설치
                    sh 'npm install'
                }
            }
        }

        stage('Run Cypress Tests') {
            steps {
                script {
                    sh 'npx cypress run'
                }
            }
        }

        // 추가적인 단계: 성공 시에만 실행되는 단계
        stage('Deploy to AWS') {
            when {
                expression {
                    currentBuild.resultIsBetterOrEqualTo('SUCCESS')
                }
            }
            steps {
                // AWS에 배포하는 스크립트 실행
                // 예시: sh 'aws s3 sync ./dist s3://your-s3-bucket'
            }
        }
    }
}

 

젠킨스에서는 이 file을 이용하여 Pipeline을 생성하고 실행합니다. Pipeline이 실행될 때 Jenkins는 소스 코드를 체크아웃하고, 의존성을 설치하고, Cypress 테스트를 실행하며, 테스트가 성공하면 AWS에 배포를 수행합니다.

반응형