如果 URL 包含“xyz”,如何有条件地跳过测试?在 QA 环境“abc”中运行的某些测试不应在生产“xyz”环境中运行。
我还没有找到有条件地检查环境以触发测试的好例子。需要动态检查 baseURL,并且最好在 beforeEach 中跳过测试。
运行赛普拉斯 6.2.0
beforeEach(() => {
login.loginByUser('TomJones');
cy.visit(`${environment.getBaseUrl()}${route}`);
});
it('test page', function () {
if environment.getBaseUrl().contains("xyz")
then *skip test*
else
cy.intercept('GET', '**/some-api/v1/test*').as('Test'););
cy.get('#submitButton').click();
})
Run Code Online (Sandbox Code Playgroud)
潜在的解决方案(经过测试并成功尝试):我通过 CLI 使用了过滤(分组)和文件夹结构的组合,我设置了文件夹 /integrations/smokeTest/QA 和 /integrations/smokeTest/Prod/
1.QA Test Run:
npm run *cy:filter:qa* --spec "cypresss/integration/smokeTests/QA/*-spec.ts"
2.Run All (both QA and PROD tests)
npm run cypress:open --spec "cypresss/integration/smokeTests/*/*-spec.ts"
3. Prod Test Run:
npm run cy:filter:prod --spec "cypresss/integration/smokeTests/PROD*/*-spec.ts"
Run Code Online (Sandbox Code Playgroud) cypress ×1