لقطات Cypress DOM وصورة متسقة مختلفة في السحابة
احفظ الصفحة عند فشل الاختبار
Cyclope: احفظ صفحة كاملة مع الأنماط في حالة فشل اختبار السرو
استخدم LocalStorage من اختبار Cypress لتعيين البيانات الأولية
اختبار سحب العناصر
مقدمة إلى أمر cy.session
المكافأة 39: احفظ صفحة HTML بأكملها عند فشل الاختبار
أضف هذا البرنامج المساعد إلى مشروعك. بافتراض أن Cypress هو تبعية للتطوير
$ npm i -D cyclope# أو إذا كنت تفضل غزل $ غزل أضف -D cyclope
قم بتضمين البرنامج المساعد من ملف الدعم الخاص بك أو ملف المواصفات الفردية
// في السرو/support/index.js// https://github.com/bahmutov/cyclopeimport 'cyclope'
// cypress.config.jsconst {defineConfig } = require('cypress')module.exports = DefineConfig({ e2e: {setupNodeEvents(on, config) { // https://github.com/bahmutov/cyclope require('cyclope/plugin')(on, config) // مهم لإرجاع كائن التكوين // مع أي تغيير متغيرات البيئة ترجع التكوين}، },})
قم بتضمين المكون الإضافي من ملف المكونات الإضافية الخاص بك
// السرو/المكونات الإضافية/index.jsmodule.exports = (on, config) => { // https://github.com/bahmutov/cyclope يتطلب ('سيكلوب/البرنامج المساعد') (على، التكوين) // مهم لإرجاع كائن التكوين // مع أي متغيرات بيئة تم تغييرها عودة التكوين}
إذا كنت بحاجة إلى حفظ صفحة تطبيق الويب الحالية، بما في ذلك أي موارد
// cypress/integration/spec.jsit('يحفظ الصفحة', () => { // أوامر السرو العادية cy.contains('.some-selector', 'some text').should('be.visible')// عندما يصل التطبيق إلى الحالة المطلوبة// احفظ الصفحة في المجلد "page".savePage(' صفحة')})
يجب حفظ جميع الموارد المحلية مثل الصور وCSS كملفات محلية. يمكنك إنشاء أرشيف مضغوط
// استخدم امتداد .zip لضغط المجلد في ملف filecy.savePage('page.zip')
عند حفظ الملف المضغوط، تنتج الدالة كائنًا له خصائص اسم الملف والعرض والارتفاع.
يزيل removeIframes
(خطأ افتراضيًا) جميع عناصر <iframe>
من الصفحة قبل الحفظ
cy.savePage('name', {removeIframes: true })
ignoreFailedAssets
(خطأ افتراضيًا) يتجاهل الفشل في حالة عدم إمكانية تحميل جزء من الأصول
cy.savePage('name', {ignoreFailedAssets: true })
تتضمن هذه الوحدة وظيفة مساعدة لحفظ الصفحة في حالة فشل الاختبار. يمكنك استخدام هذه الوظيفة afterEach
ربط، ربما من ملف الدعم، لذلك تنطبق على جميع الاختبارات.
// في cypress/support/index.js// https://github.com/bahmutov/cyclopeimport { savePageIfTestFailed } from 'cyclope'afterEach(() => { savePageIfTestFailed() // في حالة كسر جزء من الأصول في مشروعك savePageIfTestFailed({ignoreFailedAssets: true })})
افتراضيًا، يتم حفظ الصفحة فقط في الوضع غير التفاعلي cypress run
. إذا كنت تريد حفظ الصفحة حتى عند تشغيلها في وضع cypress open
، فاستخدم الخيار saveInteractive
savePageIfTestFailed({ saveInteractive: صحيح })
يتم حفظ كافة الصفحات في المجلد cypress/failed/<spec name>/<test name>
.
نصيحة: قم بتخزين cypress/failed
كقطعة أثرية للاختبار على CI. في حالة فشل الاختبار، قم بتنزيل folder/index.html
وفتحه لفحص بنية التطبيق في لحظة الفشل.
الاسم المستعار clope
يُنشئ صورة PNG متسقة باستخدام خدمة صور Cyclope الخارجية. يتطلب متغيرات البيئة CYCLOPE_SERVICE_URL
و CYCLOPE_SERVICE_KEY
عند تشغيل Cypress. يدعم التحويم
cy.get('#theme-switcher').realHover().cyclope('hover-over-sun.png')// يحفظ صورة "hover-over-sun.png" التي تم إنشاؤها // يعادلcy.get(' #theme-switcher').realHover()cy.clope()
إذا كنت تريد ببساطة تخطي تحميل DOM وإنشاء الصور إذا لم يتم تكوين خدمة Cyclope، فاضبط خيار بيئة Cypress، على سبيل المثال باستخدام ملف cypress.json
{ "env": {"cyclope": { "skipUploadWithoutUrl": صحيح} } }
يمكنك تمكين رسائل تصحيح الأخطاء المطولة في الوحدة الطرفية باستخدام وحدة التصحيح عن طريق تشغيل الاختبارات باستخدام متغير البيئة DEBUG=cyclope
$ DEBUG=cyclope npx cypress run
todo-app-for-cyclope
سودوكو وهمية الوحدة
المؤلف: جليب باهموتوف <[email protected]> © 2021
@باهموتوف
glebbahmutov.com
مدونة
أشرطة الفيديو
العروض التقديمية
cypress.tips
الترخيص: معهد ماساتشوستس للتكنولوجيا - افعل أي شيء باستخدام الكود، لكن لا تلومني إذا لم يعمل.
الدعم: إذا وجدت أي مشاكل في هذه الوحدة، أرسل بريدًا إلكترونيًا / تغريدة / افتح المشكلة على Github
حقوق الطبع والنشر (ج) 2021 جليب باهموتوف <[email protected]>
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.