使用 Cypress Headless 时如何查看“cy.log”输出?

Mar*_*air 7 cypress

当无头运行 Cypress 时,我可以console.log使用DEBUG环境变量查看测试中的前端代码的输出,例如:

DEBUG='cypress:launcher' npx cypress run --browser chrome
Run Code Online (Sandbox Code Playgroud)

但是,我还没有找到任何类似的方法来查看cy.log无头运行时赛普拉斯测试代码的输出。即使DEBUG='cypress:*'我看不到它们 - 它们似乎只在交互界面中可见。感觉必须有某种方法可以cy.log无头查看输出 - 有人可以帮忙吗?

hug*_*hsk 16

第一步是在 Cypress 配置文件中添加一个新任务,以便您可以console.log从 Node 运行:

import { defineConfig } from "cypress";

export default defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on("task", {
        log(args) {
          console.log(...args);
          return null;
        }
      });
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以覆盖,cy.log以便每当您在无头模式下运行命令以及console.log在有头模式下运行命令时它都会调用此任务。您可以通过将以下内容添加到命令文件中来完成此操作:

Cypress.Commands.overwrite("log", function(log, ...args) {
  if (Cypress.browser.isHeadless) {
    return cy.task("log", args, { log: false }).then(() => {
      return log(...args);
    });
  } else {
    console.log(...args);
    return log(...args);
  }
});
Run Code Online (Sandbox Code Playgroud)