हिन्दी

साइप्रस, एक शक्तिशाली एंड-टू-एंड परीक्षण फ्रेमवर्क, के लिए एक व्यापक गाइड। इसमें इंस्टॉलेशन, टेस्ट लिखना, डीबगिंग, सीआई/सीडी एकीकरण और सर्वोत्तम प्रथाएं शामिल हैं।

साइप्रस: वेब अनुप्रयोगों के लिए अंतिम एंड-टू-एंड परीक्षण गाइड

\n\n

आज के तेजी से विकसित हो रहे वेब डेवलपमेंट परिदृश्य में, वेब अनुप्रयोगों की गुणवत्ता और विश्वसनीयता सुनिश्चित करना सर्वोपरि है। एंड-टू-एंड (E2E) परीक्षण यह सत्यापित करने में महत्वपूर्ण भूमिका निभाता है कि उपयोगकर्ता के दृष्टिकोण से एप्लिकेशन के सभी घटक एक साथ निर्बाध रूप से काम करते हैं। साइप्रस एक अग्रणी E2E परीक्षण फ्रेमवर्क के रूप में उभरा है, जो एक डेवलपर-अनुकूल अनुभव, शक्तिशाली सुविधाएँ और उत्कृष्ट प्रदर्शन प्रदान करता है। यह व्यापक गाइड आपको साइप्रस के साथ शुरुआत करने और आपके वेब अनुप्रयोगों का प्रभावी ढंग से परीक्षण करने के लिए आवश्यक सभी जानकारी प्रदान करेगा।

\n\n

साइप्रस क्या है?

\n\n

साइप्रस आधुनिक वेब के लिए बनाया गया अगली पीढ़ी का फ्रंट-एंड परीक्षण उपकरण है। पारंपरिक परीक्षण फ्रेमवर्क के विपरीत जो ब्राउज़र में परीक्षण चलाते हैं, साइप्रस सीधे ब्राउज़र में संचालित होता है, जिससे आपको अपने एप्लिकेशन के व्यवहार पर अद्वितीय नियंत्रण और दृश्यता मिलती है। इसे तेज़, विश्वसनीय और उपयोग में आसान बनाने के लिए डिज़ाइन किया गया है, जिससे यह दुनिया भर के डेवलपर्स और QA इंजीनियरों के बीच एक लोकप्रिय विकल्प बन गया है। साइप्रस जावास्क्रिप्ट में लिखा गया है और ब्राउज़र के भीतर निष्पादित होता है, जिससे यह बहुत प्रभावशाली होता है और एप्लिकेशन के आंतरिक भागों तक अद्वितीय पहुंच प्रदान करता है।

\n\n

साइप्रस के उपयोग के प्रमुख लाभ

\n\n\n\n

स्थापना और सेटअप

\n\n

साइप्रस के साथ शुरुआत करना सीधा है। इसे स्थापित करने का तरीका यहां दिया गया है:

\n\n
    \n
  1. पूर्व-आवश्यकताएं: सुनिश्चित करें कि आपके सिस्टम पर Node.js और npm (नोड पैकेज मैनेजर) स्थापित हैं। आप उन्हें आधिकारिक Node.js वेबसाइट से डाउनलोड कर सकते हैं।
  2. \n
  3. साइप्रस स्थापित करें: अपना टर्मिनल या कमांड प्रॉम्प्ट खोलें, अपनी प्रोजेक्ट डायरेक्टरी पर नेविगेट करें, और निम्न कमांड चलाएँ:
  4. \n \n
    npm install cypress --save-dev
    \n \n
  5. साइप्रस खोलें: एक बार इंस्टॉलेशन पूरा हो जाने के बाद, आप निम्न चलाकर साइप्रस टेस्ट रनर खोल सकते हैं:
  6. \n \n
    npx cypress open
    \n \n

    यह कमांड साइप्रस टेस्ट रनर को लॉन्च करेगा, जो आपके परीक्षणों को चलाने और डीबग करने के लिए एक ग्राफिकल इंटरफ़ेस प्रदान करता है।

    \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\n

इसे व्यवहार में देखने के लिए साइप्रस टेस्ट रनर में इस परीक्षण को चलाएँ। आपको ब्राउज़र को साइप्रस किचन सिंक वेबसाइट पर नेविगेट करते हुए, "type" लिंक पर क्लिक करते हुए, और URL को सत्यापित करते हुए देखना चाहिए।

\n\n

साइप्रस कमांड्स

\n\n

साइप्रस आपके एप्लिकेशन के साथ इंटरैक्ट करने के लिए कमांड्स की एक विस्तृत श्रृंखला प्रदान करता है। यहां कुछ सबसे अधिक उपयोग किए जाने वाले कमांड्स दिए गए हैं:

\n\n\n\n

ये साइप्रस में उपलब्ध कई कमांडों में से कुछ ही हैं। कमांड और उनके विकल्पों की पूरी सूची के लिए साइप्रस डॉक्यूमेंटेशन देखें।

\n\n

साइप्रस में अभिकथन (Assertions)

\n\n

अभिकथन का उपयोग आपके एप्लिकेशन के अपेक्षित व्यवहार को सत्यापित करने के लिए किया जाता है। साइप्रस अंतर्निहित अभिकथनों का एक समृद्ध सेट प्रदान करता है जिसका उपयोग आप तत्वों की स्थिति, URL, शीर्षक और बहुत कुछ की जांच करने के लिए कर सकते हैं। अभिकथनों को साइप्रस कमांड के बाद \`.should()\` विधि का उपयोग करके जोड़ा जाता है।

\n\n

यहां कुछ सामान्य अभिकथन उदाहरण दिए गए हैं:

\n\n\n\n

आप अपनी विशिष्ट आवश्यकताओं के अनुरूप कस्टम अभिकथन भी बना सकते हैं।

\n\n

साइप्रस टेस्ट लिखने के लिए सर्वोत्तम अभ्यास

\n\n

सर्वोत्तम प्रथाओं का पालन करने से आपको अधिक रखरखाव योग्य, विश्वसनीय और कुशल साइप्रस टेस्ट लिखने में मदद मिल सकती है। यहाँ कुछ सिफारिशें दी गई हैं:

\n\n\n\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\n
npm 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\n

IFrames के साथ काम करना

\n\n

IFrames का परीक्षण करना मुश्किल हो सकता है, लेकिन साइप्रस उनके साथ इंटरैक्ट करने का एक तरीका प्रदान करता है। आप एक 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
  1. साइप्रस स्थापित करें:\n सुनिश्चित करें कि साइप्रस आपके प्रोजेक्ट में एक निर्भरता के रूप में स्थापित है।
  2. \n
  3. CI/CD कॉन्फ़िगर करें:\n प्रत्येक निर्माण के बाद साइप्रस परीक्षण चलाने के लिए अपनी CI/CD पाइपलाइन को कॉन्फ़िगर करें।
  4. \n
  5. साइप्रस हेडलेसली चलाएँ:\n हेडलेस मोड में साइप्रस परीक्षण चलाने के लिए \`cypress run\` कमांड का उपयोग करें।
  6. \n
\n\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\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
\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
\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

जैसे-जैसे वेब एप्लिकेशन विकसित होते रहेंगे, एंड-टू-एंड परीक्षण का महत्व केवल बढ़ेगा। साइप्रस को अपनाना और इसे अपनी विकास कार्यप्रवाह में एकीकृत करना आपको अधिक मजबूत, विश्वसनीय और उपयोगकर्ता-अनुकूल वेब अनुभव बनाने में सशक्त करेगा।