
์ฌ์ด๋ ํ๋ก์ ํธ ์ฃผ์ ๋ก, ์ธ๋ค์ผ ์ด๋ฏธ์ง๋ฅผ ์์ฑํด์ฃผ๋ ์น์ผ๋ก ๊ฒฐ์ ํ๋ค.
๋ฒจ๋ก๊ทธ ๊ธ์ ์ฌ๋ฆด ๋๋ง๋ค ์ธ๋ค์ผ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ ์ถ์๋๋ฐ, ์ผ์ผ์ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๊ฐ๋ณด๋ค ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ๋ฒ๊ฑฐ๋ก์์ ์ธ๋ค์ผ ์์ฑ ์น์ ์ง์ ๋ง๋ค๋ฉด ์์ฃผ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ,
๊ฐ๋ฐ ๋ธ๋ก๊ทธ๋ฅผ ํ๊ณ ์๋ ์น๊ตฌ๋ค ์ค ์ธ๋ค์ผ์ด ํ์ํ ์น๊ตฌ๊ฐ ์์ผ๋ฉด ์ฌ์ดํธ๋ฅผ ๊ฐ์ด ๊ณต์ ํด์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ ์ด๋ ๊ฒ ์ฃผ์ ๋ฅผ ์ ์ ํ๊ฒ ๋์๋ค ๐บ
์ฐ์ ์ฑ๋ฆฐ์ง 1์ฃผ์ฐจ ๋ฏธ์
์ผ๋ก ํต์ฌ ๊ธฐ๋ฅ ๋ฐ ๋ช
์ธ๋ฅผ ์์ฑํ์๋ค.
(๊ณต์ ๋ฅผ ์ํด ๋
ธ์
์ผ๋ก ๋ด์ฉ์ ์์ฑํ์๋ค)
1์ฃผ์ฐจ ๋ฏธ์

์ฐ์ ํ
์คํธ ๋ช
์ธ๋ฅผ ์์ฑํ๋ฉด์ ๋ด๊ฐ ์๊ฐํ๋ ํต์ฌ ๊ธฐ๋ฅ ์์ฃผ๋ก ๊ฐ๋จํ๊ฒ ํ๋ฉด UI๋ฅผ ๊ตฌ์ฑํ๋ค.
ํ๋ก ํธ์๋๋ React, TypeScript๋ฅผ ์ฌ์ฉํ๊ณ
ํ
์คํธ๋๊ตฌ๋ก๋ ๋์ค๋๊ป์ ๊ฐ์ด๋ํด์ฃผ์ Cypress๋ฅผ ์ฌ์ฉํ์๋ค.
Cypress๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ฉ ํ๋ฐํธ์๋ ํ
์คํธ ๋๊ตฌ๋ผ๊ณ ํ๋ค.
cypress ๊ณต์ ์ฌ์ดํธ
npm install cypress --save-dev
npx cypress open
๋ก ์ค์น ๋ฐ ์คํ์ํค๋ฉด ๋๋ค.
๋๋ cypress๋ก ํ์ผ ์
๋ก๋๋๋ ๊ฒ๋ ํ
์คํธํด๋ณด์์ผ ํด์
npm i cypress-file-upload
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ถ๊ฐ๋ก ์ค์นํ๋ค.

์น์ ํต์ฌ ๊ธฐ๋ฅ์ "์ธ๋ค์ผ์ ํ
์คํธ๋ฅผ ์
๋ ฅํ์ฌ ์ด๋ฏธ์ง ํฌ๋งท์ผ๋ก ์ ์ฅํ๋ค." ์ด๊ธฐ ๋๋ฌธ์, ํต์ฌ ๊ธฐ๋ฅ๋ถํฐ ๋จผ์ ๊ตฌํํ๊ณ , ์ฐจ๋ก๋ก ๋ค์ ํ
์คํธ๋ช
์ธ๋ก ๊ฐ๋ฐ์ ์งํํ๋ค.
html์ ์ด๋ฏธ์งํ์ํค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ๊ฐ์ฅ ์ ๋ช
ํ html2canvas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
ํต์ฌ๊ธฐ๋ฅ์ ๋จผ์ ๋ง๋ค๊ณ , css๋ฅผ ์ ์ฉํ๋ฉด์๋ถํฐ input ์์ ํ
์คํธ๋ค์ด ๋ค์ด๋ก๋๋ฐ์ ์ด๋ฏธ์ง์์ ์ ๋๋ก ๋ณด์ด์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค.

