اختبر عقد التحميل، وليس مسار الملف.
استخدم ملفًا صغيرًا مبتكرًا للتحقق من الاختيار والقبول، ثم احتفظ بأدلة معالجة الخادم منفصلة.

طبعة مترجمة. تظل المعرفات الفنية في شكلها الأصلي.

يتم فتح منتقي الملفات، ويحدد الاختبار الملف، وتعلن المجموعة عن اكتمال التحميل. تلقى التطبيق فقط اختيار الإدخال. وقد يظل يرفض التنسيق أو يفشل في التحقق من الصحة أو لا ينتهي من المعالجة مطلقًا. خطوة التحديد الخضراء هي نتيجة أضيق من مستند تم تحميله قابل للاستخدام.
يستخدم هذا الدليل وثائق إدخال Playwright لإنشاء تثبيت ملف نصي محلي صغير. يحتوي الملف على محتوى مبتكر. إنه ليس مرفقًا للعميل أو مستند هوية أو مثالًا للمنتج. نحن نفصل عقد إدخال المتصفح عن أي عملية معالجة يتم إجراؤها بعد ذلك.
امنح الوحدة هوية قابلة للقراءة
يجب أن تذكر أداة الاختبار اسمها ونوع MIME ومحتواها. للحصول على مثال نصي صغير، تكون مراجعة الحمولة الموجودة في الذاكرة أسهل من مراجعة الحمولة الثنائية غير الموضحة في المستودع. استخدم مدخلات واقعية وصحيحة لمنتجك، ولكن تجنب المستندات المصدرية الخاصة عندما ستجيب العينة الخاضعة للرقابة على السؤال.
await page.getByLabel('Demo attachment').setInputFiles({
name: 'demo-note.txt',
mimeType: 'text/plain',
buffer: Buffer.from('Invented demo note\n', 'utf8')
});
await expect(page.getByRole('status')).toHaveText('Selected: demo-note.txt');يفترض المقتطف إدخال ملف يمكن الوصول إليه وسلوك واجهة المستخدم المحلية الذي يُبلغ عن اسم الملف المحدد. يؤكد التأكيد على هذا السلوك، وليس التخزين الناجح للخادم. احتفظ بهذا الحد في عنوان الاختبار والشكل التوضيحي.
يقوم Playwright بتوثيق المسارات والملفات المتعددة وكائنات الحمولة ومسح التحديد من خلال setInputFiles. حدد أصغر شكل إدخال يطابق الحالة. يحتاج اختبار الملفات المتعددة إلى متطلبات تتعلق بالترتيب والحدود والأخطاء الفردية؛ إنها ليست مجرد نفس عملية التحقق من المسار السعيد المتكررة مع المزيد من الأسماء.
استخدم حدث التحديد فقط عندما يكون الحد المطلوب
تقوم بعض الواجهات بإنشاء الإدخال ديناميكيًا بعد النقر على الزر. يصف دليل الإدخال انتظار حدث filechooser قبل الإجراء، ثم استدعاء setFiles على المحدد الذي تم إرجاعه. ضع الحدث في الانتظار أولاً حتى يظل المحدد السريع متصلاً بعنصر التحكم البادئ.
const pendingChooser = page.waitForEvent('filechooser');
await page.getByRole('button', { name: 'Choose demo file' }).click();
const chooser = await pendingChooser;
await chooser.setFiles({
name: 'demo-note.txt',
mimeType: 'text/plain',
buffer: Buffer.from('Invented demo note\n', 'utf8')
});هذه هي طرق الاختيار البديلة للواجهات المختلفة، وليست خطوتين مطلوبتين في تحميل واحد. لا تقم بأتمتة مربع حوار نظام التشغيل الأصلي عن طريق إحداثيات الشاشة التخمينية عندما يتمكن الإدخال الموثق أو حدود المحدد من التعبير عن الإجراء مباشرة.
الاختيار والقبول والمعالجة حالات منفصلة
بعد التحديد، قد يقوم التطبيق بفحص الملف وإرساله إلى الخادم وتشغيل معالج الخلفية. اكتب الحالة المتوقعة لكل طبقة ذات صلة. يجب أن تعني رسالة القبول التي يواجهها المستخدم ما تقوله. إذا كانت المعالجة لا تزال معلقة، فيجب ألا يشير الاختبار إلى اكتمال الميزة بأكملها.
بالنسبة لرحلة التحميل الفعلية، استخدم التخزين المرحلي المعتمد وتحقق من السجل النهائي الخاضع للرقابة من خلال الأدلة المدعومة للمنتج. تأكد من توفر المستند الصحيح، وليس فقط من اختفاء القرص الدوار. لا تقم بتحميل الاختبارات المخترعة إلى مجلد العميل المباشر لمجرد أن واجهة المستخدم تجعل الأمر سهلاً.
يعد اسم الملف ونوع MIME بمثابة مدخلات، وليس دليلاً مستقلاً على محتويات الملف. الحمولة النصية المسماة image.png ليست صورة صالحة. اختر عينات غير صالحة متعمدة عند اختبار الرفض وعينات صالحة عند اختبار القبول. اشرح العقد الذي من المفترض أن تمارسه كل عينة.
اجعل الحالات غير الصالحة صغيرة ومفيدة
قد يرفض المنتج تنسيقًا غير مدعوم، أو مدخلات كبيرة الحجم، أو ملفًا فارغًا أو نسخة مكررة. وضع السياسة المتوقعة من فريق التطبيق قبل كتابة هذه التأكيدات. لا تخترع الحد الأقصى للحجم أو تفترض أن سمة قبول المتصفح هي قاعدة الأمان بأكملها.
تحقق من الشرح والإجراء التالي الآمن للملف المرفوض. يجب أن يكون المستخدم قادرًا على اختيار ملف آخر أو إزالة التحديد إذا كان هذا هو التصميم المقصود. يعد اختبار التنظيف مهمًا أيضًا: يمكن أن يظل التحميل المرحلي المقبول بعد إغلاق المتصفح، لذا قم بترتيب إزالة السجل من خلال مسار معتمد.
احتفظ بالتركيبات والفشل الناتج تحت مراجعة الخصوصية. تعتبر المدخلات الصغيرة المخترعة أسهل في الفحص وأكثر أمانًا في التوزيع من المستندات الحقيقية التي تم التقاطها. قد تكشف لقطات الشاشة والتتبعات عن أسماء الملفات المحددة حتى في حالة عدم إرفاق بايتات الملف.
يصف AnyTest الوكلاء الذين يستكشفون تطبيق ويب وينشئون اختبارات شاملة للمراجعة البشرية. استخدم هذه الحدود لمراجعة أي رحلة ملف مقترحة: محددة ومقبولة ومعالجتها ومتاحة. لا يؤكد هذا الدليل على واجهة تحميل AnyTest معينة أو تكامل التحقق من الصحة. وتتمثل الفائدة في وجود عقد مصطنعة واضح يمنع إجراء الإدخال الناجح من أن يصبح وعدًا كاذبًا بشأن نتائج الخادم.
الأسئلة الشائعة
هل اختيار الملف يثبت اكتمال التحميل؟
لا، فالاختيار والقبول والمعالجة النهائية للخادم هي أدلة منفصلة.
هل يمكن للتركيبات استخدام مستند عميل حقيقي؟
استخدام عينات التدريج المخترعة أو المعتمدة. تجنب الملفات الخاصة عندما يجيب المحتوى الخاضع للرقابة على سؤال الاختبار.