寻找一种从 cypress 执行命令行的方法

Mah*_*ief 5 cypress

我需要创建一个文件并通过 cypress 的一些代码将其复制到某处。

第一步是使用 cy.writeFile 完成的,现在创建了 myfile.txt

现在我需要将其复制到类似的地方c:/lib/Sth

我用了这个命令cy.exec('cp myfile.txt c:/lib/sth')

它显示此错误消息:

CypressError: cy.exec('cp myfile.txt c:/lib/sth') failed because the command exited with a non-zero code. Pass {failOnNonZeroExit: false}` 忽略退出代码失败。有关失败的信息:代码:127

我添加{failOnNonZeroExit: false}到我的代码中以忽略错误,它可以工作,但我的文件没有被复制。

还有其他解决方案可以从 cypress 复制我的文件吗?

Tri*_*mad 2

您可以采取的解决方法是设置自定义cypress 任务来执行命令。

就像是

// cypress/plugins/index.ts
const { exec } = require('child_process');

/**
 * @type {Cypress.PluginConfig}
 */
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config

  on('task', {
    async execute(command: string) {
      return new Promise((resolve, reject) => {
        try {
          resolve(exec(command));
        } catch (e) {
          reject(e);
        }
      });
    },
  });
};
Run Code Online (Sandbox Code Playgroud)

然后像这样执行

cy.task('execute', 'cp myfile.txt c:/lib/sth');
Run Code Online (Sandbox Code Playgroud)

cy.exec()这是我在尝试执行相对复杂的节点脚本时对我不起作用时提出的一个潜在解决方案。

您可以尝试的另一件事是创建一个非常简单的脚本来复制文件,然后尝试执行该脚本。

祝你好运!