1๋ถ€ ๋งˆ๋ฌด๋ฆฌ

date
2026-02-06
order
2

GitHub Actions๋ž€

๋ฆฌํฌ์— ์ •์˜๋œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™” ํ•˜๋Š” ๋„๊ตฌ. ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€ .github/workflows ๊ฒฝ๋กœ์— ์ž‘์„ฑ๋œ yamlํŒŒ์ผ์„ ์ฝ๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

# vitest.yml
name: 'vitest test'
on: pull_request
jobs:
  Component-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: actions/setup-node@v3
        with:
          node-version: 19
      - name: Install dependencies
        run: npm ci
      - name: run vitest
        run: npm run test

on: pull_request: ํ’€๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹น PR์—์„œ ์ปค๋ฐ‹์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ด ์•ก์…˜์ด ์‹คํ–‰๋œ๋‹ค.

1๋ถ€ ๋งˆ๋ฌด๋ฆฌ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ํšจ๊ณผ

์ฒซ ์ˆ˜์—…๋ถ€ํ„ฐ ๊ฐ•์กฐํ•œ ์šฐ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ  :

  • ๋ฆฌํŒฉํ† ๋ง - ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•ˆ์ •์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌธ์„œ - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•ฑ์˜ ์ดํ•ด๋ฅผ ๋•๋Š” ๋ฌธ์„œ๊ฐ€ ๋œ๋‹ค.
  • ์ข‹์€ ์„ค๊ณ„ - ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ ๋‹จ์œ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์€ ์ข‹์€ ์ฝ”๋“œ ์„ค๊ณ„๋กœ ์ด์–ด์ง„๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์น™

  • ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ
    • ๋‚ด๋ถ€ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์˜์กด์„ฑ์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
    • ๊ทธ๋ž˜์„œ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ state ๊ฐ™์€ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•˜๊ธฐ๋ณด๋‹ค ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋‚˜ UI๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ์˜๋ฏธ ์žˆ๋Š” ํ…Œ์ŠคํŠธ์ธ์ง€ ๊ณ ๋ฏผํ•˜์ž
    • ์ปค๋ฒ„๋ฆฌ์ง€ 100%์— ์ง‘์ฐฉํ•˜๊ธฐ๋ณด๋‹ค ์œ ์˜๋ฏธํ•œ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ์ƒ๊ฐํ•˜์ž
    • ๋ช…ํ™•ํ•œ ํ…Œ์ŠคํŠธ ์„ค๋ช…
    • ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋„ ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ๊ฐ€์ง„๋‹ค.

๋‹จ์œ„ ํ…Œ์ŠคํŠธ

์•ฑ์—์„œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ

  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ
  • ๋ฆฌ์•กํŠธ ํ›…
  • ์œ ํ‹ธ ํ•จ์ˆ˜

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ชจ๋“ˆ์ด ์ƒํ˜ธ ์ž‘์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์ƒํƒœ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ.

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ธฐ์ค€์œผ๋กœ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๋‹น ๋„๋ฉ”์ธ์— ์ฐธ์—ฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์กฐํ•ฉ์„ ๊ฒ€์ฆ.
  • ์ƒํƒœ ๊ด€๋ฆฌ, API ํ˜ธ์ถœ์€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ์‘์ง‘.

ํ‚ค์›Œ๋“œ

  • ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋‹จ์–ธ assertion
  • ๋งค์ฒ˜ matcher
  • ์…‹์—…, ํ‹ฐ์–ด๋‹ค์šด
  • Testing Library
  • ๋ชจํ‚น
  • msw

ํ…Œ์ŠคํŠธ์˜ ํ•œ๊ณ„

๋ชจ๋“  ํ…Œ์ŠคํŠธ๋“ค์€ ์žฅ์ ๊ณผ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์–ด๋–ค ํ…Œ์ŠคํŠธ์— ๋” ์‹œ๊ฐ„๊ฐ€ ์ž์›์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋Œ€์ฒด๋กœ ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค ์•ฑ์˜ ๊ฒฝ์šฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ณ , ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋‚˜ ๋ฆฌ์•กํŠธ ํ›…๊ณผ ๊ฐ™์€ UIKit๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.