"सरू: Docx फ़ाइलों का परीक्षण कैसे करें" या "e2e परीक्षण द्वारा डाउनलोड की गई फ़ाइलों का सत्यापन"

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

इस लेख में, हम अगले परिदृश्य कार्यान्वयन के उदाहरण देखेंगे:

- Docx को वेब-ऐप से फ़ाइल सिस्टम में डाउनलोड करें - डाउनलोड की गई फ़ाइल खोजें - इसे HTML दस्तावेज़ में बदलें - दस्तावेज़ में सामग्री सत्यापित करें

उपकरण, जिनका उपयोग किया जाएगा

  • सरो
  • टाइपप्रति
  • निवेदन
  • विशाल-परिवर्तित
  • FS

चलो चलते हैं!

1. सरू परीक्षा द्वारा वेब-एप्लिकेशन से DOCX फ़ाइल डाउनलोड करें

सबसे पहले, हमें एक पृष्ठ खोलने और पृष्ठ पर उस तत्व को खोजने की आवश्यकता है, जो फ़ाइल को डाउनलोड करने से चलाता है। यह सामान्य निरीक्षण उपकरण के साथ करना आसान है:

ऊपर के उदाहरण में हमारे पास विशिष्ट विशेषता 'href' के साथ एक HTML तत्व है और यह मूल्य है। और 'href' विशेषता से URL खोलने पर स्वचालित रूप से डाउनलोडिंग चालू हो जाएगी।

तो, बहुत आसान लग रहा है: हमें केवल एक URL खोलने की आवश्यकता है। लेकिन अगर हम ऐसा करेंगे, तो हम देखेंगे कि फ़ाइल उस विशिष्ट निर्देशिका में डाउनलोड की गई है, जो आपके ब्राउज़र के लिए डिफ़ॉल्ट रूप में सेट की गई थी। मेरी विंडोज़ मशीन में, यह "C: \ Users \ Users \ Downloads" था। और, दुर्भाग्य से, हम यह भी कल्पना नहीं कर सकते कि हमारे CI मशीन में कौन सी डिफ़ॉल्ट निर्देशिका होगी।

उन इंजीनियरों, जिन्होंने सेलेनियम के साथ काम किया, फाइलों को बचाने के लिए इस डिफ़ॉल्ट निर्देशिका CYpress सेटिंग्स के अंदर सेट करने का एक तरीका मिलेगा। लेकिन यह पैरामीटर अभी तक कॉन्फ़िगर करने योग्य नहीं है, मुद्दा देखें: https://github.com/cypress-io/cypress/issyp/4675

इसलिए, वर्कअराउंड के रूप में, हमें प्लगइन्स / index.js फ़ाइल पर जाने की जरूरत है और इसे अगले तरीकों से विस्तारित करें:

