I accidentally sent a private reply rather than a public one, and
the exact text escapes me, but the TL;DR of that reply is both sides are
executed in order to produce better failure output, roughly what I
replied to nick was that:
```Ruby
expect(thing).to pass.and pass_with(...)
```
produces:
```
Failure/Error: expect(thing).to pass().and pass_with(...)
expected thing to pass
...and:
expected thing to pass_with ...
```
So if you want to short circuit, you can execute them sequentially,
```Ruby
expect(thing).to pass
expect(thing).to pass_with(...)
```
This
might not make much sense with this contrived example, but its intent
when introduced was to allow specs to make multiple assertions about a
thing, and have that failure output.
Consider an "expensive" acceptance test like:
```Ruby
expect(html).to have_header("My article title").and have_content("My article text")
```
It's
obviously much better to see either failure or both when the test fails
than to re run the test to see the second failure after fixing the
first...
Cheers (and apologies to Nick as he'll receive this twice :))
Jon