"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > प्लेराइट-नेटवर्क-कैश के साथ अपने ईटेस्ट को सुपरचार्ज करें

प्लेराइट-नेटवर्क-कैश के साथ अपने ईटेस्ट को सुपरचार्ज करें

2024-11-07 को प्रकाशित
ब्राउज़ करें:662

Supercharge Your ETests with Playwright-Network-Cache

पहचान

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

क्या जटिल मॉकिंग रणनीतियों को स्थापित किए बिना कैशिंग को संभालने और नेटवर्क प्रतिक्रियाओं का पुन: उपयोग करने का एक स्वचालित तरीका होना अच्छा नहीं होगा? मैंने मौजूदा दृष्टिकोणों की जांच की है और एक उपकरण विकसित किया है जिसे मैं पेश करना चाहता हूं। यह फ़ाइल सिस्टम पर नेटवर्क अनुरोधों को कैश करके, तेज़ और अधिक विश्वसनीय नाटककार परीक्षणों को सक्षम करके इन सटीक समस्याओं को हल करता है।

टेस्ट में नेटवर्क अनुरोधों की समस्या

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

इसे कम करने का एक सामान्य तरीका एपीआई प्रतिक्रियाओं का मजाक उड़ाना है। उपयोगी होते हुए भी, मॉकिंग के लिए मैन्युअल हस्तक्षेप की आवश्यकता होती है - आपको सावधानीपूर्वक मॉक प्रतिक्रियाएँ बनाने, उन्हें अद्यतन रखने और यह सुनिश्चित करने की आवश्यकता है कि हर संभावित नेटवर्क परिदृश्य को संभाला जाए। जैसे-जैसे एपीआई विकसित होती है या आपके परीक्षण मामले बदलते हैं, यह एक बड़ा रखरखाव बोझ बन सकता है। नाटककार नेटवर्क ट्रैफ़िक को कैप्चर करने और पुनः चलाने के लिए HAR फ़ाइलों का समर्थन करता है, लेकिन HAR के साथ काम करना कठिन हो सकता है और तुरंत प्रतिक्रियाओं को संशोधित करने के लिए लचीलेपन की कमी होती है।

नाटककार-नेटवर्क-कैश दर्ज करें

playwright-network-cache को Playwright परीक्षणों में नेटवर्क प्रतिक्रियाओं को कैशिंग करने की प्रक्रिया को सुव्यवस्थित करने के लिए डिज़ाइन किया गया है, जिससे मैन्युअल मॉक या कठोर HAR फ़ाइलों की आवश्यकता समाप्त हो जाती है। इस लाइब्रेरी के साथ, पहले टेस्ट रन के दौरान नेटवर्क प्रतिक्रियाएं स्वचालित रूप से फाइल सिस्टम पर संग्रहीत होती हैं और बाद के रन में पुन: उपयोग की जा सकती हैं, जिससे परीक्षण निष्पादन में काफी तेजी आती है। इसके अलावा, प्रतिक्रियाएँ एक स्पष्ट, व्यवस्थित फ़ोल्डर संरचना में सहेजी जाती हैं, जिससे उन्हें आवश्यकतानुसार निरीक्षण करना और संशोधित करना आसान हो जाता है।

यह समस्या का समाधान कैसे करता है

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

  2. गतिशील संशोधन: किसी विशिष्ट परीक्षण मामले के लिए प्रतिक्रिया में बदलाव करने की आवश्यकता है? प्लेराइट-नेटवर्क-कैश आपको कैश्ड प्रतिक्रियाओं को गतिशील रूप से संशोधित करने की अनुमति देता है। चाहे आप स्टेटस कोड, हेडर, या रिस्पॉन्स बॉडी बदलना चाहते हों, लाइब्रेरी अलग-अलग मॉक को मैन्युअल रूप से बनाए रखे बिना कैश्ड डेटा को तुरंत समायोजित करने के विकल्प प्रदान करती है।

  3. लचीली संरचना: कैशिंग सिस्टम होस्टनाम, अनुरोध विधि और यूआरएल पथ के आधार पर फाइलों को व्यवस्थित करता है, यह सुनिश्चित करता है कि आप कैश्ड डेटा को आसानी से नेविगेट और प्रबंधित कर सकते हैं। अधिक जटिल मामलों के लिए, आप कैश फ़ाइलों को अनुरोध क्वेरी पैरामीटर, अनुरोध निकाय या अन्य कस्टम फ़ील्ड द्वारा विभाजित भी कर सकते हैं, जिससे डेटा को संग्रहीत और पुन: उपयोग करने में पूर्ण लचीलापन सुनिश्चित होता है।

  4. स्पीड बूस्ट: कैश्ड प्रतिक्रियाओं का पुन: उपयोग करके, आपके परीक्षणों को अब नेटवर्क कॉल के पूरा होने की प्रतीक्षा करने की आवश्यकता नहीं है, जिससे वे नाटकीय रूप से तेज़ हो जाते हैं। बड़े परीक्षण सुइट्स के साथ काम करते समय या सीआई वातावरण में परीक्षण चलाते समय यह विशेष रूप से उपयोगी होता है जहां गति महत्वपूर्ण है।

  5. नो मोर मॉक हेल: मैन्युअल रूप से मॉक बनाए रखने के बारे में भूल जाइए। लाइब्रेरी आपके लिए सब कुछ संभालती है - कैशिंग से लेकर रीप्लेइंग और यहां तक ​​कि प्रतिक्रियाओं को संशोधित करने तक। अब आपको प्रत्येक परीक्षण परिदृश्य के लिए मैन्युअल रूप से नकली प्रतिक्रिया तैयार करने की आवश्यकता नहीं होगी, और आप अपने परीक्षण तर्क पर अधिक ध्यान केंद्रित कर सकते हैं।

  6. कोई HAR जटिलता नहीं: HAR फ़ाइलें नेटवर्क इंटरैक्शन को रिकॉर्ड करने और दोबारा चलाने के लिए उपयोगी हो सकती हैं, लेकिन वे जल्दी ही बोझिल हो जाती हैं, खासकर जब आपको प्रतिक्रियाओं को संशोधित करने की आवश्यकता होती है। प्लेराइट-नेटवर्क-कैश आपको व्यक्तिगत प्रतिक्रियाओं को सरल JSON फ़ाइलों के रूप में प्रबंधित करने की सुविधा देकर HAR के लिए एक स्वच्छ, अधिक लचीला विकल्प प्रदान करता है।