पर ('कार्य', {downloadDocx (args) {कास्ट डायरेक्टरी = `सरू / $ {argsdirectory।}}; नया वादा ((समाधान, अस्वीकार) => {अनुरोध ({url: args.url), एनकोडिंग: null , हेडर: {कुकी: ''}}, फंक्शन (इरेट, रेस, बॉडी) {अगर (रेस!) {रिजेक्ट (नई त्रुटि (कोई डाउनलोड होने पर कोई प्रतिक्रिया नहीं लौटी));} अगर (रेस। statusCode! == 200) {रिजेक्ट रिजेक्ट (नया एरर ('फाइल डाउनलोड करते समय खराब स्थिति कोड:' + res.statusCode));} कॉन्टेंटडिपेंडिशन = रेस.हेडर्स ['कंटेंट-डिस्पोजल]]; {रिटर्न अस्वीकार (नई त्रुटि (टूटी प्रतिक्रिया: इनलाइन फ़ाइल प्रकार की सामग्री को शामिल नहीं करता है)));} const filenameRegex = /filename \ 2 | [^? \ N] *) /; कॉन्स्ट मैच = फाइलनमेगेएक्सएक्सएक्सएक्सएक्सएक्स (कंटेंटइस्पोजिशन), अगर (मैच == शून्य ||! मैच! [1]) {रिटर्न रिजेक्ट (नई त्रुटि) (टूटी प्रतिक्रिया: नहीं) फ़ाइल नाम '));} कॉन्स्ट फाइलनाम = मैच [1] .replace (/ [["" / जी,' '); fs.writeFileSync (डायरेक्टरी + फाइलनेम, बॉडी); संकल्प (बॉडी);});}); ;}, isExistDocx () {नया लौटाएं वादा ((संकल्प, अस्वीकार) => {if (fs.existsSync (`cypress / filename.docx`)) {वापसी समाधान ('फ़ाइल docx मौजूद है'); } और {रिटर्न अस्वीकार (नई त्रुटि ('फ़ाइल docx मौजूद नहीं है')); }}); }});

इसके द्वारा, हम कुछ कार्य बनाते हैं, जिसे सरू चलाने में सक्षम होना चाहिए: डॉक्स फ़ाइल डाउनलोड करें और सत्यापित करें कि यह फ़ाइल मौजूद है। पहली विधि में कुछ तर्क दिए जाने चाहिए: {url: string, directory: string, कुकीज: ऑब्जेक्ट} और दूसरा - शून्य टाइप है।

अगला जो हमें चाहिए - वह दो कमांड बनाने के लिए है जो इस प्लगइन कार्यों का उपयोग करते हैं (सरू / समर्थन / कमांड.ज में):

Cypress.Commands.add ('downloadDocx', (url, directory) => {वापसी cy.getCookies ()। फिर (कुकीज़ => {वापसी cy.task ('downloadDocx'), {url, url, निर्देशिका: निर्देशिका, कुकीज़ : कुकीज़ }); }); }); सरू.स्मैंड्स.डेड ('isExistDocx', () => {cy.task ('ExistDocx ');});

और श्रृंखला में इन विधियों का उपयोग करने में सक्षम होने के लिए, index.d.ts फ़ाइल खोलें और अपने श्रृंखला योग्य इंटरफ़ेस का विस्तार करें:

downloadDocx (url: string, directory: string): चेनेबल isExistDocx (): चेनेबल

2. डाउनलोड की गई फ़ाइल ढूंढें

आपके परीक्षण में अब आपको सभी आवश्यक - पहले से निर्मित विधियों को कॉल करना है:

यह ('e2e परीक्षण द्वारा DOCX फ़ाइल डाउनलोड करें', () => {cy.get ('a')। तब (तत्व => {cy.downloadDocx ((Cypress.config))। baseUrl + element .attr ('href) ') .substr (1)),' dirName ');}); cy.isExistDxx ();});

अब सभी डाउनलोड की गई फाइलें सरू डायरेक्टरी के अंदर सेव हो जाएंगी। तो परीक्षण स्थिति को बचाने के लिए मत भूलना। इस परीक्षण से पहले / बाद के लिए - पहले से दावा किए गए डॉक्स और फ़ोल्डर्स को साफ़ करें।

3. सरू के साथ HTML दस्तावेज़ में DOCX फ़ाइल कन्वर्ट करें

HTML में docx फ़ाइलों को परिवर्तित करने के लिए अगले काम करने की आवश्यकता है:

  • फ़ाइल को रूपांतरित करने के लिए अपने package.json फ़ाइल में एक स्क्रिप्ट बनाएँ, जैसे:
"फाइल-कन्वर्ट": "मैमथ सरू / मायफाइल.डॉक्सी सरू / मायफाइल.html"
  • परीक्षण के अंदर फ़ाइल को स्वचालित रूप से परिवर्तित करने के लिए अपने परीक्षण में इस स्क्रिप्ट का उपयोग करें:
cy.exec ('npm run file-convert', {failOnNonZeroExit: false})। फिर ((obj) => {उम्मीद (obj.code) .to.be.not.null; अपेक्षा (obj.stderr) .to .contain ('कुछ मान');});

आपको यह जानने की आवश्यकता है, कि यह परीक्षण विंडोज मशीनों पर विफल हो सकता है, इस मुद्दे के कारण: https://github.com/cypress-io/cypress/issues/789 लेकिन अगर विंडोज के अलावा अन्य सीआई सर्वर में आपके दूरस्थ मशीन, - फिर सब अच्छा होगा।

4. सरू के साथ DOCX दस्तावेज़ में सामग्री सत्यापित करें

परिवर्तित दस्तावेज़ में अभिकथन और सत्यापन जोड़ने के लिए, एक अलग युक्ति बनाने और समान तर्क जोड़ने की आवश्यकता है:

वर्णन करें ('HTML में कनवर्ट की गई DOCX सत्यापित करें', () => {पहले () => {Cypress.config ('baseUrl', null); cy.visit ('./ cypress / myfree.html'), {timeout: 10000});}); यह `(दस्तावेज़ के अंदर आवश्यक फ़ील्ड और मान का परीक्षण करता है), () => {cy.get ('p')। आह्वान ('पाठ')। ('में', 'कुछ पाठ') होना चाहिए। ); साइबर.गेट ('पी')। ('कुछ पाठ') शामिल हैं। ('' अदृश्य '';});});

आप इस परीक्षण में उतने ही जोर डाल सकते हैं, जितने आप चाहते हैं, सामान्य सरप्राइज़ संभावनाओं का उपयोग करके: https://docs.cypress.io/guides/references/assertions.html#BDD-Assertions

बधाई! हम इसके साथ कर रहे हैं! अब हम आसानी से अपने वेब-एप्लिकेशन से फ़ाइलों को डाउनलोड कर सकते हैं, फिर इसे उचित प्रारूप में परिवर्तित कर सकते हैं और यहां तक ​​कि सामग्री को भी सत्यापित कर सकते हैं।

यदि आपके पास कोई प्रश्न / प्रस्ताव \ _ टिप्पणी है - के माध्यम से मुझसे संपर्क करें: - प्रत्यक्ष टिप्पणी - ट्विटर - लिंक्डिन

यह सभी देखें

14 साल का व्यक्ति कोड कैसे सीख सकता है? कहाँ पे?कैसे कानून स्कूल के लिए एक पूरी छात्रवृत्ति पाने के लिएमैं एक ऐसा आवेदन करना चाहता हूं जिसका उपयोग छात्रों द्वारा किसी विशेष विषय के लिए किया जा सके। मुझे नहीं पता कि कैसे कोड करना है। मुझे क्या करना चाहिए? मुझे कहां से शुरू करना चाहिए?कैसे देखें कि कोई आपको ट्विटर पर फॉलो करता है या नहींबैकएंड PHP डेवलपर के रूप में नौकरी के लिए तैयार होने में मुझे कितना समय लगता है? मुझे पता है कि HTML, CSS, कुछ JavaScript और प्रोग्रामिंग फंडामेंटल / फ़ाउंडेशन हैं।कैसे करें अत्याचारमैं किसी ईकॉमर्स वेबसाइट से डेटा कैसे स्क्रैप कर सकता हूं और उन सूचनाओं को बिना किसी एपीआई के उपयोग किए वेब पेज पर वास्तविक समय में डाल सकता हूं? मैं हर रोज़ कोड कैसे सीख सकता हूं?