π¨π» web.dev51 νλ‘ νΈμλ E2E ν μ€ν (with Cypress) π‘ μ΄λ² ν¬μ€νΈλ μ¬λ΄ μν΄λ¦¬μμ λ°νν λ΄μ©μ μ 리ν κ²μ λλ€. π λ€μ΄κ°λ©° μλ 12μλΆν° μ½ 3κ°μκ° ν곡 μΉ κ°λ°μ μ§ννλλ°, μκ°λ³΄λ€ λ€μν λμ μ΄ μμ΄μ κ³ μμ νλ κΈ°μ΅μ΄ μμ΅λλ€. λκ΅°λ€λ μ κ° μ§ννλ μ 무(μΉ νλΈ μ€ν, TF v12 μ ν)κ° ν곡μ μ 체μ μΈ λμ μ μ μ©μ΄ νμνλ κ²λ€μ΄μ΄μ λμ± κ·Έλ¬λ κ² κ°μλ°μ. μμ§ E2E ν μ€νΈ μμ±κ²½νμ΄ μμ΄μ μ΄λ² κΈ°νμ 곡λΆλ ν΄λ³Ό κ²Έ κ΅μ μ μμ½λμ μ E2E ν μ€νΈλ₯Ό μ§νν΄λ΄€μ΅λλ€. π E2E ν μ€νΈλ? μ°μ κ°λ¨νκ² E2E ν μ€νΈκ° 무μμΈμ§ μ΄ν΄λ³΄κ² μ΅λλ€. νν E2E (End to End) ν μ€νΈλ λΈλΌμ°μ νκ²½μμ μ μ κ° μ¬μ©νκ³ μλ€λ κ°μ νμ μ ν리μΌμ΄μ μ μ 체μ μΈ λμμ κ²μ¦νλ κ²μ λ§ν©λλ€. μ λ ν μ€νΈμ ν΅ν© ν μ€νΈμμ.. 2023. 3. 19. μ index λ 0λΆν° μμν κΉ? μΌλ§μ νλ‘κ·Έλλ°μ μ΄μ λ§ μμν μ§μΈλΆμ΄ λ€μ μ§λ¬Έμ μ£Όμ ¨μ΅λλ€. μ΄μ λ§ νλ‘κ·Έλλ°μ μμν μ¬λμ΄λΌλ©΄ λꡬλ νλ² μ―€ μλ¬Έμ νμλ§ν κ²μ΄λΌκ³ μκ°ν©λλ€. μ λ°°μ΄μ index κ° 0λΆν° μμνλ κ²μΈκ°μ? μ λν μ²μ CμΈμ΄λ‘ νλ‘κ·Έλλ°μ μ λ¬Έ νμ λ 0λΆν° μμνλ μΈλ±μ± 체κ³κ° λ―μ€μμ§λ§ κ·Έλ λΉμμλ κ·Έλ₯ κ·Έλ°κ°λ³΄λ€~ νκ³ λ°μλ€μ΄κ³ λμ΄κ°μλλ°, μ΄λ² κΈ°νμ μμ보면 μ’μ κ² κ°λ€λ μκ°μ΄ λ€μ΄μ μ΄μ κ΄λ ¨λ λͺκ°μ§ λ°°κ²½μ μ°Ύμλ³΄κ³ μ 리ν΄λ΄€μ΅λλ€. π TL;DR 0λΆν° μμνλ μΈλ±μ€λ μμ°μ€λ½κ³ μ§κ΄μ μ΄λ©°, λ°°μ΄μ 첫 λ²μ§Έ μμκ° νμ 0λ² μΈλ±μ€λΌλ μ μμ μ΄μ μ΄ μλ€. λ λ€λ₯Έ μ΄μ λ, 0λΆν° μμνλ μΈλ±μ€λ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ³μ°νκΈ° μ½κ² λ§λ€μ΄μ€λ€. π μμ°μ€λ½κ³ μ§κ΄μ μ΄λ€ 0.. 2023. 3. 12. Next.js styled-component μ€μ νκΈ° (SSR FOUC μ΄μ) π Next.js β€οΈ styled-component Next.js μ Styled Component λ₯Ό ν¨κ» μ¬μ©ν λ μ μ ν μ€μ μ νμ§ μμΌλ©΄ SSR μμ FOUC (Flash of Unstyled Content) νμμ΄ λ°μνκ² λ©λλ€. π€ FOUC? νμ΄μ§μ μ€νμΌμνΈ μ λ³΄κ° λ‘λ μμ μ ν¬ν¨λμ§ μμ μ μ μ€νμΌμ΄ μ μ©λμ§ μμ νμ΄μ§κ° λνλλ νμμ λλ€. π FOUC μμΈ νμ νκΈ° Next.js SSR (Pre Rendering) Server-side Rendering κ³Ό Static Generation λͺ¨λ Pre-rendering λ°©μμ΄λ©° νμν data fetching κ³Ό HTML λ λλ§μ΄ client μκ² λ³΄λ΄μ§κΈ° μ μ μ΄λ―Έ μνλ©λλ€. μ΄λ₯Ό ν΅ν΄ client λ non-intera.. 2022. 11. 27. TypeScript + Jest μ λ ν μ€νΈ μμ±νκΈ° μ΄λ² ν¬μ€νΈμμλ TypeScript νκ²½μμ Jest λ‘ μ λ ν μ€νΈλ₯Ό μ§ννκΈ° μν΄ νμν μ€μ λ€κ³Ό νμΈμ μν κ°λ¨ν μμ μ½λλ₯Ό μμ±ν΄λ³΄κ² μ΅λλ€. μ¬μ©ν ν μ€νΈ νλ μμν¬λ κ°μ₯ λμ€μ μΌλ‘ μ¬μ©λκ³ μλ Jest μ λλ€. π Jest μ€μ 1οΈβ£ ν¨ν€μ§ μ€μΉ λ¨Όμ νμν ν¨ν€μ§λ₯Ό μ€μΉν©λλ€. npm i -D jest @jest/globals ts-jest π‘ @jest/globals λͺ μμ μΈ import λ₯Ό μ νΈνκΈ°μ, ν΄λΉ ν¨ν€μ§λ₯Ό μ¬μ©ν΄μ jest api μ¬μ©νμ΅λλ€. π‘ ts-test TS λ‘λ λͺ¨λ ν μ€νΈλ₯Ό μνν λ μ»΄νμΌ + νμ 체ν¬κΉμ§ ν¨κ» μνν μ μλλ‘ ν΄μ€λλ€. 2οΈβ£ config νμΌ μΆκ° // jest.config.js /** @type {import('jest').Con.. 2022. 11. 27. AWS SDK λ‘ s3 νμΌ μ¬μ΄μ¦ μ‘°ννκΈ° π μ λ‘λ ν λ°μ°μ²μ ν¬κΈ° μ νμ μΆκ°ν μ μμκΉμ? νΈλ¦¬ν TNA ννΈλμΉ μλ ννΈλκ° κ³ κ°μκ² μμ½ λ°μ°μ²λ₯Ό μ μ‘νλ κΈ°λ₯μ΄ μμ΅λλ€. κΈ°μ‘΄μλ νμΌ μ¬μ΄μ¦μ μ ν μμ΄ μ μ‘νλλ‘ νλλ°, μ¬μ΄μ¦κ° μ»€μ§ κ²½μ° μ΄μκ° μ겨μ μ΄λ²μ 리λ΄μΌνλ©΄μ μλ²μμ λ°μ°μ² μ¬μ΄μ¦κ° ν΄ κ²½μ° μ΄λ₯Ό λΆλ¦¬ν΄μ μ μ‘ μ²λ¦¬νλ κ² μ΄μΈμ νλ‘ νΈμλμμλ κ°λ³ λ°μ°μ²μ μ©λ μ ν(15MB)μ μΆκ°νκΈ°λ‘ νμ΅λλ€. μ΄λ₯Ό μν΄ λΈλΌμ°μ μμ μ¬λ¦¬λ νμΌ μ¬μ΄μ¦ μ²΄ν¬ μ΄μΈμλ S3 μ μ΄λ―Έ μ λ‘λ λ λ°μ°μ² νμΌ μ¬μ΄μ¦λ₯Ό μ‘°νν΄μ κ° λ°μ°μ² νλͺ©μ μ©λμ 보λ₯Ό ν¨κ» λ ΈμΆν΄μ€μΌ νμ΅λλ€. κ·ΈλμΌ κ³ κ°μ΄ μ΄λ€ νμΌμ λ¬Έμ κ° μλμ§ νλ²μ νμΈμ΄ κ°λ₯ν ν λκΉμ. π S3 νμΌ μ¬μ΄μ¦ (HeadObject) λΈλΌμ°μ μμ μ λ‘λν νμΌ.. 2022. 11. 26. React μ΄λ²€νΈ μ²λ¦¬λ°©μκ³Ό SyntheticEvent React λ W3C λͺ μΈμ λ°λΌ ν©μ± μ΄λ²€νΈλ₯Ό μ μνκΈ° λλ¬Έμ λΈλΌμ°μ νΈνμ±μ λν΄ κ±±μ ν νμκ° μμ΅λλ€. ν©μ± μ΄λ²€νΈλ Synthetic Event κ°μ²΄λ‘ μ μλλ©° λΈλΌμ°μ κ³ μ μ΄λ²€νΈμ μμ ν λμΌνκ² λμνμ§λ μμ΅λλ€. μ΄λ² ν¬μ€νΈμμλ React μ λ΄λΆ μ΄λ²€νΈ μμ€ν μ λμ λ°©μμ λν΄μ μ΄ν΄λ³΄κ² μ΅λλ€. π π SyntheticEvent λνΌ κ°μ²΄ React μ μ΄λ²€νΈ νΈλ€λ¬λ ν¬λ‘μ€ λΈλΌμ°μ§μ μΌνμΌλ‘ λͺ¨λ νλ«νΌμμ λμΌν μ΄λ²€νΈ μ²λ¦¬λ₯Ό μν΄ κ΅¬νλ μΈν°νμ΄μ€μΈSyntheticEvent κ°μ²΄λ₯Ό μ¬μ©ν©λλ€. μ΄λ stopPropagation κ³Ό preventDefault λ±μ ν¬ν¨νμ¬ λΈλΌμ°μ κ³ μ μ΄λ²€νΈμ λμΌν μΈν°νμ΄μ€λ₯Ό κ°μ§μ§λ§ λͺ¨λ λΈλΌμ°μ μμ λμΌνκ² λμν¨μ 보μ₯ν©λλ€. S.. 2022. 10. 17. μ΄μ 1 2 3 4 5 6 7 Β·Β·Β· 9 λ€μ