उदाहरण

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

नाटककार-नेटवर्क-कैश के साथ, आप आसानी से एपीआई प्रतिक्रिया को कैश कर सकते हैं:

test('test', async ({ page, cacheRoute }) => {
  await cacheRoute.GET('https://example.com/api/cats');
  // Perform usual test actions...
});

पहले रन पर, प्रतिक्रिया को .network-cache निर्देशिका में कैश किया जाता है, इस तरह की संरचना के साथ:

.network-cache
└── example.com
    └── api-cats
        └── GET
            ├── headers.json
            └── body.json

बाद के रन पर, कैश्ड प्रतिक्रिया का पुन: उपयोग किया जाता है, जिससे परीक्षण तेज हो जाता है और वास्तविक एपीआई को हिट करने की आवश्यकता समाप्त हो जाती है।

आप विशेष परीक्षण आवश्यकताओं के लिए कैश्ड प्रतिक्रिया को संशोधित कर सकते हैं:

test('test', async ({ page, cacheRoute }) => {
  await cacheRoute.GET('https://example.com/api/cats', {
    modify: async (route, response) => {
      const json = await response.json();
      json[0].name = 'Kitty-1';
      await route.fulfill({ json });
    }
  });
  // Perform usual test actions...
});

अपने परीक्षणों में कैशरूट वैरिएबल उपलब्ध कराने के लिए, इसे किसी अन्य नाटककार स्थिरता की तरह तुरंत चालू करें:

// fixtures.js
import { test as base } from '@playwright/test';
import { CacheRoute } from 'playwright-network-cache';

export const test = base.extend({
  cacheRoute: async ({ page }, use) => {
    const cacheRoute = new CacheRoute(page, { /* cache options */ });
    await use(cacheRoute);
  },
});

लाइब्रेरी दस्तावेज़ीकरण में कई अन्य उदाहरण और उपयोग-मामले हैं।

कैशिंग से कहीं अधिक

नाटककार-नेटवर्क-कैश केवल कैशिंग के बारे में नहीं है। यह उन्नत सुविधाएँ प्रदान करता है जैसे:

  • प्रतिक्रियाओं को संशोधित करना: कस्टम फ़ंक्शन का उपयोग करके कैश्ड प्रतिक्रियाओं में डेटा को गतिशील रूप से समायोजित करें।
  • स्थिति कोड को संभालना: त्रुटियों सहित विशिष्ट HTTP स्थिति कोड के आधार पर कैश प्रतिक्रियाएं।
  • लचीली निर्देशिका संरचना: अनुकूलित करें कि कैश फ़ाइलें कैसे और कहाँ संग्रहीत की जाती हैं, जिससे आप अपनी आवश्यकताओं के अनुसार कैशिंग रणनीतियों को तैयार कर सकते हैं।
  • कैश को अक्षम या अपडेट करें: विशिष्ट परीक्षणों के लिए कैशिंग को अस्थायी रूप से अक्षम करें या आवश्यकता पड़ने पर कैश को बलपूर्वक अपडेट करें।

इन शक्तिशाली क्षमताओं के साथ, आप यह नियंत्रित कर सकते हैं कि आपके परीक्षणों में नेटवर्क अनुरोधों को कैसे प्रबंधित किया जाता है।

संक्षिप्त

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

पढ़ने के लिए धन्यवाद ❤️

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/vitalets/supercharge-your-e2e-tests-with-playwright-network-cache-58jm?1 यदि कोई उल्लंघन है, तो हटाने के लिए कृपया [email protected] से संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3