如何使用 jasmine 自定义记者制作失败规格列表并发布到 Slack?

2024-01-15

我正在尝试使用自定义 jasmine 报告器并获取 specDone 函数中所有失败规格的列表:

specDone: function(result) {
    if(result.status == 'failed') {          
        failedExpectations.push(result.fullName);
        console.log(failedExpectations);         
    }       
}

where failedExpectations将存储失败规格的完整列表,我需要在afterLaunch量角器配置文件中的函数。但由于每次新规范运行时都会加载配置文件,它基本上会被覆盖,并且范围界定使我无法在afterLaunch函数,这就是我调用 slack api 的地方。有办法实现这一点吗?

这就是我的基础:http://jasmine.github.io/2.1/custom_reporter.html http://jasmine.github.io/2.1/custom_reporter.html


我认为最好的方法是使用 @slack/web-api 在每个规范(*或每个“it”和“describe”)之后异步发布结果。这样您就不必担心覆盖。基本上,您在测试运行期间“收集”所有结果,并在下一个套件开始之前发送它。请记住,所有这些都应该在课堂上完成。

首先,准备好“@slack/web-api”,然后安装它(https://www.npmjs.com/package/@slack/web-api https://www.npmjs.com/package/@slack/web-api).

npm i -D '@slack/web-api'

然后将其导入到您的报告器中:

import { WebClient } from '@slack/web-api';

并使用您的令牌对其进行初始化。 (https://slack.com/intl/en-pl/help/articles/215770388-Create-and-regenerate-API-tokens https://slack.com/intl/en-pl/help/articles/215770388-Create-and-regenerate-API-tokens):

this.channel = yourSlackChannel;
this.slackApp = new WebClient(yourAuthToken);

不要忘记邀请您的 Slack 应用程序加入频道。 然后根据您的需要和可能性准备您的结果“界面”。例如:

this.results = {
      title: '',
      status: '',
      color: '',
      successTests: [],
      fails: [],
    };

然后准备一个方法/函数来发布你的结果:

 postResultOnSlack = (res) => {
try {
  this.slackApp.chat.postMessage({
    text: `Suit name: ${res.title}`,
    icon_emoji: ':clipboard:',
    attachments: [
      {
        color: res.color,
        fields: [
          {
            title: 'Successful tests:',
            value: ` ${res.successTests}`,
            short: false
          },
          {
            title: 'Failed tests:',
            value: ` ${res.fails}`,
            short: false
          },
        ]
      }
    ],
    channel: this.channel
  });
  console.log('Message posted!');
} catch (error) {
  console.log(error);
}

当您准备好所有这些后,就可以“收集”您的结果了。 因此,在每次“suitStart”时,请记住“清除”结果:

  suiteStarted(result) {
    this.results.title = result.fullName;
    this.results.status = '';
    this.results.color = '';
    this.results.successTests = [];
    this.results.fails = [];
  }

然后收集成功和失败的测试:

 onSpecDone(result) {
    this.results.status = result.status

 // here you can push result messages or whole stack or do both:
    this.results.successTests.push(`${test.passedExpectations}`);

    for(var i = 0; i < result.failedExpectations.length; i++) {
    this.results.fails.push(test.failedExpectations[i].message);
    }

 // I'm not sure what is the type of status but I guess it's like this:
    result.status==1 ? this.results.color = #DC143C : this.results.color = #048a04;
    }

最后发送给他们:

suiteDone() {
      this.postResultOnSlack(this.results);
    }

注:这只是我的记者的草稿。我只是想向你展示流程。我正在查看 Jasmine 自定义报告器,但这是基于“规范报告器”的 WDIO 自定义报告器。它们都非常相似,但您可能必须对其进行调整。要点是在测试期间收集结果并在测试运行的每个部分之后发送它们。 *你可以查一下这个解释:https://webdriver.io/docs/customreporter.html https://webdriver.io/docs/customreporter.html我强烈推荐这个框架,你可以将它与 Jasmine 一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 jasmine 自定义记者制作失败规格列表并发布到 Slack? 的相关文章

随机推荐

  • 在 Android 运行时更改主题颜色 [重复]

    这个问题在这里已经有答案了 如果在应用程序中添加多个主题 则可以更改主题颜色 并且可以在运行时轻松切换 另一种方法是逐一更改 actiobar textview 等所有对象的颜色 这条路很长 需要很多代码 我发现的简单方法是更改 color
  • 使用 VueJs 使用 props 初始化应用程序组件

    我将 Vue Js 与 Vue Cli 结合使用 我想根据 源 参数加载 CSS 文件 该参数将传递到我的主应用程序组件的启动 我想在索引文件中像这样初始化我的组件 主要 js import Vue from vue import App
  • SQL Server max 中“每行字节数”到底是什么意思?容量规格

    See 最大容量规格 https msdn microsoft com en us library ms143432 aspx 因此 每行字节数 旁边是 8060 但稍后 每个 ntext 或 nvarchar max 列的字符数 旁边是
  • 如何创建通用工厂?

    我正在开发一个 Webmethod 集合的客户端 Silverlight 接口 我试图避免为每个网络方法编写任何自定义代码 所以我创建了一个ServiceCall
  • HttpContext.Current.Response.AddHeader() 未设置 Content-Type 标头

    我正在使用第三方软件从 html 文档渲染 PDF 我创建了一个小型测试项目并使用OnClick事件的
  • Lerna 指定运行顺序

    在我的 monorepo 中 我有 3 个包package1 package2 package3 每个包都包含一个名为的 npm 脚本build 但是 这些包并未链接在一起 IE 没有require 在任何链接到同级包的包中 从根文件夹中
  • 旋转和裁剪 UIImage

    想象一下我有一个 UIImage 我需要旋转然后在全局坐标系 不是 UIImage 坐标系 中裁剪它 所以结果图像将被裁剪and旋转 我怎样才能做到这一点 CGImageCreateWithImageInRect 将仅在图像相对坐标中裁剪图
  • 调整 ListView 列以适应 WinForms

    我面临列表视图列的调整大小问题 如果你锚 对接listview转普通winform比listview锚点或对接效果好 我的意思是 当 winform 最大化时 listview 将调整大小并适合 winform 但您在其上设计的列不会随 l
  • 复制对象数组,然后修改原始对象而不影响副本

    所以我一直在为这个看似微不足道的问题而绞尽脑汁 我不一定知道要搜索什么 我已经四处寻找解决方案 我需要制作二维数组的副本 该数组由对象 我创建的一个称为 Cell 的类 组成 但是一旦我制作了副本 我就会将该副本存储到哈希映射中 以供稍后参
  • WebSphere 响应缓冲

    我正在向WebSphere 的response getOutputStream 编写一个大型响应 数百Mb 看起来 Web Sphere 总是将整个输出流数据存储在一些内部内存缓冲区中 然后再将其提供给客户端 因此 我的服务器处理 生成数据
  • PHP print_r 仅显示数组而不是纯文本

    我再次寻求帮助 我找到了这个停用词脚本 我基本上从字符串中删除了所有常见单词
  • 有没有办法从 Google Contacts 联系人 ID 获取 Google People API 资源 ID?

    我们将用户的 contactId 存储在数据库中 并在用户从我们的应用程序请求时使用它来获取 编辑 删除联系人 现在 Google Contacts API 即将停用 我们需要使用资源 ID 调用 Google People API 来执行
  • OpenGL ES - 在片段着色器中旋转纹理而不失真

    我正在使用 Android 的 GPUImage 库对位图应用一些效果 本质上 GPUImage接受位图并使用OpenGL ES 将1 x 1立方体渲染到位图大小的帧缓冲区中 用户可以编写自定义片段着色器来控制输出 我正在尝试编写一个片段着
  • 如何在 mongodb 中按周对文档进行分组

    id ObjectId 568b650543712795bf864a45 companyId 55e2d7cfdc8f74d14f5c900f timeStamp ISODate 2014 12 03T18 30 00 000Z id Ob
  • NLog 无法与 MSTest 一起使用,配置应该放在哪里?

    我们最近将测试从 NUnit 迁移到 MSTest 我正在努力让之前通过的测试运行 据我所知 MSTest 无法检测到 NLog 配置 我的 App config 中有 Nlog 配置 这不会导致 NUnit 出现问题 有人有什么想法吗 改
  • Gettext自动评论生成

    我正在使用 gettext 为 php 项目执行 i18n 操作 我想使用自动评论功能 http www gnu org software gettext manual gettext html PO Files在翻译用 id 替换的长短语
  • int* x[n][m] 和 int (*x) [n][m] 有什么区别?

    照我看来int x n m 宣称x是一个指向整数的指针的二维数组 因此分配内存应该像x i j new int正如预期的那样 它工作得很好 现在 如果我将声明更改为 int x n m x i j new int不再有效并导致编译错误 x
  • iOS SpriteKit SKAction 完成调用不起作用/创建奇怪的结果

    我试图让 SKNode 根据命令移动到屏幕上 我设置了以下 SKAction 链 以便 1 节点向上移动并移出屏幕 然后 2 节点向下移动到起始位置 然后 3 开始四处移动 我使用以下代码来尝试实现这一点 SKAction moveUp S
  • Malloc 分配方案

    是的 我正在学习计算机系统课程 我对实现 malloc 的各种分配方案有一些疑问 对于显式列表 如果我使用类似 LIFO 的堆栈实现 malloc 那么拥有指向先前释放的内存的指针的确切目的是什么 比如为什么需要双向链表 单链表不是也能工作
  • 如何使用 jasmine 自定义记者制作失败规格列表并发布到 Slack?

    我正在尝试使用自定义 jasmine 报告器并获取 specDone 函数中所有失败规格的列表 specDone function result if result status failed failedExpectations push