[javascript] Storybook을 사용한 자바스크립트 테스트 자동화

컴포넌트 기반 개발 방식이 점점 더 인기를 얻고 있는 자바스크립트 프레임워크에서 테스트 자동화는 매우 중요한 부분입니다. 이를 위해 테스트 환경을 구성하고 관리하는 작업은 번거롭고 복잡할 수 있습니다.

이러한 문제를 해결하기 위해 Storybook을 사용하면 효과적으로 자바스크립트 컴포넌트들을 테스트할 수 있습니다. Storybook은 컴포넌트들을 독립적으로 테스트할 수 있는 개발 환경을 제공합니다. 이를 통해 사용자 인터페이스를 시각적으로 확인하고, 다양한 상태와 상황에서 테스트할 수 있습니다.

Storybook 설치

Storybook을 사용하기 위해서는 먼저 npm을 이용하여 Storybook을 설치해야 합니다.

npm install --global @storybook/cli

위 명령어를 실행하여 Storybook CLI를 글로벌로 설치합니다.

Storybook 구성

Storybook에는 .storybook이라는 디렉토리가 필요합니다. 이 디렉토리는 Storybook에 대한 설정 파일들을 포함하고 있습니다. 아래는 기본적인 구성을 위해 필요한 파일들입니다.

컴포넌트 스토리 작성

Storybook의 주요 개념 중 하나는 “스토리”입니다. 스토리는 컴포넌트의 다양한 상태를 보여주는 방식으로 작성됩니다. 예를 들어, 버튼의 스토리는 버튼이 활성화되었을 때, 비활성화되었을 때 등 다양한 상태를 보여줍니다.

스토리를 작성하기 위해 .storybook 디렉토리 안에 stories 디렉토리를 만들고, 그 안에 *.stories.js 파일을 생성합니다. 이 파일에서 컴포넌트의 스토리를 작성할 수 있습니다.

import React from 'react';
import Button from './Button';

export default {
  title: 'Button',
  component: Button,
};

export const Primary = () => <Button variant="primary">Primary Button</Button>;
export const Secondary = () => <Button variant="secondary">Secondary Button</Button>;
export const Disabled = () => <Button disabled>Disabled Button</Button>;

위 코드는 Button 컴포넌트의 스토리를 작성한 예시입니다. title 속성은 스토리의 그룹을 정의하고, component 속성은 해당 스토리에서 사용할 컴포넌트를 지정합니다. 그리고 export const를 사용하여 각각의 스토리를 작성하고 있습니다.

Storybook 실행

Storybook을 실행하려면 아래의 명령어를 실행합니다.

npm run storybook

위 명령어를 실행하면 Storybook이 실행되고, 브라우저에서 확인할 수 있는 인터페이스를 제공합니다. 스토리의 목록과 각각의 상태를 시각적으로 확인할 수 있습니다.

테스트 자동화

Storybook을 사용하여 작성한 컴포넌트의 스토리는 사람이 눈으로 확인하고 테스트할 수 있습니다. 하지만 이를 자동화하기 위해서는 추가적인 작업이 필요합니다.

예를 들어 Jest, Enzyme 등의 테스트 도구를 사용하여 스토리를 자동으로 실행하고 검증할 수 있습니다. 이러한 테스트 도구를 사용하여 Storybook 스토리를 테스트 슈트로 작성하고 테스트를 자동화할 수 있습니다.

Storybook 스토리 테스트 자동화는 실제 사용자 인터페이스를 고려하여 컴포넌트를 테스트하는 데 매우 유용하며, 스냅샷 테스트와 같은 방식으로 컴포넌트의 렌더링 결과를 비교하는 것이 가능합니다.

마무리

Storybook을 사용하여 자바스크립트 컴포넌트의 테스트 자동화를 구성하는 방법을 살펴보았습니다. Storybook은 컴포넌트 기반 개발에서 효과적인 테스트 환경을 제공하며, 스토리를 작성하고 실시간으로 인터페이스를 확인할 수 있는 장점이 있습니다.

더 많은 스토리를 작성하고 검증하는 것을 통해 컴포넌트의 품질을 향상시킬 수 있으며, 자동화된 테스트를 통해 신뢰성 있는 개발을 이어갈 수 있습니다.

참고 자료