查找不属于 运行 的测试作为集合标记列表的一部分

Find tests that were not run as part of set tag list

我正在 CucumberJS 中寻找一种方法来报告哪些测试没有作为特定 运行 的一部分执行。

示例: 如果我的标签是 ['@E2E', '~@higherEnvOnly'],我想要一份报告,说明哪些测试因 ~@higherEnvOnly 标签而被排除。

我已经能够获取每个功能下的所有功能和方案的列表以及标签和名称。我想知道是否有一份报告可以给我排除的测试。

为了提供更多视角,需要的原因是同一组测试可能不会每次都运行,因为要包含(或排除)的功能列表是根据应用程序动态识别的配置(特定于我们 运行 测试所针对的每个环境)。因此,对于每个环境来说,找出哪些测试是 运行 以及哪些测试被排除在外对我们来说很重要。

在我的案例中,我使用 protractor-beautiful-reporter 它报告所有案例失败并注销消息(原因)。

我可以通过不将要排除的标签传递到 specs 属性 中来解决这个问题,而是使用 Before 挂钩来验证当前场景标签是否匹配排除的标签。示例:

在我的配置中:

base.config.cucumberOpts.specs = ['@E2E'];

hooks.ts中:

var excludedTag = '@tagToExclude';
Before((scenario) => {
  var excludeScenario = false;
  scenario.pickle.tags.forEach(currTag => {
    if (currTag.name === excludedTag) {
      excludeScenario = true;
      break;
    }
  }
  return excludeScenario ? 'skipped' : '';
});

这确保报告实际上将 @tagToExclude 显示为 skipped