साइप्रस, एक शक्तिशाली एंड-टू-एंड परीक्षण फ्रेमवर्क, के लिए एक व्यापक गाइड। इसमें इंस्टॉलेशन, टेस्ट लिखना, डीबगिंग, सीआई/सीडी एकीकरण और सर्वोत्तम प्रथाएं शामिल हैं।
साइप्रस: वेब अनुप्रयोगों के लिए अंतिम एंड-टू-एंड परीक्षण गाइड
\n\nआज के तेजी से विकसित हो रहे वेब डेवलपमेंट परिदृश्य में, वेब अनुप्रयोगों की गुणवत्ता और विश्वसनीयता सुनिश्चित करना सर्वोपरि है। एंड-टू-एंड (E2E) परीक्षण यह सत्यापित करने में महत्वपूर्ण भूमिका निभाता है कि उपयोगकर्ता के दृष्टिकोण से एप्लिकेशन के सभी घटक एक साथ निर्बाध रूप से काम करते हैं। साइप्रस एक अग्रणी E2E परीक्षण फ्रेमवर्क के रूप में उभरा है, जो एक डेवलपर-अनुकूल अनुभव, शक्तिशाली सुविधाएँ और उत्कृष्ट प्रदर्शन प्रदान करता है। यह व्यापक गाइड आपको साइप्रस के साथ शुरुआत करने और आपके वेब अनुप्रयोगों का प्रभावी ढंग से परीक्षण करने के लिए आवश्यक सभी जानकारी प्रदान करेगा।
\n\nसाइप्रस क्या है?
\n\nसाइप्रस आधुनिक वेब के लिए बनाया गया अगली पीढ़ी का फ्रंट-एंड परीक्षण उपकरण है। पारंपरिक परीक्षण फ्रेमवर्क के विपरीत जो ब्राउज़र में परीक्षण चलाते हैं, साइप्रस सीधे ब्राउज़र में संचालित होता है, जिससे आपको अपने एप्लिकेशन के व्यवहार पर अद्वितीय नियंत्रण और दृश्यता मिलती है। इसे तेज़, विश्वसनीय और उपयोग में आसान बनाने के लिए डिज़ाइन किया गया है, जिससे यह दुनिया भर के डेवलपर्स और QA इंजीनियरों के बीच एक लोकप्रिय विकल्प बन गया है। साइप्रस जावास्क्रिप्ट में लिखा गया है और ब्राउज़र के भीतर निष्पादित होता है, जिससे यह बहुत प्रभावशाली होता है और एप्लिकेशन के आंतरिक भागों तक अद्वितीय पहुंच प्रदान करता है।
\n\nसाइप्रस के उपयोग के प्रमुख लाभ
\n\n- \n
- डेवलपर-अनुकूल: साइप्रस एक साफ और सहज API प्रदान करता है, जिससे परीक्षण लिखना और डीबग करना आसान हो जाता है। \n
- टाइम ट्रैवल: साइप्रस प्रत्येक परीक्षण कमांड के दौरान आपके एप्लिकेशन की स्थिति के स्नैपशॉट लेता है, जिससे आपको समय में पीछे जाकर किसी भी बिंदु पर ठीक-ठीक क्या हुआ, यह देखने की सुविधा मिलती है। \n
- वास्तविक समय में पुनः लोड: जब आप अपने परीक्षणों में परिवर्तन करते हैं तो साइप्रस स्वचालित रूप से पुनः लोड होता है, जिससे त्वरित प्रतिक्रिया मिलती है। \n
- स्वचालित प्रतीक्षा: साइप्रस क्रियाएं करने से पहले तत्वों के दृश्यमान या इंटरैक्ट करने योग्य होने की स्वचालित रूप से प्रतीक्षा करता है, जिससे स्पष्ट प्रतीक्षा की आवश्यकता समाप्त हो जाती है। \n
- नेटवर्क नियंत्रण: साइप्रस आपको नेटवर्क अनुरोधों और प्रतिक्रियाओं को स्टब करने की अनुमति देता है, जिससे आप विभिन्न परिदृश्यों का अनुकरण कर सकते हैं और अपने एप्लिकेशन की त्रुटि प्रबंधन का परीक्षण कर सकते हैं। \n
- डीबगेबिलिटी: साइप्रस उत्कृष्ट डीबगिंग उपकरण प्रदान करता है, जिसमें एक शक्तिशाली डीबगर और विस्तृत त्रुटि संदेश शामिल हैं। \n
- क्रॉस-ब्राउज़र परीक्षण: साइप्रस क्रोम, फ़ायरफ़ॉक्स, एज और इलेक्ट्रॉन सहित कई ब्राउज़रों का समर्थन करता है। \n
- हेडलेस टेस्टिंग: सीआई/सीडी वातावरण में तेजी से निष्पादन के लिए हेडलेस मोड में परीक्षण चलाएं। \n
- अंतर्निहित अभिकथन: साइप्रस आपके एप्लिकेशन के अपेक्षित व्यवहार को सत्यापित करने के लिए अंतर्निहित अभिकथनों का एक समृद्ध सेट प्रदान करता है। \n
स्थापना और सेटअप
\n\nसाइप्रस के साथ शुरुआत करना सीधा है। इसे स्थापित करने का तरीका यहां दिया गया है:
\n\n- \n
- पूर्व-आवश्यकताएं: सुनिश्चित करें कि आपके सिस्टम पर Node.js और npm (नोड पैकेज मैनेजर) स्थापित हैं। आप उन्हें आधिकारिक Node.js वेबसाइट से डाउनलोड कर सकते हैं। \n
- साइप्रस स्थापित करें: अपना टर्मिनल या कमांड प्रॉम्प्ट खोलें, अपनी प्रोजेक्ट डायरेक्टरी पर नेविगेट करें, और निम्न कमांड चलाएँ: \n \n
- साइप्रस खोलें: एक बार इंस्टॉलेशन पूरा हो जाने के बाद, आप निम्न चलाकर साइप्रस टेस्ट रनर खोल सकते हैं: \n \n
npm install cypress --save-dev
\n \n npx cypress open
\n \n यह कमांड साइप्रस टेस्ट रनर को लॉन्च करेगा, जो आपके परीक्षणों को चलाने और डीबग करने के लिए एक ग्राफिकल इंटरफ़ेस प्रदान करता है।
\nअपना पहला साइप्रस टेस्ट लिखें
\n\nआइए यह सत्यापित करने के लिए एक सरल परीक्षण बनाएं कि किसी वेबसाइट का होमपेज सही ढंग से लोड होता है। अपनी परियोजना की \`cypress/e2e\` डायरेक्टरी में \`example.cy.js\` नामक एक नई फ़ाइल बनाएँ।
\n\n\n// cypress/e2e/example.cy.js\n\ndescribe('My First Test', () => {\n it('Visits the Kitchen Sink', () => {\n cy.visit('https://example.cypress.io')\n cy.contains('type').click()\n cy.url().should('include', '/commands/actions')\n\n cy.get('.action-email')\n .type('fake@email.com')\n .should('have.value', 'fake@email.com')\n })\n})\n
\n\nआइए इस परीक्षण को समझते हैं:
\n\n- \n
- \`describe()\`:\n एक परीक्षण सूट को परिभाषित करता है, जो संबंधित परीक्षणों का एक संग्रह है। \n
- \`it()\`:\n परीक्षण सूट के भीतर एक व्यक्तिगत परीक्षण केस को परिभाषित करता है। \n
- \`cy.visit()\`:\n निर्दिष्ट URL पर नेविगेट करता है। \n
- \`cy.contains()\`:\n निर्दिष्ट टेक्स्ट वाले एक तत्व को ढूँढता है। \n
- \`.click()\`:\n चयनित तत्व पर क्लिक करता है। \n
- \`cy.url()\`:\n पृष्ठ का वर्तमान URL प्राप्त करता है। \n
- \`.should()\`:\n एप्लिकेशन की स्थिति के बारे में एक अभिकथन करता है। \n
- \`cy.get()\`:\n एक CSS सेलेक्टर का उपयोग करके एक तत्व का चयन करता है। \n
- \`.type()\`:\n चयनित तत्व में टेक्स्ट टाइप करता है। \n
- \`.should('have.value', 'fake@email.com')\`:\n पुष्टि करता है कि तत्व का मान 'fake@email.com' के बराबर है। \n
इसे व्यवहार में देखने के लिए साइप्रस टेस्ट रनर में इस परीक्षण को चलाएँ। आपको ब्राउज़र को साइप्रस किचन सिंक वेबसाइट पर नेविगेट करते हुए, "type" लिंक पर क्लिक करते हुए, और URL को सत्यापित करते हुए देखना चाहिए।
\n\nसाइप्रस कमांड्स
\n\nसाइप्रस आपके एप्लिकेशन के साथ इंटरैक्ट करने के लिए कमांड्स की एक विस्तृत श्रृंखला प्रदान करता है। यहां कुछ सबसे अधिक उपयोग किए जाने वाले कमांड्स दिए गए हैं:
\n\n- \n
- \`cy.visit(url)\` :\n निर्दिष्ट URL पर नेविगेट करता है। \n
- \`cy.get(selector)\` :\n एक CSS सेलेक्टर का उपयोग करके एक तत्व का चयन करता है। \n
- \`cy.contains(content)\` :\n निर्दिष्ट टेक्स्ट वाले एक तत्व का चयन करता है। \n
- \`cy.click()\` :\n चयनित तत्व पर क्लिक करता है। \n
- \`cy.type(text)\` :\n चयनित तत्व में टेक्स्ट टाइप करता है। \n
- \`cy.clear()\` :\n एक इनपुट या टेक्स्टएरिया तत्व की सामग्री को साफ करता है। \n
- \`cy.submit()\` :\n एक फॉर्म सबमिट करता है। \n
- \`cy.check()\` :\n एक चेकबॉक्स या रेडियो बटन को चेक करता है। \n
- \`cy.uncheck()\` :\n एक चेकबॉक्स को अनचेक करता है। \n
- \`cy.select(value)\` :\n एक ड्रॉपडाउन से एक विकल्प का चयन करता है। \n
- \`cy.scrollTo(position)\` :\n पृष्ठ को निर्दिष्ट स्थिति तक स्क्रॉल करता है। \n
- \`cy.trigger(event)\` :\n चयनित तत्व पर एक DOM घटना को ट्रिगर करता है। \n
- \`cy.request(url, options)\` :\n निर्दिष्ट URL पर एक HTTP अनुरोध करता है। \n
- \`cy.intercept(route, handler)\` :\n निर्दिष्ट रूट से मेल खाने वाले HTTP अनुरोधों को इंटरसेप्ट करता है। \n
- \`cy.wait(time)\` :\n निर्दिष्ट समय तक प्रतीक्षा करता है। \n
- \`cy.reload()\` :\n वर्तमान पृष्ठ को पुनः लोड करता है। \n
- \`cy.go(direction)\` :\n ब्राउज़र इतिहास में पिछले या अगले पृष्ठ पर नेविगेट करता है। \n
- \`cy.url()\` :\n पृष्ठ का वर्तमान URL प्राप्त करता है। \n
- \`cy.title()\` :\n पृष्ठ का शीर्षक प्राप्त करता है। \n
- \`cy.window()\` :\n विंडो ऑब्जेक्ट प्राप्त करता है। \n
- \`cy.document()\` :\n डॉक्यूमेंट ऑब्जेक्ट प्राप्त करता है। \n
- \`cy.viewport(width, height)\` :\n व्यूपोर्ट का आकार सेट करता है। \n
ये साइप्रस में उपलब्ध कई कमांडों में से कुछ ही हैं। कमांड और उनके विकल्पों की पूरी सूची के लिए साइप्रस डॉक्यूमेंटेशन देखें।
\n\nसाइप्रस में अभिकथन (Assertions)
\n\nअभिकथन का उपयोग आपके एप्लिकेशन के अपेक्षित व्यवहार को सत्यापित करने के लिए किया जाता है। साइप्रस अंतर्निहित अभिकथनों का एक समृद्ध सेट प्रदान करता है जिसका उपयोग आप तत्वों की स्थिति, URL, शीर्षक और बहुत कुछ की जांच करने के लिए कर सकते हैं। अभिकथनों को साइप्रस कमांड के बाद \`.should()\` विधि का उपयोग करके जोड़ा जाता है।
\n\nयहां कुछ सामान्य अभिकथन उदाहरण दिए गए हैं:
\n\n- \n
- \`.should('be.visible')\` :\n पुष्टि करता है कि एक तत्व दृश्यमान है। \n
- \`.should('not.be.visible')\` :\n पुष्टि करता है कि एक तत्व दृश्यमान नहीं है। \n
- \`.should('be.enabled')\` :\n पुष्टि करता है कि एक तत्व सक्षम है। \n
- \`.should('be.disabled')\` :\n पुष्टि करता है कि एक तत्व अक्षम है। \n
- \`.should('have.text', 'expected text')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट टेक्स्ट है। \n
- \`.should('contain', 'expected text')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट टेक्स्ट शामिल है। \n
- \`.should('have.value', 'expected value')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट मान है। \n
- \`.should('have.class', 'expected class')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट क्लास है। \n
- \`.should('have.attr', 'attribute name', 'expected value')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट विशेषता और मान है। \n
- \`.should('have.css', 'css property', 'expected value')\` :\n पुष्टि करता है कि एक तत्व में निर्दिष्ट CSS प्रॉपर्टी और मान है। \n
- \`.should('have.length', expected length)\` :\n पुष्टि करता है कि एक तत्व की निर्दिष्ट लंबाई है (उदाहरण के लिए, एक सूची में तत्वों की संख्या)। \n
आप अपनी विशिष्ट आवश्यकताओं के अनुरूप कस्टम अभिकथन भी बना सकते हैं।
\n\nसाइप्रस टेस्ट लिखने के लिए सर्वोत्तम अभ्यास
\n\nसर्वोत्तम प्रथाओं का पालन करने से आपको अधिक रखरखाव योग्य, विश्वसनीय और कुशल साइप्रस टेस्ट लिखने में मदद मिल सकती है। यहाँ कुछ सिफारिशें दी गई हैं:
\n\n- \n
- स्पष्ट और संक्षिप्त टेस्ट लिखें:\n प्रत्येक टेस्ट को एक विशिष्ट कार्यक्षमता या परिदृश्य पर ध्यान केंद्रित करना चाहिए। अत्यधिक जटिल टेस्ट लिखने से बचें जिन्हें समझना और बनाए रखना मुश्किल हो। \n
- सार्थक टेस्ट नामों का उपयोग करें:\n अपने टेस्ट को ऐसे वर्णनात्मक नाम दें जो स्पष्ट रूप से इंगित करें कि वे क्या परीक्षण कर रहे हैं। \n
- हार्डकोडिंग मानों से बचें:\n उन मानों को संग्रहीत करने के लिए चर या कॉन्फ़िगरेशन फ़ाइलों का उपयोग करें जो समय के साथ बदल सकते हैं। \n
- कस्टम कमांड का उपयोग करें:\n पुनः प्रयोज्य तर्क को समाहित करने और अपने टेस्ट को अधिक पठनीय बनाने के लिए कस्टम कमांड बनाएं। \n
- टेस्ट को अलग करें:\n प्रत्येक टेस्ट अन्य टेस्ट से स्वतंत्र होना चाहिए। पिछले टेस्ट से एप्लिकेशन की स्थिति पर निर्भर रहने से बचें। \n
- टेस्ट के बाद सफाई करें:\n यह सुनिश्चित करने के लिए प्रत्येक टेस्ट के बाद एप्लिकेशन की स्थिति रीसेट करें कि बाद के टेस्ट एक साफ स्लेट से शुरू हों। \n
- डेटा विशेषताओं का उपयोग करें:\n अपने टेस्ट में तत्वों का चयन करने के लिए डेटा विशेषताओं (जैसे, \`data-testid\`) का उपयोग करें। डेटा विशेषताओं में CSS क्लासेस या IDs की तुलना में बदलने की संभावना कम होती है, जिससे आपके टेस्ट UI में परिवर्तनों के प्रति अधिक लचीले बनते हैं। \n
- स्पष्ट प्रतीक्षा से बचें:\n साइप्रस स्वचालित रूप से तत्वों के दृश्यमान या इंटरैक्ट करने योग्य होने की प्रतीक्षा करता है। स्पष्ट प्रतीक्षा (जैसे, \`cy.wait()\`) का उपयोग करने से बचें जब तक कि बिल्कुल आवश्यक न हो। \n
- उपयोगकर्ता प्रवाह का परीक्षण करें:\n व्यक्तिगत घटकों के बजाय उपयोगकर्ता प्रवाह का परीक्षण करने पर ध्यान केंद्रित करें। यह आपको यह सुनिश्चित करने में मदद करेगा कि आपका एप्लिकेशन उपयोगकर्ता के दृष्टिकोण से सही ढंग से काम करता है। \n
- नियमित रूप से टेस्ट चलाएं:\n साइप्रस टेस्ट को अपनी CI/CD पाइपलाइन में एकीकृत करें और विकास प्रक्रिया में शुरुआती बग्स को पकड़ने के लिए उन्हें नियमित रूप से चलाएं। \n
उन्नत साइप्रस तकनीकें
\n\nस्टबिंग और मॉकिंग
\n\nसाइप्रस आपको नेटवर्क अनुरोधों और प्रतिक्रियाओं को स्टब करने की अनुमति देता है, जिससे आप विभिन्न परिदृश्यों का अनुकरण कर सकते हैं और अपने एप्लिकेशन की त्रुटि प्रबंधन का परीक्षण कर सकते हैं। यह उन सुविधाओं का परीक्षण करने के लिए विशेष रूप से उपयोगी है जो बाहरी API या सेवाओं पर निर्भर करती हैं।
\n\nएक नेटवर्क अनुरोध को स्टब करने के लिए, आप \`cy.intercept()\` कमांड का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिया गया कोड \`/api/users\` पर एक GET अनुरोध को स्टब करता है और एक मॉक प्रतिक्रिया देता है:
\n\n\ncy.intercept('GET', '/api/users', {\n statusCode: 200,\n body: [\n { id: 1, name: 'John Doe' },\n { id: 2, name: 'Jane Doe' }\n ]\n}).as('getUsers')\n
\n\nफिर आप \`cy.wait('@getUsers')\` का उपयोग करके इंटरसेप्ट किए गए अनुरोध की प्रतीक्षा कर सकते हैं और सत्यापित कर सकते हैं कि आपका एप्लिकेशन मॉक प्रतिक्रिया को सही ढंग से संभालता है।
\n\nस्थानीय स्टोरेज और कुकीज़ के साथ काम करना
\n\nसाइप्रस स्थानीय स्टोरेज और कुकीज़ के साथ इंटरैक्ट करने के लिए कमांड प्रदान करता है। आप अपने परीक्षणों में स्थानीय स्टोरेज और कुकीज़ को सेट करने, प्राप्त करने और साफ़ करने के लिए इन कमांडों का उपयोग कर सकते हैं।
\n\nएक स्थानीय स्टोरेज आइटम सेट करने के लिए, आप विंडो ऑब्जेक्ट तक पहुँचने के लिए \`cy.window()\` कमांड का उपयोग कर सकते हैं और फिर \`localStorage.setItem()\` विधि का उपयोग कर सकते हैं। उदाहरण के लिए:
\n\n\ncy.window().then((win) => {\n win.localStorage.setItem('myKey', 'myValue')\n})\n
\n\nएक स्थानीय स्टोरेज आइटम प्राप्त करने के लिए, आप \`cy.window()\` कमांड का उपयोग कर सकते हैं और फिर \`localStorage.getItem()\` विधि का उपयोग कर सकते हैं। उदाहरण के लिए:
\n\n\ncy.window().then((win) => {\n const value = win.localStorage.getItem('myKey')\n expect(value).to.equal('myValue')\n})\n
\n\nएक कुकी सेट करने के लिए, आप \`cy.setCookie()\` कमांड का उपयोग कर सकते हैं। उदाहरण के लिए:
\n\n\ncy.setCookie('myCookie', 'myCookieValue')\n
\n\nएक कुकी प्राप्त करने के लिए, आप \`cy.getCookie()\` कमांड का उपयोग कर सकते हैं। उदाहरण के लिए:
\n\n\ncy.getCookie('myCookie').should('have.property', 'value', 'myCookieValue')\n
\n\nफ़ाइल अपलोड को संभालना
\n\nसाइप्रस \`cypress-file-upload\` नामक एक प्लगइन प्रदान करता है जो आपके परीक्षणों में फ़ाइल अपलोड को सरल बनाता है। प्लगइन स्थापित करने के लिए, निम्न कमांड चलाएँ:
\n\nnpm install -D cypress-file-upload
\n\nफिर, अपनी \`cypress/support/commands.js\` फ़ाइल में निम्न पंक्ति जोड़ें:
\n\n\nimport 'cypress-file-upload';\n
\n\nआप फिर एक फ़ाइल अपलोड करने के लिए \`cy.uploadFile()\` कमांड का उपयोग कर सकते हैं। उदाहरण के लिए:
\n\n\ncy.get('input[type=\"file\"]').attachFile('example.txt')\n
\n\nIFrames के साथ काम करना
\n\nIFrames का परीक्षण करना मुश्किल हो सकता है, लेकिन साइप्रस उनके साथ इंटरैक्ट करने का एक तरीका प्रदान करता है। आप एक IFrame के लोड होने की प्रतीक्षा करने के लिए \`cy.frameLoaded()\` कमांड का उपयोग कर सकते हैं, और फिर IFrame के दस्तावेज़ ऑब्जेक्ट को प्राप्त करने के लिए \`cy.iframe()\` कमांड का उपयोग कर सकते हैं।
\n\n\ncy.frameLoaded('#myIframe')\ncy.iframe('#myIframe').find('button').click()\n
\n\nसाइप्रस और सतत एकीकरण/सतत परिनियोजन (CI/CD)
\n\nअपने CI/CD पाइपलाइन में साइप्रस को एकीकृत करना आपके एप्लिकेशन की गुणवत्ता सुनिश्चित करने के लिए आवश्यक है। आप अपने CI/CD वातावरण में साइप्रस परीक्षणों को हेडलेस मोड में चला सकते हैं। यहां बताया गया है:
\n\n- \n
- साइप्रस स्थापित करें:\n सुनिश्चित करें कि साइप्रस आपके प्रोजेक्ट में एक निर्भरता के रूप में स्थापित है। \n
- CI/CD कॉन्फ़िगर करें:\n प्रत्येक निर्माण के बाद साइप्रस परीक्षण चलाने के लिए अपनी CI/CD पाइपलाइन को कॉन्फ़िगर करें। \n
- साइप्रस हेडलेसली चलाएँ:\n हेडलेस मोड में साइप्रस परीक्षण चलाने के लिए \`cypress run\` कमांड का उपयोग करें। \n
उदाहरण CI/CD कॉन्फ़िगरेशन (गिटहब एक्शन का उपयोग करके):
\n\n\nname: Cypress Tests\n\non:\n push:\n branches: [main]\n pull_request:\n branches: [main]\n\njobs:\n cypress-run:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - uses: actions/setup-node@v3\n with:\n node-version: 16\n - name: Install dependencies\n run: npm install\n - name: Cypress run\n uses: cypress-io/github-action@v5\n with:\n start: npm start\n wait-on: 'http://localhost:3000'\n
\n\nयह कॉन्फ़िगरेशन साइप्रस परीक्षणों को तब चलाएगा जब भी \`main\` ब्रांच पर कोड पुश किया जाएगा या \`main\` ब्रांच के खिलाफ एक पुल अनुरोध बनाया जाएगा। \`cypress-io/github-action\` एक्शन गिटहब एक्शन में साइप्रस परीक्षणों को चलाने की प्रक्रिया को सरल बनाता है।
\n\nसाइप्रस टेस्ट डीबग करना
\n\nसाइप्रस आपके परीक्षणों में समस्याओं की पहचान करने और उन्हें ठीक करने में आपकी मदद करने के लिए उत्कृष्ट डीबगिंग उपकरण प्रदान करता है। साइप्रस परीक्षणों को डीबग करने के लिए यहां कुछ सुझाव दिए गए हैं:
\n\n- \n
- साइप्रस टेस्ट रनर का उपयोग करें:\n साइप्रस टेस्ट रनर आपके परीक्षणों को चलाने और डीबग करने के लिए एक दृश्य इंटरफ़ेस प्रदान करता है। आप अपने परीक्षणों को एक समय में एक कमांड करके कदम बढ़ा सकते हैं, एप्लिकेशन की स्थिति का निरीक्षण कर सकते हैं, और विस्तृत त्रुटि संदेश देख सकते हैं। \n
- \`cy.pause()\` कमांड का उपयोग करें:\n \`cy.pause()\` कमांड आपके परीक्षण के निष्पादन को रोकता है और आपको ब्राउज़र के डेवलपर टूल में एप्लिकेशन की स्थिति का निरीक्षण करने की अनुमति देता है। \n
- \`cy.debug()\` कमांड का उपयोग करें:\n \`cy.debug()\` कमांड चयनित तत्व को कंसोल पर प्रिंट करता है, जिससे आप उसके गुणों और विशेषताओं का निरीक्षण कर सकते हैं। \n
- ब्राउज़र के डेवलपर टूल का उपयोग करें:\n ब्राउज़र के डेवलपर टूल आपके एप्लिकेशन के बारे में ढेर सारी जानकारी प्रदान करते हैं, जिसमें DOM, नेटवर्क अनुरोध और कंसोल लॉग शामिल हैं। \n
- त्रुटि संदेशों को ध्यान से पढ़ें:\n साइप्रस विस्तृत त्रुटि संदेश प्रदान करता है जो आपको त्रुटि के कारण की पहचान करने में मदद कर सकता है। त्रुटि संदेश और स्टैक ट्रेस पर ध्यान दें। \n
साइप्रस बनाम अन्य परीक्षण फ्रेमवर्क
\n\nजबकि साइप्रस एक शक्तिशाली एंड-टू-एंड परीक्षण फ्रेमवर्क है, यह समझना आवश्यक है कि यह अन्य लोकप्रिय विकल्पों की तुलना में कैसा है। यहां एक संक्षिप्त अवलोकन दिया गया है:
\n\n- \n
- सेलेनियम:\n सेलेनियम एक व्यापक रूप से उपयोग किया जाने वाला ऑटोमेशन टेस्टिंग फ्रेमवर्क है। यह लचीला है और कई भाषाओं का समर्थन करता है, लेकिन इसे सेट अप करना और बनाए रखना जटिल हो सकता है। साइप्रस एक सरल और अधिक डेवलपर-अनुकूल अनुभव प्रदान करता है, विशेष रूप से जावास्क्रिप्ट-आधारित अनुप्रयोगों के लिए। \n
- पपेटियर:\n पपेटियर एक नोड लाइब्रेरी है जो हेडलेस क्रोम या क्रोमियम को नियंत्रित करने के लिए एक उच्च-स्तरीय API प्रदान करती है। यह स्क्रैपिंग और ब्राउज़र कार्यों को स्वचालित करने के लिए उत्कृष्ट है, लेकिन एंड-टू-एंड परीक्षण के लिए साइप्रस की तुलना में अधिक मैन्युअल कॉन्फ़िगरेशन की आवश्यकता हो सकती है। \n
- प्लेराइट:\n प्लेराइट माइक्रोसॉफ्ट द्वारा विकसित एक और क्रॉस-ब्राउज़र ऑटोमेशन फ्रेमवर्क है। यह पपेटियर के साथ समानताएं साझा करता है लेकिन व्यापक ब्राउज़र समर्थन प्रदान करता है। साइप्रस में एक अद्वितीय टाइम-ट्रैवलिंग डीबगर और अधिक एकीकृत परीक्षण अनुभव है। \n
फ्रेमवर्क का चुनाव आपकी परियोजना की विशिष्ट आवश्यकताओं और ज़रूरतों पर निर्भर करता है। साइप्रस आधुनिक वेब अनुप्रयोगों के लिए एक उत्कृष्ट विकल्प है जिन्हें तेज़, विश्वसनीय और डेवलपर-अनुकूल एंड-टू-एंड परीक्षण की आवश्यकता होती है।
\n\nव्यवहारिक उदाहरण: साइप्रस कैसे काम करता है
\n\nआइए कुछ वास्तविक दुनिया के उदाहरण देखें कि साइप्रस का उपयोग विभिन्न प्रकार के वेब अनुप्रयोगों का परीक्षण करने के लिए कैसे किया जा सकता है:
\n\nएक ई-कॉमर्स एप्लिकेशन का परीक्षण
\n\nआप एक ई-कॉमर्स एप्लिकेशन में विभिन्न उपयोगकर्ता प्रवाह का परीक्षण करने के लिए साइप्रस का उपयोग कर सकते हैं, जैसे:
\n\n- \n
- उत्पादों की खोज करना \n
- कार्ट में उत्पाद जोड़ना \n
- चेकआउट करना और ऑर्डर देना \n
- खाता सेटिंग्स प्रबंधित करना \n
यहां एक साइप्रस परीक्षण का एक उदाहरण दिया गया है जो यह सत्यापित करता है कि एक उपयोगकर्ता सफलतापूर्वक अपने कार्ट में एक उत्पाद जोड़ सकता है:
\n\n\nit('Adds a product to the cart', () => {\n cy.visit('/products')\n cy.get('.product-card').first().find('button').click()\n cy.get('.cart-count').should('have.text', '1')\n})\n
\n\nएक सोशल मीडिया एप्लिकेशन का परीक्षण
\n\nआप एक सोशल मीडिया एप्लिकेशन में उपयोगकर्ता इंटरैक्शन का परीक्षण करने के लिए साइप्रस का उपयोग कर सकते हैं, जैसे:
\n\n- \n
- एक नई पोस्ट बनाना \n
- एक पोस्ट को लाइक करना \n
- एक पोस्ट पर टिप्पणी करना \n
- अन्य उपयोगकर्ताओं को फॉलो करना \n
यहां एक साइप्रस परीक्षण का एक उदाहरण दिया गया है जो यह सत्यापित करता है कि एक उपयोगकर्ता सफलतापूर्वक एक नई पोस्ट बना सकता है:
\n\n\nit('Creates a new post', () => {\n cy.visit('/profile')\n cy.get('#new-post-textarea').type('Hello, world!')\n cy.get('#submit-post-button').click()\n cy.get('.post').first().should('contain', 'Hello, world!')\n})\n
\n\nएक बैंकिंग एप्लिकेशन का परीक्षण
\n\nबैंकिंग अनुप्रयोगों के लिए, साइप्रस का उपयोग महत्वपूर्ण कार्यात्मकताओं का परीक्षण करने के लिए किया जा सकता है जैसे:
\n\n- \n
- सुरक्षित रूप से लॉगिन करना \n
- खाता शेष की जांच करना \n
- धन हस्तांतरित करना \n
- लाभार्थियों का प्रबंधन करना \n
धन हस्तांतरण को सत्यापित करने के लिए एक परीक्षण ऐसा दिख सकता है (सुरक्षा के लिए उचित स्टबिंग के साथ):
\n\n\nit('Transfers funds successfully', () => {\n cy.visit('/transfer')\n cy.get('#recipient-account').type('1234567890')\n cy.get('#amount').type('100')\n cy.intercept('POST', '/api/transfer', { statusCode: 200, body: { success: true } }).as('transfer')\n cy.get('#transfer-button').click()\n cy.wait('@transfer')\n cy.get('.success-message').should('be.visible')\n})\n
\n\nनिष्कर्ष
\n\nसाइप्रस एक शक्तिशाली और बहुमुखी एंड-टू-एंड परीक्षण फ्रेमवर्क है जो आपको अपने वेब अनुप्रयोगों की गुणवत्ता और विश्वसनीयता सुनिश्चित करने में मदद कर सकता है। इसका डेवलपर-अनुकूल API, शक्तिशाली सुविधाएँ और उत्कृष्ट प्रदर्शन इसे दुनिया भर के डेवलपर्स और QA इंजीनियरों के बीच एक लोकप्रिय विकल्प बनाते हैं। इस गाइड में उल्लिखित सर्वोत्तम प्रथाओं का पालन करके, आप प्रभावी साइप्रस परीक्षण लिख सकते हैं जो आपको विकास प्रक्रिया में शुरुआती बग्स को पकड़ने और अपने उपयोगकर्ताओं को उच्च-गुणवत्ता वाला सॉफ़्टवेयर प्रदान करने में मदद करेंगे।
\n\nजैसे-जैसे वेब एप्लिकेशन विकसित होते रहेंगे, एंड-टू-एंड परीक्षण का महत्व केवल बढ़ेगा। साइप्रस को अपनाना और इसे अपनी विकास कार्यप्रवाह में एकीकृत करना आपको अधिक मजबूत, विश्वसनीय और उपयोगकर्ता-अनुकूल वेब अनुभव बनाने में सशक्त करेगा।