오, Jest! Playwright!

권세원·2023년 6월 6일
0
post-thumbnail

Jest & Playwright

웅서트 스터디 세 번째 주제 - Jest & Playwright
Jest와 Playwright에 대해 간략하게 알아보자!



테스팅 라이브러리

말 그대로 기본적인 유닛 테스트를 포함한 여러가지 테스트를 처리해주는 라이브러리이다.

그중에서도 오늘은 Jest와 Playwright에 대해 알아볼 것이다.

Jest

Jest는 테스팅 라이브러리 중에서도 꽤나 많이 사용되는 테스팅 라이브러리이다.

React를 만든 페이스북 개발팀이 만들었다.
이는

React 친화적이라는 뜻이 아닐까

Jest 설치

npm install --save-dev jest

yarn

yarn add --dev jest

package.json에 추가

{
  "scripts": {
    "test": "jest"
  }
}

test 속성을 jest 로 수정해준다.

테스트 파일 생성

~.test.js 또는 ~.spec.js로 파일을 생성해준다.

테스트 코드 작성

// math.js

const add = (a, b) => {
  return a + b;
}

module.exports = add;
// math.test.js

const add = require('./math');

test('덧셈 테스트', () => {
  const result = add(2, 3);
  expect(result).toBe(5);
});

test('음수 덧셈 테스트', () => {
  const result = add(-2, -3);
  expect(result).toBe(-5);
});

test 시작

npm test

yarn

yarn test

위 명령어들을 통해 테스트를 실행하면 작성된 테스트를 모두 실행하여 검사한다.

Matcher

위 예시 코드에서 사용된 toBe()와 같은 함수를 Matcher라고 한다.

우리가 사용할 거의 모든 경우에 대한 Matcher함수가 준비되어 있으나 이번에는 많이 사용하는 것들만 알아보자.

  • toBe() : 두 값이 같은지 확인한다.(숫자 or 문자열)
  • toEqual() : 두 값이 같은지 확인한다.(객체)
  • not : matcher와 반대되는 케이스를 확인한다. 함수 앞에 넣는다.
  • toMatch() : 정규식을 검증한다.
  • toThrow() : 오류를 던지는지 확인한다.
  • toContain() : 배열에 특정 항목이 있는지 확인한다.

Playwright

마이크로소프트에서 개발하는 브라우저테스트 및 안정적인 자동화를 목적으로 하는 자동화 라이브러리이다.

e2e 테스트에 사용된다.

E2E

End 2(to) End, 프로그램과 사용자가 인터페이스에서의 상호작용을 처음부터 끝까지 확인하는 것

장점

  • 브라우저 호환성 : 다양한 브라우저를 지원한다.

  • 다양한 언어 지원 : Js, Ts, Python, Java 등 다양한 언어를 지원한다.(당장 구글에 Playwright만 검색해도 다양한 언어의 레퍼런스들이 있는 것을 확이할 수 있다.)

  • 속도 : 테스트 파일이 여러개일 경우 각각의 파일에서 병렬적으로 처리해 속도가 빠르다.

  • 문법 : Js 문법을 그대로 사요할 수 있다.

설치

npm init playwright@latest

yarn

yarn create playwright

test 실행

npx playwright test

위 명령어를 통해 모든 테스트가 실행된다.

특정 파일 test

npx playwright test file-name

test report

npx playwright show-report

위 명령어를 통해 테스트 결과를 확인할 수 있다.

테스트..

설명한 두가지 테스팅 라이브러리들만 잘 알고 있어도 앞으로 하나하나 직접 확인해야하는 일은 없을 것이다.

Playwright의 경우에는 e2e 테스트에 있어 먼저 나온 Cypress가 존재하지만, 그럼에도 뛰어난 성능으로 높은 사용률을 보인다.

노력하자..
아는만큼 편해진다..

profile
rnsjtpdnjs

0개의 댓글