मैं एक बहुत लंबे फॉर्म पेज का परीक्षण कर रहा हूं जिसमें 12 इनपुट फ़ील्ड हैं। मैं मूल रूप से फॉर्म पेज की ऑटोसेविंग फीचर का परीक्षण कर रहा हूं। तो परीक्षण तर्क यह है कि प्रत्येक फ़ील्ड पर जाएं, एक मान टाइप करें, फिर जांचें कि क्या हेडर में saving और saved स्थिति संदेश है। फिर पृष्ठ को पुनः लोड करें और देखें कि क्या इनपुट फ़ील्ड अपना मान बरकरार रख रहा है। उदाहरण के लिए।

// Aliases for the input fields
cy.get('div[name="title"] input').as('Title');
cy.get('div[name="location"] input').as('Location');
cy.get('div[name="duration"] input').as('Duration');
....


cy.get('@Title').type(randomTitle);


// @Testing save status and reload -------------------
cy.get('.form-header').within(() => {
  cy.contains('SAVING');
  cy.contains('SAVED');
});
cy.reload();
//----------------------------------------------------


cy.get('@Title').then((elem) => {
  expect(elem.val()).to.equal(randomTitle);
});

सब कुछ ठीक काम कर रहा है, हालांकि मैं उम्मीद कर रहा था कि क्या मैं इसे और अधिक क्लीनर बनाने के लिए कोड को दोबारा कर सकता हूं। केवल एक समस्या जो मुझे दिखाई दे रही है, वह यह है कि मैं अनिवार्य रूप से @Testing save status and reload कोड ब्लॉक को 12 बार दोहरा रहा हूं। क्या वैसे भी सरू में मैं एक लाइनर के साथ उस विशेष ब्लॉक को चलाने के लिए एक उपनाम, चर या कमांड बना सकता हूं? क्या यह संभव है?

0
anoop chandran 4 सितंबर 2020, 13:16

1 उत्तर

सबसे बढ़िया उत्तर

मैं एक ऐसा मूर्ख हूँ, इस प्रश्न का उत्तर शीर्षक में ही है। मुझे बस इतना करना था कि कमांड फाइल में इस तरह से एक कमांड बनाई जाए।

const checkSaveStatus = () => {
cy.get('.form-header').within(() => {
  cy.contains('SAVING');
  cy.contains('SAVED');
});
cy.reload();
};
Cypress.Commands.add('checkSaveStatus', checkSaveStatus);

और इसे मेरे परीक्षणों में इस तरह बुलाओ

cy.checkSaveStatus();
1
anoop chandran 5 सितंबर 2020, 15:32