Вы можете использовать лямбду в своем тесте:
expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: #{detailed info}." }
Даст вам вывод как:
Failures:
1) Blah blah blah
Failure/Error: expect(page).to have_text("Doesn't exist"), lambda { "This failed for all sorts of reasons, let me list them out here: nil." }
This failed for all sorts of reasons, let me list them.
# ./spec/features/search_results_spec.rb:19:in `block (2 levels) in <top (required)>'
Это может быть немного сложно, если у вас есть код, подобный expect(x).to eq y.count
, так как простое нажатие на лямбду дает 2 заданных параметра, но ожидается 0..1. чтобы обойти это использование форматов, таких как
expect(x).to (eq y.count), lambda { "message" }