Heroku CI支持TAP(测试任何协议)输出,以在检测到它时提供增强的UI。
但是,我一直无法获得Heroku CI来显示此增强的UI。我的猜测是我正在生成的TAP输出不太正确,但是我看不出它到底出了什么问题。
如果您的TAP输出专门用于Heroku CI,并且肯定显示了增强的UI,请在下面提供示例吗?
此外,您能否确认在TAP输出之前和/或之后是否可以打印出任何其他信息,还是围绕TAP报告的输出是否需要完全为空?
答案 0 :(得分:0)
在撰写本文时,在Heroku上,具有前导空格的TAP输出线无效。 Heroku CI在ruby-buildpack上的默认测试命令会自动缩进所有测试输出,因此由于这些自动缩进,TAP输出无效。
要变通解决自动缩进并产生有效的TAP输出,请在app.json
中指定自定义测试脚本。使用自定义测试脚本绕过ruby-buildpack的自动缩进。
下面是一个示例app.json
和一个自定义测试脚本bin/rspec
:
{
"environments": {
"test": {
"addons": ["heroku-postgresql:in-dyno"],
"buildpacks": [
{ "url": "heroku/ruby" },
{ "url": "https://github.com/heroku/heroku-buildpack-google-chrome" }
],
"env": {
"DISABLE_SPRING": "true"
},
"scripts": {
"test": "bin/rspec"
}
}
}
}
这是一个有效的TAP(第12版)输出示例,Heroku CI将对其进行处理以显示增强的UI(如果您一直在观看正在进行的构建,则可能需要刷新页面才能看到增强的UI):< / p>
# Randomized with seed 12345
1..2
ok 1 - PayHelper#js_host returns production host as default
not ok 2 - PayHelper#js_url returns production v9 URL as default
#
# PayHelper#js_url returns production v9 URL as default
# Failure/Error: expect(helper.js_url).to eq 'https://example.com/v9/'
#
# expected: value != "https://example.com/v9/"
# got: "https://example.com/v9.0/"
#
# (compared using ==)
# # ./spec/helpers/pay_helper_spec.rb:15:in `block (3 levels) in <top (required)>'
# # -e:1:in `<main>'
1..2
# Randomized with seed 12345
注意,上面的输出是TAP规范版本12,尽管我了解Heroku也支持TAP规范版本13。