[Cypress Studio] π λμ± κ°νΈν΄μ§ μΉ ν μ€νΈ μλν ν΄
Cypress Studio μκ°
μμ μκ°μ μλ°μ€ν¬λ¦½νΈμ μ΅μνλ€λ©΄ μ½κ² μ ν μ μλ ν μ€νΈ λΌμ΄λΈλ¬λ¦¬μΈ cypress μ λν΄μ κΈ°λ³Έμ μΈ μ¬μ©λ²μ μμ보μλ€.
--------------------------------------------------
λ§ν¬ λ°μ€
---------------------------------------------------
μ΄μ²λΌ κΈ°λ³Έμ μΌλ‘ ν μ€ν μ μν λμμ μΌμΌν νλ‘κ·Έλλ¨Έκ° μ½λλ₯Ό μ§μΌ νλλ°, κ·Έλ¬λ©΄ λΉμ 곡μνΉμ λΉκ°λ° μ§κ΅°μ΄ E2E ν μ€νΈλ₯Ό νκΈ° μν΄μ νλ‘κ·Έλλ°μ λ°°μμΌ νλ λ¬λ 컀λΈκ° μμΌλ©°, λν ν μ€νΈ μΌμ΄μ€ μλ§νΌ λΉμ·ν E2E ν μ€νΈ μ½λλ₯Ό λ°λ³΅μ μΌλ‘ μμ±ν΄μΌ νμ¬ ν μ€νΈ μ½λ μμ± μκ°μ΄ μ€λκ±Έλ¦¬κ² λλ€λ μμ¬μ΄μ μ΄ μλ€. κ·Έλμ μ΄λ₯Ό μ’ λ νΈνκ² νλ κΈ°λ₯μ΄ μμ΄ μκ°ν΄λ³Έλ€.
Cypress Studioλ Cypressμμ μ 곡νλ ν μ€νΈ μ½λ μλν κΈ°λ₯μΌλ‘, μΉ μ ν리μΌμ΄μ κ³Ό μνΈμμ©νλ©΄μ ν μ€νΈ μ½λλ₯Ό μμμ μμ±ν΄μ£Όλ κΈ°λ₯μ΄λ€. μ¦, μ½λλ₯Ό μμ±νκ³ μ¬μ©μ λμ μλ리μ€λ₯Ό ꡬμ±νλκ²μ΄ μλ, κ±°κΎΈλ‘ μ¬μ©μμ λ§μ°μ€, ν€λ³΄λ λ±μ μ‘μ κ³Ό νμ΄μ§μ λμμ κΈ°λ‘νμ¬ μλμΌλ‘ μ½λλ₯Ό μμ±μμΌ μ€λ€.
μλ₯Όλ€μ΄ λ²νΌ ν΄λ¦κ³Ό κ°μ λμμ λν ν¨μλ₯Ό μ½λ© μμ΄ λ§λ€μ΄μ£Όλ©°, λν νΉμ λ²νΌμ λν μ리먼νΈμ μμ΄λλ ν΄λμ€λ₯Ό μΌμΌν μΆμ ν΄μ μνμμμ΄ ν΄λ¦λ§ νλ©΄ μλμΌλ‘ μ νμλ₯Ό μΆμ ν΄ λ§λ€μ΄μ€ ν¨μ¬ νΈν΄μ§λ€. κ·Έλμ ν μ€νΈ μ½λλ₯Ό μλμΌλ‘ μμ±νλ μκ°κ³Ό λ²κ±°λ‘μμ μ€μΌ μ μμ΄, Cypressλ₯Ό μλ‘ μ¬μ©νκ±°λ νμ΅νλ μ¬λλ€μκ² μ μ©νκ³ λΉ λ₯΄κ² ν μ€νΈλ₯Ό λ§λ€ μ μκ² λμ΄ μ 무 ν¨μ¨μΌ λμΌ μ μλ€.
λ€λ§ Cypress Studioλ μμ§ μ€νμ μΈ κΈ°λ₯μ΄λΌ μμ±ν λꡬλ μλμ μ μνμ. μλ₯Όλ€μ΄ Cypress Studioλ νμ¬ E2E ν μ€νΈ μμ±μλ§ μ¬μ©ν μ μμΌλ©°, μ¬λ¬ μΆμ²μ λλ©μΈμ μ¬μ©νλ μμ± ν μ€νΈλ₯Ό μ§μνμ§ μλλ€.
Cypress Studio μ¬μ©λ²
Cypress μ€μΉνκΈ°
κΈ°μ‘΄ cypressλ₯Ό μ€μΉνμ¬ μ¬μ©νκ³ μλ λ μλΆλ€μ΄λΌλ©΄, μ΄ λ¨κ³λ κ·Έλ₯ 건λλ°μ΄λ λλ€. νμ§λ§ cypressλ₯Ό μ²μ μ νμλ λΆλ€μ https://www.cypress.io/install λ§ν¬μμ [Download Cypress.zip] λ²νΌμ λλ¬ exe νμΌμ λ€μ΄λ°μ.
κ·Έλ¦¬κ³ μμΆ νμΌμ μ μ νκ³³μ μμΆμ νκ³ κ²½λ‘μ νμΌμ μ€ννλ©΄, λ°μΉν¨λ(Launchpad) νλ©΄μ΄ λμμ§κ² λλ€.
Cypress Studio μ€μ νκΈ°
μ΄κΈ° νλ‘μ νΈ ν΄λ μμ±
λ¨Όμ μ€μμ Drag your project directory here or browse manually 문ꡬ λ²νΌμ ν΄λ¦νκ³ ν μ€νΈ μ½λλ₯Ό κ΄λ¦¬ν νλ‘μ νΈ ν΄λλ₯Ό μ νν΄μ€λ€. μ²μμ΄λΌλ©΄ λΉ ν΄λλ₯Ό μμ±νκ³ λ±λ‘ν΄ μ£Όλ©΄ λλ€.
νλ‘μ νΈ ν΄λλ₯Ό λ±λ‘νλ©΄, μλμ κ°μ νλ©΄μΌλ‘ λμ΄κ°κ² λκ³ μ¬μ§μ λ°λΌ μ§νν΄μ€λ€.
ν μ€νΈ νμΌ μμ±
λΈλΌμ°μ λ₯Ό μ ννλ©΄, λ§μΉ μΉμ±κ³Ό κ°μ΄ cypress μ μ© μΉμ ν리μΌμ΄μ μ΄ μ μ°½μΌλ‘ μ΄λ¦¬κ² λλ€. μ ν μ€νΈ νμΌμ μμ±νλλ‘ νμ.
Studio μ€μ νμ±ν νκΈ°
μ¬μ©μμ ν€λ³΄λ, λ§μ°μ€ ν΄λ¦κ³Ό κ°μ μ¬λ¬ λμμ κΈ°λ‘νμ¬ μλμΌλ‘ ν μ€νΈ μ½λλ‘ λ³ννκΈ° μν΄μλ μΈν μμ μ€μ κ° νλκ° νμνλ€.
λ¨Όμ μΈν
μ λλ¬ νμΌμ μ΄μ΄ νΈμ§ν μλν°λ₯Ό μ§μ ν΄μ£Όκ³ , cypress.config.js νμΌμ μ΄μ΄μ μμ experimentalStudio: trueλ₯Ό μλμ κ°μ΄ μΆκ°ν΄μ€λ€.
module.exports = {
e2e: {
// μλ ν
μ€νΈ μ½λ μμ± μ€μ
experimentalStudio: true,
setupNodeEvents(on, config) {
// implement node event listeners here
},
},
};
μ½λλ₯Ό μ μ₯νλ©΄, cypress studio ν¬λ‘¬ μΉμ±μ΄ μ¬λΆν λκ² λκ³ , μλ¨μ 'μλνλ ν μ€νΈ μννΈμ¨μ΄μ μν΄ μ μ΄λκ³ μμ΅λλ€'λΌκ³ νκΈ°κ° λλ©°, λ€μ μΈν μΌλ‘ λ€μ΄κ°μ Project settings λ₯Ό ν΄λ¦νκ³ μ€ν¬λ‘€μ λ΄λ¦¬λ©΄ μλμ κ°μ΄ μ΅μ μ΄ νμ±νκ° λ κ²μ νμΈν μ μλ€.
Cypress Studio μμνκΈ°
ν μ€νΈ λμ μ½λλ₯Ό μμ νλ €λ©΄ μμμ μμ±ν spec.cy.js νμΌμ μμ νλ©΄ λλ€. λ€λ§ μ°λ¦¬λ μ¬μ©μμ λμμ κΈ°λ‘ν΄μ μλμΌλ‘ ν μ€νΈ μ½λλ₯Ό μμ±νλ κΈ°λ₯μ νμ©ν κ²μ΄κΈ° λλ¬Έμ, μΉμ±μμ cypress studioλ₯Ό μ§ννλλ‘ ν΄λ³΄μ.
μλ ν μ€νΈ κΈ°λ‘ & μμ±
λ¨Όμ κΈ°λ‘μ μμνκΈ° μν΄μ μλμ κ°μ΄ template spec ν μ€νΈ 문ꡬ μμ λ§μ°μ€ 컀μλ₯Ό μ΄μ§ μ¬λ €λ³΄λ©΄ μμ λ§νμ μΌλ‘ Add New Test λ¬Έκ΅¬κ° λ¨λ©΄μ ν΄λ¦μ΄ νμ±ν λλ€.
κ·Έλ¬λ©΄ ν μ€νΈν μΉνμ΄μ§λ₯Ό μ λ ₯νλΌκ³ λ¨κ²λκ³ μ¬κΈ°μ κ΅λ΄ 보νΈμ μΈ μ¬μ΄νΈλ₯Έ λ€μ΄λ² www.naver.com μ μ λ ₯ν΄λ³΄μ.
Continue λ²νΌμ λλ₯΄κ² λλ©΄ λ€μ΄λ² μΉνμ΄μ§λ‘ μ΄λνκ² λλλ°, μ΄μ μ΄ μΉνμ΄μ§μμ μ¬μ©μκ° νμ, λμμ νκ²λλ©΄ μ΄μ λ§κ² μΌμͺ½ λ‘κ·Έ λ©λ΄μ κΈ°λ‘μ΄ λκ² λλ€.
μλ₯Όλ€μ΄ λ€μ΄λ² κ²μμ°½μ ν μ€νΈλ₯Ό μ λ ₯νκ³ μ°μΈ‘μ λ보기 λ²νΌμ ν΄λ¦νλ λμμ ννλ©΄, μ’μΈ‘μ μ΄μ λν νμκ°μ΄ κΈ°λ‘λκ² λλ©°, Save Commands λ²νΌμ λλ₯΄λ©΄ μ΄λ₯Ό μ½λλ‘ λ³ννκ² λλ€.
μ€μ ν
μ€νΈ μ½λλ μμμ μμ±νκ³ μ€νν spec.cy.js νμΌμ μ€ννλ©΄ μλμ κ°μ΄ μ¬μ©μμ νμκ° μλμΌλ‘ ν
μ€νΈ μ½λλ‘ λ³νλ κ²μ νμΈν μ μλ€.
// template specμ΄λΌλ ν
μ€νΈ μ€μνΈλ₯Ό μ μν©λλ€.
describe('template spec', () => {
/* ==== Test Created with Cypress Studio ==== */
// λ€μ΄λ²λΌλ ν
μ€νΈ μΌμ΄μ€λ₯Ό μ μν©λλ€.
it('λ€μ΄λ²', function() {
/* ==== Generated with Cypress Studio ==== */
cy.visit('www.naver.com'); // www.naver.com λΌλ μΉμ¬μ΄νΈλ₯Ό λ°©λ¬Έν©λλ€.
cy.get('#query').clear('r'); // idκ° queryμΈ μμλ₯Ό μ°Ύμμ rμ΄λΌλ λ¬Έμλ₯Ό μ§μλλ€.
cy.get('#query').type('κ²μμ΄λ₯Ό μ
λ ₯νμΈμ'); // idκ° queryμΈ μμμ 'κ²μμ΄λ₯Ό μ
λ ₯νμΈμ'λΌκ³ νμ΄νν©λλ€.
cy.get('#search-btn').click(); // idκ° search-btnμΈ μμλ₯Ό ν΄λ¦ν©λλ€.
/* ==== End Cypress Studio ==== */
});
})
μ΄λ κ² μμ±λ ν μ€νΈ μ½λ νμΌμ μ€νμν€λ €λ©΄, GUI μ±μμ μ§μ νμΌμ ν΄λ¦νλ©΄ μλμΌλ‘ μ§νλκ² λλ€.
ν μ€νΈ λͺ λ Ή μ΄μ΄μ μΆκ°νκΈ°
λ§μΌ μΆκ°μ μΈ ν μ€ν λμ μ½λκ° νμνλ€λΌκ³ νλ€λ©΄, μλ μ¬μ§μ²λΌ ν μ€νΈ κ·Έλ£Ήμ λ§μ°μ€ 컀μλ₯Ό κ°λ€λλ©΄, 'Add Commands to Test' λ§μΆ©μ μ΄ λ¨κ² λλ€. μ΄κ±Έ ν΄λ¦νλ©΄ λ€μ Cypress Studio κ° λ°λλλ©° λμ μ½λ λ³νμ μννκ² λλ€. μΆκ° μμ μ νλ€ μ΄μ μ²λΌ 컀맨λλ₯Ό μ μ₯ν΄μ£Όλ©΄ λλ€.
μλ¦¬λ¨ΌνΈ κ° μΆμ νκΈ°
λ΄κ° ν΄λ¦ν λ©λ΄λ λ²νΌμ css μ νμλ₯Ό μκ³ μΆμ λκ° μμ κ²μ΄λ€. μ΄λ° κ²½μ° κ°λ°μ λꡬλ₯Ό μ΄μ΄ μΌμΌν μΆμ νκΈ° 보λ€λ cypressμμ μ 곡ν΄μ£Όλ κΈ°λ₯μ μ΄μ©νλ©΄ λλ€. μλμ κ°μ΄ κ°νΈν μ λ ν°λ₯Ό μ»μ μ μλ€.
μ°Έκ³ λ¬Έν
https://docs.cypress.io/guides/references/cypress-studio
ν μ€νΈ μ½λ μλμΌλ‘ λ§λ€κΈ° feat. Cypress Studio | μΉ΄μΉ΄μ€μν°ν μΈλ¨ΌνΈ FE κΈ°μ λΈλ‘κ·Έ