
| 항목 | Robot Framework | Vitest |
|---|---|---|
| 주 사용 언어 | 키워드 기반 DSL (.robot), Python 라이브러리 확장 가능 | JavaScript / TypeScript |
| 테스트 타입 | 주로 E2E(End-to-end), UI/브라우저 자동화, API 테스트 | 주로 단위(Unit)·통합(Integration) 테스트, UI 렌더링 테스트 |
| 대상 | Selenium, API, DB, CLI 등 여러 시스템 조작 가능 | Node.js 환경 또는 브라우저 환경에서 코드 로직 검증 |
| 실행 속도 | 브라우저 구동 등으로 느림 | 코드 실행 기반이라 매우 빠름 |
| 난이도 | 문법 간단하지만, 브라우저/환경 설정 필요 | JS/TS에 익숙하면 바로 가능 |
| 장점 | 비개발자도 읽기 쉬움, 다양한 외부 시스템 제어 | 프론트엔드와 궁합 좋음, 모듈/컴포넌트 단위 테스트에 강함 |
| 단점 | JS UI 컴포넌트 단위 테스트에는 불리 | UI 자동화는 직접 제어 어려움, 브라우저 제어하려면 Playwright/Cypress 필요 |
"로그인 후 화면에서 companyname이 기대한 값과 같은지 확인"
(SeleniumLibrary 사용, URL과 로그인 요소는 가상의 예)
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL} https://example.com/login
${USERNAME} gildong.hong
${PASSWORD} 12345678!@#$%^&*
${EXPECTED_COMPANY} myCompanyName
*** Test Cases ***
Verify Company Name After Login
Open Browser ${URL} chrome
Input Text name=admin_id ${USERNAME}
Input Text name=password ${PASSWORD}
Click Button xpath=//button[@buttoncontent="로그인"]
Wait Until Element Is Visible id=companyname timeout=10s
${actual}= Get Text id=companyname
Should Be Equal ${actual} ${EXPECTED_COMPANY}
Close Browser
(프론트엔드 함수/컴포넌트를 테스트한다고 가정, companyname을 API로 가져온다고 가정)
// companyService.ts
export async function getCompanyNameAfterLogin(username: string, password: string) {
const res = await fetch("/api/login", {
method: "POST",
body: JSON.stringify({ username, password })
});
if (!res.ok) throw new Error("Login failed");
const userData = await res.json();
return userData.companyname;
}
// companyService.test.ts
import { describe, it, expect, vi } from "vitest";
import { getCompanyNameAfterLogin } from "./companyService";
describe("Login and check company name", () => {
it("회사 이름 myCompanyName으로 잘 반환하는지 확인", async () => {
// fetch를 mock 처리
global.fetch = vi.fn().mockResolvedValue({
ok: true,
json: async () => ({ companyname: "myCompanyName" })
});
const companyname = await getCompanyNameAfterLogin("gildong.hong", "12345678!@#$%^&*");
expect(companyname).toBe("myCompanyName");
});
});
"로그인 후 화면에서 companyname이 기대한 값과 같은지 확인"
📌 정리
📌 결론 Vitest 사용한다면?