جافا سكريبت - مهمة 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