Javascript 如何使用cypress.io在邮箱中使用两个Gmail帐户

Javascript 如何使用cypress.io在邮箱中使用两个Gmail帐户,javascript,node.js,gmail-api,cypress,Javascript,Node.js,Gmail Api,Cypress,如何使用cypress的2个gmail帐户 我创建了两个文件credentialsclient.json和credentials.json 并创建2个gmail令牌文件 现在我想在其他测试中为两封电子邮件使用GetMessages函数 我正在index.js文件中编写所选代码 module.exports = (on, config) => { on("before:browser:launch", (browser = {}, launchOptions) =&

如何使用cypress的2个gmail帐户

我创建了两个文件credentialsclient.json和credentials.json 并创建2个gmail令牌文件

现在我想在其他测试中为两封电子邮件使用GetMessages函数

我正在index.js文件中编写所选代码


module.exports = (on, config) => {
  on("before:browser:launch", (browser = {}, launchOptions) => {
    // `args` is an array of all the arguments that will
    // be passed to browsers when it launches
    console.log(launchOptions.args); // print all current args
    if (browser.family === "chromium" && browser.name !== "electron") {
      // auto open devtools
      launchOptions.args.push("--auto-open-devtools-for-tabs");
      // allow remote debugging
      // launchOptions.args.push("--remote-debugging-port=9221");
      // whatever you return here becomes the launchOptions
    } else if (browser.family === "firefox") {
      // auto open devtools
      launchOptions.args.push("-devtools");
    }
    return launchOptions;
  });
  on("task", {
    "gmail:get-messages": async args => {
      const messages = await gmail_tester.get_messages(
        path.resolve(__dirname, "credentialsclient.json"),
        path.resolve(__dirname, "gmail_tokenclient.json"),
        args.options
      );
      return messages;
    }
  });
};
对于下一个gmail,我想使用另一个功能

on("task", {
    "gmail:get-messages": async args => {
      const messages = await gmail_tester.get_messages(
        path.resolve(__dirname, "credentials.json"),
        path.resolve(__dirname, "gmail_token.json"),
        args.options
      );
      return messages;
    }
但在使用同一gmail的两次测试中。
我怎样才能把账目分开呢。
谢谢

我不太清楚为什么要使用任务而不是函数,但您可以简单地将属性添加到传递给任务的参数中:

on(“任务”{
“gmail:获取消息”:异步参数=>{
//使用credentials属性或空字符串(如果未提供)
const credentialType=args.credentials | |“”;
const messages=等待gmail\u tester.get\u消息(
resolve(uu dirname,`credentials${args.credentials}.json`),
resolve(uu dirname,`gmail_token${args.credentials}.json`),
args.options
);
返回消息;
}
调用任务时,只需传入凭据类型:

cy.task('gmail:get messages',{options:{},credentials:'client'});

我使用两个参数,如下所示

on("task", {
    "gmail:get-messagescl": async args => {
      const messages = await gmail_tester.get_messages(
        path.resolve(__dirname, "credentialsclient.json"),
        path.resolve(__dirname, "gmail_tokenclient.json"),
        args.options
      );
      return messages;
    },
    "gmail:get-messages": async args => {
      const messages = await gmail_tester.get_messages(
        path.resolve(__dirname, "credentials.json"),
        path.resolve(__dirname, "gmail_token.json"),
        args.options
      );
      return messages;
    }
  });
在command.js中,我编写了两个函数

Cypress.Commands.add('checkEmail', (emailaddr, title,) => {
    const yestDate = Cypress.moment().add(-1, 'hours').format('YYYY, MM, DD');
    cy.task("gmail:get-messages", {
        options: {
          from: emailaddr,
          subject: title,
          include_body: true,
          after: new Date (yestDate) 
         // before:  new Date(todaysDate)
        }
      })
})

Cypress.Commands.add('checkEmailCl', (emailaddr, title,) => {
    const yestDate = Cypress.moment().add(-1, 'hours').format('YYYY, MM, DD');
    cy.task("gmail:get-messagescl", {
        options: {
          from: emailaddr,
          subject: title,
          include_body: true,
          after: new Date (yestDate) 
         // before:  new Date(todaysDate)
        }
      })
})

cy.checkEmail(emailadr, title ).then(emails => {
          assert.isAtLeast(
            emails.length,
            1,
            "Expected to find at least one email, but none were found!"
          );
          const body = emails[0].body.html;
          cy.log(body)

          assert.isTrue(
            body.indexOf(
              "https://u15696639.ct.sendgrid.net/ls/click?upn="
            ) >= 0,
            "Verify your email"
          );
在我的测试中,我已经在使用我的函数了

Cypress.Commands.add('checkEmail', (emailaddr, title,) => {
    const yestDate = Cypress.moment().add(-1, 'hours').format('YYYY, MM, DD');
    cy.task("gmail:get-messages", {
        options: {
          from: emailaddr,
          subject: title,
          include_body: true,
          after: new Date (yestDate) 
         // before:  new Date(todaysDate)
        }
      })
})

Cypress.Commands.add('checkEmailCl', (emailaddr, title,) => {
    const yestDate = Cypress.moment().add(-1, 'hours').format('YYYY, MM, DD');
    cy.task("gmail:get-messagescl", {
        options: {
          from: emailaddr,
          subject: title,
          include_body: true,
          after: new Date (yestDate) 
         // before:  new Date(todaysDate)
        }
      })
})

cy.checkEmail(emailadr, title ).then(emails => {
          assert.isAtLeast(
            emails.length,
            1,
            "Expected to find at least one email, but none were found!"
          );
          const body = emails[0].body.html;
          cy.log(body)

          assert.isTrue(
            body.indexOf(
              "https://u15696639.ct.sendgrid.net/ls/click?upn="
            ) >= 0,
            "Verify your email"
          );
和其他测试使用

 cy.checkEmailCl(emailadr, title ).then(emails => {

我在这里使用task.Cypress.Commands.add('checkEmail',(emailaddr,title,)=>{const-yestDate=Cypress.moment().add(-1,'hours').format('yyyyy,MM,DD');cy.task('gmail:get messages',{选项:{发件人:emailaddr,主题:title,include\body:true,after:new Date(yestDate)//之前:新日期(今天)})