根据我需要 运行 中的套件的环境更改 .page URL

Change .page URL based on environment I need to run the suite in

我们一直在使用暂存环境构建自动化套件,但即将上线并希望准备好告诉项目运行(暂存、生产)的位置。

环境中站点之间的唯一区别是 URL。我的问题是,从头到尾,如何通过 CLI 选项设置 .page URL?

现在,我已经创建了一个环境配置文件来保存我们的暂存和生产 URLS,然后我将数据调用到我的测试文件中。现在这没问题,但我需要创建一个脚本,其中包含一个选项,可以在 运行 时间设置环境,而无需在启动之前进行手动查找和替换。

我在网上四处张望,发现我认为是代码片段和一般说明,但我本质上不是开发人员,所以我很生气。如果我能为此获得 ELI5,那就太棒了。

我现在正在做的事的例子:

const env = require('../environment_variables.json')


fixture `blog`
  .page `${env.production}`

然后我在启动套件之前手动将制作更改为暂存,反之亦然。

由于该项目将从 CICD 运行,我希望能够在我的 CLI 和脚本中执行类似的操作:

testcafe env=production

然后将在每个测试文件的 .page 调用处设置 env 值。

谢谢!

有多种方法可以做到这一点。我在这种情况下成功地使用了环境变量,所以我会分享这个解决方案,因为它会解决你的问题。

我在项目的根目录下创建config.json

{    
    "baseUrl": {
        "dev": "https://dev.com/",
        "staging": "https://staging.com/",
        "prod": "https://prod.com/"
    }
}

然后我在某个地方创建了两个辅助函数,比如 Helpers/env.js:

import config from '../config';

function getEnv () {
    return process.env.TESTCAFE_ENV;
}

function getBaseUrl () {
    return config.baseUrl[getEnv()];
}

export { getEnv, getBaseUrl };

然后在我的测试文件中 Tests/:

import { getBaseUrl } from '../Helpers/env';

const baseUrl = getBaseUrl();

fixture `Test Suite`
    .page(baseUrl);

就是这样。然后当我需要在开发上进行 运行 测试时,我执行:

$ TESTCAFE_ENV=dev testcafe

分期:

$ TESTCAFE_ENV=staging testcafe

并用于生产:

$ TESTCAFE_ENV=prod testcafe