تعد معالجة تحميلات الملفات وتنزيلاتها من السيناريوهات الشائعة في الاختبار الشامل. في هذا المنشور، سنستكشف كيفية التعامل مع عمليات تحميل الملفات وتنزيلها باستخدام Cypress. على الرغم من أن Cypress يفتقر إلى الدعم المدمج لهذه العمليات، يمكنك تحقيق هذه الوظيفة من خلال الاستفادة من عدد قليل من المكتبات ومجموعة أوامر Cypress القوية.
بنهاية هذا الدليل، ستعرف كيفية:
لمتابعة الأمثلة، تأكد من تثبيت Cypress وإعداده. إذا كنت تستخدم Cypress v13.6.2، فهو متوافق مع الأساليب الموضحة في هذا المنشور.
لرفع الملفات في Cypress، سنستخدم البرنامج الإضافي cypress-file-upload، الذي يوفر طريقة سهلة لمحاكاة إجراءات تحميل الملفات أثناء اختباراتك.
الخطوة 1: تثبيت البرنامج المساعد cypress-file-upload
للتعامل مع عمليات تحميل الملفات في Cypress، ستحتاج أولاً إلى تثبيت حزمة cypress-file-upload.
npm install --save-dev cypress-file-upload
بعد ذلك، قم باستيراده في ملف Commands.js الخاص بك داخل مجلد دعم Cypress:
import 'cypress-file-upload';
الخطوة 2: بنية المجلد
تأكد من أن مشروعك يحتوي على بنية المجلد التالية لتخزين ملفات الاختبار وتحميلها أثناء الاختبارات:
cypress/ fixtures/ exampleFile.pdf // Test file for uploading e2e/ fileUploadTests.cy.js // Test file to upload and validate
الخطوة 3: تحميل ملف
بمجرد تثبيت البرنامج المساعد، يمكنك استخدام الأمر AttachFile لتحميل ملف من مجلد Fixations.
إليك كيفية تحميل ملف:
describe('File Upload Test in Cypress', () => { it('should upload a file successfully', () => { // Visit the page with a file upload input cy.visit('/upload'); // Select the file input element and upload a file from the fixtures folder cy.get('input[type="file"]').attachFile('exampleFile.pdf'); // Validate that the file was uploaded (depends on your app's specific response) cy.get('.file-name').should('contain', 'exampleFile.pdf'); }); });
في هذا الاختبار:
يمكن أن يكون التحقق من صحة تحميل الملف أمرًا بسيطًا مثل التحقق مما إذا كان اسم الملف أو المسار يظهر على صفحة الويب بعد التحميل. ومع ذلك، بالنسبة للسيناريوهات المعقدة (على سبيل المثال، التحقق من محتوى الملف أو حجمه)، قد تحتاج إلى عمليات فحص أو كعب روتين من جانب الخادم.
مثال: التحقق من صحة تحميل الملف باستخدام بيانات إضافية
describe('File Upload and Validation', () => { it('should upload a file and validate metadata', () => { cy.visit('/upload'); cy.get('input[type="file"]').attachFile('exampleFile.pdf'); // Assert that the file metadata like size is displayed correctly cy.get('.file-size').should('contain', 'Size: 1MB'); }); });
تنزيلات الملفات في السرو
لا توفر Cypress دعمًا أصليًا للتحقق من تنزيلات الملفات (نظرًا لأن المتصفح يقوم بتنزيل الملفات خارج نطاق سيطرة Cypress)، ولكن يمكننا التغلب على ذلك عن طريق التحقق مباشرة من الملف الذي تم تنزيله في نظام الملفات المحلي.
الخطوة 1: تثبيت ملف تنزيل السرو
للتحقق من صحة تنزيلات الملفات في Cypress، يمكننا استخدام البرنامج المساعد cypress-downloadfile.
تثبيته عبر npm:
npm install --save-dev cypress-downloadfile
بعد ذلك، قم بإضافة المكون الإضافي إلى ملف Commands.js الخاص بك:
require('cypress-downloadfile/lib/downloadFileCommand');
الخطوة 2: تنزيل الملفات والتحقق من صحتها
يمكنك الآن كتابة اختبار يقوم بتنزيل ملف والتحقق من محتواه.
مثال: تنزيل ملف
describe('File Download Test in Cypress', () => { it('should download a file and validate its content', () => { cy.visit('/download'); // Download the file and save it to a custom downloads folder cy.downloadFile('https://example.com/sample.pdf', 'cypress/downloads', 'sample.pdf'); // Validate that the file exists in the specified location cy.readFile('cypress/downloads/sample.pdf').should('exist'); }); });
في هذا الاختبار:
الخطوة 3: التحقق من صحة محتوى الملف
قد ترغب في التحقق من محتوى الملف الذي تم تنزيله للتأكد من نجاح التنزيل. بالنسبة للملفات النصية (على سبيل المثال، .txt، .csv)، يمكن استخدام cy.readFile() الخاص بـ Cypress لتأكيد محتوى الملف.
مثال: التحقق من صحة محتوى الملف الذي تم تنزيله
describe('Validate Downloaded File Content', () => { it('should download and check the content of a text file', () => { cy.visit('/download'); // Download the text file cy.downloadFile('https://example.com/sample.txt', 'cypress/downloads', 'sample.txt'); // Read the file and assert its content cy.readFile('cypress/downloads/sample.txt').then((fileContent) => { expect(fileContent).to.contain('This is a sample text file'); }); }); });
يقوم هذا الاختبار بتنزيل ملف .txt والتحقق من أنه يحتوي على النص المتوقع.
يعتبر تحميل الملفات وتنزيلها من العمليات الهامة في اختبار تطبيقات الويب، وبينما لا يدعم Cypress هذه العمليات أصلاً، فإن المكونات الإضافية cypress-file-upload و cypress-downloadfile توفر حلولاً سهلة الاستخدام.
في هذا الدليل، اكتشفنا كيفية:
باستخدام هذه الأدوات والتقنيات، يمكنك التعامل بثقة مع عمليات تحميل الملفات وتنزيلها في اختبارات Cypress الشاملة!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3