filter.successful("Then step 4.3");
filter.afterScenario();
filter.afterStory(false);
// Then
InOrder inOrder = inOrder(delegate);
// Scenarios 1 and 4 are successful
verify(delegate, never()).beforeScenario("My scenario 1");
verify(delegate, never()).successful("Given step 1.1");
verify(delegate, never()).ignorable("!-- ignore me");
verify(delegate, never()).successful("When step 1.2");
verify(delegate, never()).successful("Then step 1.3");
verify(delegate, never()).beforeScenario("My scenario 4");
verify(delegate, never()).successful("Given step 4.1");
verify(delegate, never()).successful("When step 4.2");
verify(delegate, never()).successful("Then step 4.3");
// Scenarios 2 and 3 have pending or failed steps
inOrder.verify(delegate).dryRun();
inOrder.verify(delegate).beforeStory(story, false);
inOrder.verify(delegate).beforeScenario("My scenario 2");
inOrder.verify(delegate).givenStories(givenStories);
inOrder.verify(delegate).givenStories(givenStoryPaths);
inOrder.verify(delegate).successful("Given step 2.1");
inOrder.verify(delegate).pending("When step 2.2");
inOrder.verify(delegate).notPerformed("Then step 2.3");
inOrder.verify(delegate).afterScenario();
inOrder.verify(delegate).beforeScenario("My scenario 3");
inOrder.verify(delegate).beforeExamples(asList("Given step <one>", "Then step <two>"), examplesTable);
inOrder.verify(delegate).example(tableRow);
inOrder.verify(delegate).successful("Given step 3.1");
inOrder.verify(delegate).successful("When step 3.2");
inOrder.verify(delegate).ignorable("!-- ignore me too");
inOrder.verify(delegate).failed("Then step 3.3", anException);
inOrder.verify(delegate).failedOutcomes("When failed outcomes", outcomesTable);
inOrder.verify(delegate).afterExamples();
inOrder.verify(delegate).afterScenario();
inOrder.verify(delegate).afterStory(false);
}