我希望 Gmail api 使用 postman api 读取和写入电子邮件。无需浏览器和 UI 交互

问题描述 投票:0回答:1

我在使用 gmail api 进行 cypress 测试用例来使用 api 读取和写入电子邮件时遇到问题。但通过阅读不同的博客和观看视频尝试了很多,但没有什么能以更好的方式帮助我。

import { google } from "googleapis";

Cypress.Commands.add("getLatestEmail", () => {
  // Authenticate with Gmail API
  const auth = new google.auth.GoogleAuth({
  keyFile: "path/to/your/credentials.json",
  scopes: ["https://www.googleapis.com/auth/gmail.readonly"],
});
const gmail = google.gmail({ version: "v1", auth });

// Fetch list of emails
return gmail.users.messages
.list({
  userId: "me",
  q: "is:inbox", // Filter by inbox
})
.then((response) => {
  // Get the latest email
  const latestEmailId = response.data.messages[0].id;

  // Fetch the latest email
  return gmail.users.messages.get({
    userId: "me",
    id: latestEmailId,
  });
})
.then((email) => {
  // Return email data
  return email.data;
});
});

以前,我使用gmail api,但每次我都应该更新令牌。有没有最好的解决方案,使用

JavaScript 
的自动化测试自动生成运行 gmail api 所需的所有内容?

javascript automated-tests gmail cypress gmail-api
1个回答
0
投票

看起来

googleapis
适用于 NodeJs - 但您正在浏览器中运行它(通过 Cypress 测试)。

Cypress 提供了一种通过 task 在 NodeJs 中运行的方法。

因此,粗略地将代码从自定义命令转换为任务

cypress.config.js

const { defineConfig } = require('cypress')
const {google} = require('googleapis');

function getLatestEmail() {  
  // code from custom command goes here
}

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        getLatestEmail

      })
    },
  },
})

测试

cy.task('getLatestEmail').then(email => {
  ...
© www.soinside.com 2019 - 2024. All rights reserved.