cy.exec 后台进程超时

cy.exec timeout with backgrounded process

我正在尝试使用 cy.exec 启动服务器并像这样在后台运行该进程:

cy.exec('nohup python -m my_module arg_1 &', { failOnNonZeroExit: false }).then(result => {
    if (result.code != 0) {
      throw new Error(`Execution of "${command}" failed
      Exit code: ${result.code}
      Stdout:\n${result.stdout}
      Stderr:\n${result.stderr}`);
    }
  })

然而,这会导致超时错误,就好像进程在前台 运行 一样。我意识到用 cy.exec 启动服务器是一种反模式,但我有一个非常特殊的情况,我需要为每个测试启动一个具有不同参数的服务器。 我认为通过后台处理我可以绕过 cy.exec.

的超时要求

如果这不是一个选项,那么对于这种情况的最佳实践是什么,即每个 cypress 测试启动不同的服务器?

您可以尝试使用 cypress 任务而不是“cy.exce”

例子 在你的 cypress/plugins/index.js

const startServer = async function (ExecuteCommandWithPath) {
    
    exec(ExecuteCommandWithPath,
        (error, stdout, stderr) => {
            console.log(stdout);
            console.log(stderr);
            if (error !== null) {
                console.log(`exec error: ${error}`);
                return false;
            }
            return true;
        });
};

module.exports = ( on, config ) => {
  on("task", {
PythonServerStatUp(ExecuteCommandWithPath) {

            return new Promise((resolve, reject) => {
                startServer(ExecuteCommandWithPath);
                resolve(false);
            });
        },
});
}