I had some issues diagnosing 500 errors that were happening with Mink. The main issue being that a page would 500, but then the test would proceed and fail a later step. Unfortunately the HTML/screenshot that was captured does not capture the error, but instead captures the assertion which doesn’t help debug.
It’s possible to react after a step and check if the last Mink request was a 500 or not. This way, we fail on the 500, and not on the subsequent assertions.
<?php /** * @AfterStep */ public function afterStep(Behat\Behat\Hook\Scope\AfterStepScope $scope) { // Fail if we got a 500. try { $this->minkContext->assertSession(); $this->minkContext->assertNotHttpResponse(500); } catch (Behat\Mink\Exception\DriverException $e) { // Page is not loaded. } }