๊ฒ์ํด๋ณธ ๊ฒฐ๊ณผ html2canvas๋ html์ css๋ฅผ ์ ํํ๊ฒ ์ธ์ํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๊ณ , ๋์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช๋ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณ๊ฒฝํ๋ค๊ณ ํ๋ค๐ฟ
๊ทธ๋ฆฌ๊ณ ๋์ฒด์ ๋ก ์ฌ์ฉํ ๋งํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๋ค๊ฐ
Hereโs Why Iโm Replacing html2canvas With html-to-image in Our React App ๊ธ์ ๋ฐ๊ฒฌํ๊ณ , html-to-image ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณ๊ฒฝํ์ฌ ๊ฒ์ฆํด๋ณธ ๊ฒฐ๊ณผ ํ
์คํธ ์๋ฆผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
์ด ๋ฌธ์ ๋ก ์๊ฐ๋ณด๋ค ์๊ฐ์ ๋ง์ด ์์ํ๊ฒ ๋์ด์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ๊ธฐ ์ ์๊ฐ์ ๊ธ๊ธํด ํ์ง ์๊ณ ์ฌ์ ์กฐ์ฌ์ ์ฌ์ ํ
์คํธ๋ฅผ ํตํด ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ์ํค๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๋ค์ ํ๋ฒ ๋ฐฐ์ ๊ณ , ์ฌ์ฉํ๊ธฐ ์ ํฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ์ง ๊ฒ์ฆํ๋ ๊ฒ์ ์ค์์ฑ์ ๋ค์ ํ ๋ฒ ๋๋ผ๊ฒ ๋์๋ค.
TDD ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ฒ์ ๊ฒฝํํด๋ณด์๋๋ฐ, ์ง์ ๊ฒฝํํด๋ณด๋ฉด์ ๋ช ๊ฐ์ง ๋๋์ ๋ค์ด ์๋ค.

์๊ตฌ์ฌํญ์ด ๋ช
ํํด์ง๋ค
์ด๋ค ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ค๊ฐ ๊ทธ ๊ธฐ๋ฅ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ ์ถ๊ฐํ๊ณ ์ถ์ด์ง ๋๊ฐ ์๋ค. ์ด๋ ์ ํด์ง ๋ช
ํํ ๋ชฉํ ์์ด ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ผญ ํ์ํ ์ฃผ๊ธฐ๋ฅ์ด ๋ท์ ์ด ๋๊ณ , ๋ถ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋๋ฐ ์ง์คํ๊ฒ ๋๊ธฐ๋ ํ๋ค. TDD๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ฉด ํ
์คํธ ๋ช
์ธ ์์ฑ์ ํตํด ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ ๋ํด ์ฐ์ ์ ์ผ๋ก ๊ณ ๋ฏผํด๋ณด๊ณ , ๊ทธ ์ดํ ๋ถ๊ฐ ๊ธฐ๋ฅ๋ค์ ํ๋์ฉ ๊ณ ๋ฏผํด๋๊ฐ ์ ์๊ธฐ ๋๋ฌธ์, ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์์ํด์ง๋ ๊ฒ ๊ฐ๋ค.
์ฝ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ๋ถ์๊ฐ์ด ๊ฐ์ํ๋ค
๋ฆฌํฉํ ๋ง์ ํ ๋, ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋์ ํน์ฌ๋ ์ ๋์ํ๋ ๊ธฐ๋ฅ์ด ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํ ๊น๋ด ๋ถ์ํ๋ ์ ์ด ์๋ค. ํ์ง๋ง ํ
์คํธ ์ฝ๋๊ฐ ์๋ ์ํ์์๋ ์ฝ๋ ๋ณ๊ฒฝ์ ํตํด ๊ธฐ์กด ๋์์ด ์ํฅ์ ๋ฐ์ง ์๋์ง ๋น ๋ฅด๊ฒ ํ์ธํด๋ณผ ์ ์์๊ณ , ์ด๋ฅผ ํตํด ๋ฐ์ํ ์ ์๋ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ์๋ฐฉํ ์ ์์๋ค.
์ด๋ฒ ๊ฒฝํ์ ํตํด ํ
์คํธ ์๋ํ์ ์ด์ ๋ค์ ์ง์ ๋๊ปด๋ณผ ์ ์์๊ณ ,
cypress๋ผ๋ ๋๊ตฌ์ ๋ํด ๋ ์์๋ณด๊ณ ์ถ๊ณ ๋ค๋ฅธ ํ๋ก์ ํธ์๋ ์ ์ฉํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ ํ ์ดํ๋ก์ ํธ๊ณ ๋ฐฑ์๋์ ์ฐ๋๋์ด ์๋ ๋ถ๋ถ์ ์์๊ธฐ ๋๋ฌธ์, ๋ณด๋ค ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์ผ ๋๋ ์ด๋ค ์์ผ๋ก ํ
์คํธ ๋ช
์ธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์์ง ์ฌ๋ก๋ฅผ ์ฐพ์๋ณด์์ผ๊ฒ ๋ค.๐ง
