dimanche 22 novembre 2020

Cypress: Cannot use cy.task() to load dataset to Mongo before tests

im trying to use cy.taks() to load certain datasets to mongo before a test is run, but I'm getting errors. I've got a module where I export 2 functions, one from dropping a collection, and other to load a object to a collection. Here is my cypress/plugins/index.js:

module.exports = (on, config) => {
  on("task", {
    "defaults:db": () => {
      const {dropCollection, createUser } = require("../../lib/connectDB");
      dropCollection("users");
      createUser(userData)
    },
  });
};

Here is my /lib/connecDB.js:

    export function dropCollection(collection) {
  return mongoose.connection.dropCollection(collection);
}

export async function createUserInDB(userData) {
  await User.create(userData);
}

So when I run the test, I'm getting: cy.task('defaults:db') failed with the following error:

Unexpected token 'export'

Tried as well importing these function outside the index.js export, but getting same result. I'd say is something about export/import. The functions are exported as ES6, and imported as ES5. I've tried to import the function the ES6 like:

import { dropCollection, createUser } from '../lib/connectDB'

And then export the plugin function also as ES6, but then I get:

Error: The plugins file is missing or invalid.

Your `pluginsFile` is set to `C:\Users\someRoute\cypress\plugins\index.js`, but either the file is missing, it contains a syntax error, or threw an error when required. The `pluginsFile` must be a `.js`, `.ts`, or `.coffee` file.

I've also tried to import required modules outside the function like:

const globalDbUtils = require('../lib/connectDB')

And then use the functions as globalDbUtils.dropCollection("collectionName") globalDbUtils.createUser(userData)

But I'm getting last error. I've tried pretty much everything, I tried to import Mongoose models straight, mongo client etc...Also I tried to import just one function and return it (just copy/pasting official doc...) but cannot make it work. I researched for a couple of days getting nothing, I found there is a npm package that helps u doing this,but since cypress allows you to do this by using no more plugins, i'd like to do it with no more tools than cypress itself.

Anyone knows what I am doing wrong?

Thanks in advance!

Aucun commentaire:

Enregistrer un commentaire