جافا سكريبت - مهمة Cypress تفشل وتشتكي من أن حدث المهمة لم يتم تسجيله في ملف الإضافات
أنا أستخدم طريقة/دالة cy.task() في Cypress لنسخ ملف csv من دليل إلى آخر. أدناه هو cy.task('copycsvFile') والكود ذي الصلة المكتوب في ملف support/index.js. عند تشغيله يعطي الخطأ التالي؛ CypressError: cy.task('copycsvFile') فشل بالخطأ التالي: لم يتم تسجيل حدث 'task' في ملف الإضافات. يجب عليك تسجيله قبل استخدام cy.task() هل لديك أي فكرة لماذا لم يتم التعرف عليه؟
إصدار Node: v10.15.3، إصدار Cypress: 3.1.5
//ملف sample-spec.js
cy.task('copycsvFile');
فيما يلي ملف index.js الخاص بي /ملف support/index.js
const fs = require('fs');
module.exports = (on) => {
on('task', {
copycsvFile: (Obj)=>{
var fs = require('fs');
fs.createReadStream('C:/Users/SomeName/Downloads/Export_Survey_CSV.csv').pipe(fs.createWriteStream('C:/User/Client/Client - Cypress Web UI Tests/cypress/fixtures/Export_Survey_CSV.csv'));
}
});
};
الإجابة رقم 1
أخيرًا، لقد وجدت الإجابة.
لقد أضفت الكود أدناه في المكان الخطأ وكان هذا هو سبب فشله وظهور الخطأ أعلاه.
الآن لقد صححت المكان وأضفت الكود تحت plugins/index.js ويعمل بشكل مثالي.
لقد قمت أيضًا بإجراء تغيير صغير، أي أنني أضفت return null لأنه لم يكن لدي شيء لأرجعه في حالتي.
// في ملف المواصفات الخاص بي;
cy.task('copycsvFile');
// أضفت الكود أدناه تحت.. /plugins/index.js
const fs = require('fs');
module.exports = (on) => {
on("task", {
copycsvFile: (Obj) => {
var fs = require("fs");
fs.createReadStream(
"C:/Users/SomeName/Downloads/Export_Survey_CSV.csv"
).pipe(
fs.createWriteStream(
"C:/User/Client/Client - Cypress Web UI Tests/cypress/fixtures/Export_Survey_CSV.csv"
)
);
return null;
},
});
};
الإجابة رقم 2
واجهت نفس المشكلة، لكن كان الحل مختلفًا بالنسبة لي. منذ الترقية إلى Cypress 10، أصبح هذا النهج (support/index.js) غير مدعوم بعد الآن، انظر: https://docs.cypress.io/guides/tooling/plugins-guide#cy-task
