如何制作一个失败的规格清单使用茉莉自定义记者发布到slack
How to make a list of failed specs using jasmine custom reporter to post to slack?
我正在尝试在一个定制的茉莉记者工作,并在specDone函数中获得所有失败规格的列表:
specDone: function(result) {
if(result.status == 'failed') {
failedExpectations.push(result.fullName);
console.log(failedExpectations);
}
}
其中failedExpectations
将存储失败规格的完整列表,我需要在量度器配置文件中的afterLaunch
函数中访问此列表。但是由于配置文件每次加载一个新的规范运行时,它基本上被覆盖,作用域是这样的,我不能在afterLaunch
函数中访问它,这就是我调用slack api的地方。有办法做到这一点吗?
这是我有它的基础:http://jasmine.github.io/2.1/custom_reporter.html
我认为最好的方法是在每个spec(*)或每个"it"之后异步发布结果。和"描述")使用@slack/web-api。这样你就不用担心重写了。基本上你是"收集"。测试运行期间的所有结果,并在下一个套件开始之前发送。
首先你准备你的'@slack/web-api',所以安装它(https://www.npmjs.com/package/@slack/web-api)。
npm i -D '@slack/web-api'
然后将其导入到您的reporter中:
import { WebClient } from '@slack/web-api';
并用令牌初始化它。(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);
}
注:这只是根据我的记者写的草稿。我只是想给你展示流程。我正在寻找茉莉自定义记者,但这是基于WDIO自定义记者基于"spec记者"。它们都很相似,但你可能要调整一下。重点是在测试过程中收集结果,并在测试运行的每个部分之后发送结果。*你可以查看这个解释:https://webdriver.io/docs/customreporter.html我强烈推荐这个框架,你可以在上面使用Jasmine。
- jQuery Validate不适用于自定义单选按钮
- 具有用户范围的Google Analytics自定义维度使用情况
- 如何使用CSS和Javascript或DOJO制作自定义单选按钮
- 谷歌分析自定义变量使用情况
- CKEDITOR 4 如何在使用自定义命令使用 CTRL+Z 撤消之前制作快照
- 为什么自定义单选按钮未被禁用
- 自定义单选按钮和复选框
- preventDefault()在剑道网格中不起作用'的自定义单击处理程序
- 我们如何配置谷歌自定义搜索使用API与PHP
- 自定义单选按钮-在IE中损坏
- JQuery自定义单选按钮代码(代码不起作用)
- 如何为wordpress创建一个自定义(不使用插件)新闻阅读器
- 自定义搜索使用jQuery目前不工作
- CSSJSJQuery:在多选择框中自定义单击(未选中)选项的颜色
- 值没有绑定到角自定义单选按钮组件中
- 是添加自定义属性使用jquery元数据插件跨浏览器
- 使用Google地图自定义覆盖来创建自定义图标(使用Raphael JS)
- 对自定义对象使用自定义方法
- 使用$http获取数据以供自定义服务使用
- 自定义单击“计数器”