- Published on
π Form-ation
νλ‘μ νΈ μκ°
QA μμ μ νμλ λλ£λΆλ€μ λ°λ³΅μ μΈ νΌ μ λ ₯ λΆνΈν¨μ ν΄κ²°νκΈ° μν΄ κ°λ°ν ν¬λ‘¬ νμ₯νλ‘κ·Έλ¨μ λλ€. μ λ ν° λͺ¨λλ‘ μ μ₯νκ³ μΆμ μ λ ₯ νλλ₯Ό μ§μ μ ννκ³ , κ°μ νμ΄μ§λ₯Ό μ¬λ°©λ¬Ένλ©΄ μ μ₯λ κ°μ μλμΌλ‘ μ λ ₯ν΄μ£Όλ κ²μ΄ ν΅μ¬ κΈ°λ₯μ λλ€. 2025λ 8μλΆν° νμ¬κΉμ§ μ§μμ μΌλ‘ κ°λ° μ€μ΄λ©° Chrome μΉμ€ν μ΄μ λ°°ν¬λμ΄ μμ΅λλ€.

ν΅μ¬ κΈ°λ₯
μ μ₯νκ³ μΆμ μ λ ₯ νλλ₯Ό μ§μ ν΄λ¦νμ¬ μ ν, λ³μΉκ³Ό ν¨κ» μ μ₯
κ°μ URL μ¬λ°©λ¬Έ μ μ μ₯λ λ°μ΄ν° λͺ©λ‘ νμ, μνλ λ°μ΄ν° μΈνΈλ₯Ό μ ννμ¬ μλ μ λ ₯
URLλ³ μ¬λ¬ λ°μ΄ν° μΈνΈ μ μ₯, Options νμ΄μ§μμ μ‘°ν/μμ /μμ , μ¬μ© ν΅κ³ μΆμ
password νμ νλ μλ μ μΈ, λͺ¨λ λ°μ΄ν°λ λ‘컬μλ§ μ μ₯ (μλ² μ μ‘ μμ)
μ¬μ© κΈ°μ
βΌοΈ νλ‘μ νΈ μ΄μ (v1.0)
macOS Chromeμμ λΈλΌμ°μ μλ¦Ό νμ λ¬Έμ
Windowsμμλ μλνμ§λ§, macOS Chromeμμλ μ μ₯ νμΈ μλ¦Όμ΄ μ ν νμλμ§ μλ λ¬Έμ κ° λ°μνμ΅λλ€. Content Scriptμ Background Script κ° ν΅μ μ μ μμ΄κ³ , μλ¦Ό κΆνλ 'granted' μνμμ§λ§ μ€μ μλ¦Όμ΄ νλ©΄μ λνλμ§ μμμ΅λλ€.
λ¨κ³λ³ λλ²κΉ μ ν΅ν΄ μμΈμ λΆμνμ΅λλ€.
- Service Worker ν΅μ λ¬Έμ μμ¬ β μ¬μλ λ‘μ§ μΆκ°νμ§λ§ ν΄κ²°λμ§ μμ
- μμ€ν μλ¦Ό μ€μ λ¬Έμ μμ¬ β κΆνμ μ μμ΄μμ
- μλ¦Ό μμ΄μ½ λ¬Έμ μμ¬ β base64 λλ―Έ μ΄λ―Έμ§λ₯Ό μ€μ μμ΄μ½μΌλ‘ λ³κ²½νμ§λ§ μ¬μ ν λ¬Έμ
- ν μ€νΈ μλ¦ΌμΌλ‘ μμΈ λΆλ¦¬ β κ°λ¨ν μλ¦Όμ νμλμ§λ§ λ²νΌμ΄ ν¬ν¨λ 볡μ‘ν μλ¦Όμ νμλμ§ μμμ λ°κ²¬
- ν΅μ¬ μμΈ: macOS Chromeμμ λ²νΌμ΄ 2κ° μ΄μ ν¬ν¨λ μλ¦Όκ³Ό requireInteraction: true μ€μ μ΄ μ λλ‘ μλνμ§ μμ
ν¬λ‘μ€ νλ«νΌ νΈνμ±μ μν΄ μλ¦Ό ꡬ쑰λ₯Ό λ¨μννκ³ 1κ°μ λ²νΌμΌλ‘ λ³κ²½νμ΅λλ€. μ΄ κ³Όμ μμ νλ«νΌλ³ API λμ μ°¨μ΄μ Chrome Extensionμ μ μ½μ¬νμ λν΄ λ°°μΈ μ μμμ΅λλ€.
νμ΄μ§ μ΄λ μ λ°μ΄ν° μμ€ λ¬Έμ
λ€μ΄λ² κ²μκ³Ό κ°μ΄ νΌ μ μΆ ν μ¦μ νμ΄μ§κ° μ΄λνλ νκ²½μμ μ μ₯ νμΈ λͺ¨λ¬μ΄ νμλκΈ° μ μ νμ΄μ§κ° λ°λμ΄ μ¬μ©μ λ°μ΄ν°κ° μμ€λλ λ¬Έμ κ° λ°μνμ΅λλ€. κΈ°μ‘΄ Content Script κΈ°λ° λͺ¨λ¬λ‘λ νμ΄μ§ μλͺ μ£ΌκΈ°μ ν¨κ» μ¬λΌμ‘μ΅λλ€.
λΈλΌμ°μ λ 벨 μλ¦Ό μμ€ν μΌλ‘ μ ννμ΅λλ€.
- Chrome Notifications APIλ₯Ό νμ©ν νμ΄μ§ λ 립μ μλ¦Ό
- Background Scriptμμ μ§μ μ μ₯ λ‘μ§ μ²λ¦¬
- requireInteraction μ΅μ μΌλ‘ μ¬μ©μ μλ΅κΉμ§ μλ¦Ό μ μ§
- Message Passingμ ν΅ν Content β Background Script κ° μμ μ ν΅μ
νμ΄μ§ μ΄λκ³Ό μμ ν λ 립μ μΌλ‘ λμνλ μμ€ν μ ꡬμΆνμ΅λλ€. Chrome Extensionμ μν€ν μ²μ μλͺ μ£ΌκΈ°, κ·Έλ¦¬κ³ λΈλΌμ°μ APIμ νμ©λ²μ λν΄ κ²½νμ μμ μ μμμ΅λλ€.
μ¬μ©μ κ²½ν μ΅μ ν - λΆνμν μ μ₯ μμ² λ°©μ§
λͺ¨λ νΌ μ μΆ μλ§λ€ μ μ₯ νμΈμ μμ²νλ©΄ μ¬μ©μμκ² νΌλ‘κ°μ μ£Όκ³ , μ€μ λ‘ μ μ₯μ΄ νμνμ§ μμ κ²½μ°λ λ§μμ΅λλ€. κΈ°μ‘΄ μλμμ± λꡬλ€μ μ£Όμ λΆνΈν¨μ΄μλ "κ³Όλν μλ¦Ό"μ ν΄κ²°ν΄μΌ νμ΅λλ€.
μ¬μ©μ μ£Όλμ μ μ₯ μμ€ν μ ꡬννμ΅λλ€.
- κΈ°λ³Έ OFF μνλ‘ λΆνμν μλ¦Ό λ°©μ§
- νμ₯ μμ΄μ½ ν΄λ¦μΌλ‘ μ μ₯ λͺ¨λ ON/OFF μ ν (λΉ¨κ° "ON" λ°°μ§ νμ)
- μ μ₯ μλ£ ν μλμΌλ‘ OFF μν 볡κ·
- μ¬μ΄νΈλ³ "λ€μ λ¬»μ§ μμ" μ€μ μ§μ
- κΈλ‘λ² μ μ₯ λͺ¨λμ μ¬μ΄νΈλ³ μ€μ μ μ΄μ€ νν°λ§
μ¬μ©μκ° νμν λλ§ μ μ₯ κΈ°λ₯μ νμ±ννλ μ§κ΄μ μΈ UXλ₯Ό ꡬννμ΅λλ€. μ¬μ©μ μ€μ¬ μ€κ³μ μν κ΄λ¦¬μ μ€μμ±μ 체κ°ν μ μμμ΅λλ€.
βΌοΈ νλ‘μ νΈ μ΄μ (v2.0)
CSR μ±μμ μ λ ν° λ§€μΉ μ€ν¨ λ¬Έμ
React, Vue λ± CSR μ±μμ λμ μΌλ‘ μμ±λλ ν΄λμ€λͺ μ΄λ IDμ μμ‘΄νλ€ λ³΄λ μ λ ν°κ° μμ£Ό λ³κ²½λμ΄ μ μ₯λ λ°μ΄ν°μ λ§€μΉμ΄ μ€ν¨νλ λ¬Έμ κ° λ°μνμ΅λλ€. νΉν λΉλλ§λ€ ν΄μκ° λ°λλ CSS-in-JS νκ²½μμ μ¬κ°νμ΅λλ€.
μ λ ν° μμ± μ°μ μμλ₯Ό μ¬μ€κ³νμ΅λλ€.
nameμμ±μ μ΅μ°μ μΌλ‘ μ¬μ© (νΌ νλμμ κ°μ₯ μμ μ )data-testid,data-test-id,data-cyλ± ν μ€νΈμ© μμ± νμ©idμμ±μ κ·Έ λ€μ μ°μ μμλ‘ λ°°μΉ- λΆμμ ν μ λ ν° μ¬μ© μ μ¬μ©μμκ² κ²½κ³ μμ΄μ½(β οΈ) νμ
μμ μ μΈ μμ±μ μ°μ μ¬μ©νκ³ , λΆμμ ν μ λ ν°λ μ¬μ©μκ° μΈμ§ν μ μλλ‘ νμ΅λλ€. νλ‘ νΈμλ μνκ³μ λ€μν νκ²½μ κ³ λ €ν μ€κ³μ μ€μμ±μ λ°°μ μ΅λλ€.
μ λ’°λ κΈ°λ° λ§€μΉμ μμΈ‘ λΆκ°λ₯ν λμ
κΈ°μ‘΄μλ μ λ ν°, ID, ν΄λμ€, μμΉ λ± μ¬λ¬ κΈ°μ€μΌλ‘ μ λ’°λλ₯Ό κ³μ°νμ¬ λ§€μΉνμ΅λλ€. νμ§λ§ "λμΆ© λΉμ·νλ©΄ λ§€μΉ"νλ λ°©μμ μλͺ»λ νλμ λ°μ΄ν°κ° μ λ ₯λλ μνμ΄ μμκ³ , μ¬μ©μκ° μ΄λ€ νλμ μ λ ₯λ μ§ μμΈ‘νκΈ° μ΄λ €μ μ΅λλ€.
μ λ’°λ κΈ°λ° λ§€μΉμ μμ ν μ κ±°νκ³ μ ν λ§€μΉ λ°©μμΌλ‘ λ³κ²½νμ΅λλ€.
- μ λ ν°μ input νμ μ΄ μμ ν μΌμΉν΄μΌλ§ λ§€μΉ
- λ§€μΉ μ€ν¨ μ ν΄λΉ νλλ μ€ν΅νκ³ μ¬μ©μμκ² κ²°κ³Ό μλ¦Ό
- λͺ κ° νλκ° μ±μμ‘κ³ , λͺ κ°κ° μ€ν΅λμλμ§ λͺ ννκ² νμ
"λλν μΆμΈ‘"λ³΄λ€ "μμΈ‘ κ°λ₯ν λμ"μ΄ μ¬μ©μ μ λ’°μ λ μ€μνλ€λ κ²μ λ°°μ μ΅λλ€. μ€ν¨νλλΌλ λͺ ννκ² μλ €μ£Όλ κ²μ΄ λ λμ UXμμ 체κ°νμ΅λλ€.
SPA νκ²½μμ Content Script μ€λ³΅ μ€ν
SPA(Single Page Application)μμ soft navigation(νμ΄μ§ μλ‘κ³ μΉ¨ μμ΄ URLλ§ λ³κ²½) μ Content Scriptκ° μ¬λ¬ λ² μ€νλμ΄ μ΄λ²€νΈ 리μ€λκ° μ€λ³΅ λ±λ‘λκ³ , λ©λͺ¨λ¦¬ λμκ° λ°μνμ΅λλ€.
μ μ νλκ·Έλ₯Ό νμ©ν μ±κΈν€ ν¨ν΄μ μ μ©νμ΅λλ€.
globalThis.__formationInitializedνλκ·Έλ‘ μ€λ³΅ μ΄κΈ°ν λ°©μ§- MutationObserverλ νμ΄μ§ μΈλ‘λ μ μλ μ 리
- μ λ ν° λͺ¨λ λΉνμ±ν μ λͺ¨λ μ΄λ²€νΈ 리μ€λ ν΄μ
Chrome Extensionκ³Ό SPAμ μλͺ μ£ΌκΈ° μ°¨μ΄λ₯Ό μ΄ν΄νκ² λμμ΅λλ€. 리μμ€ μ 리μ μ€μμ±κ³Ό λ©λͺ¨λ¦¬ κ΄λ¦¬μ λν΄ κΉμ΄ μκ² λ°°μΈ μ μμμ΅λλ€.
μ λ°μ΄νΈ λ΄μ