If you look at the error itself, it tells you what is going on:
Within the "img-div" element, I should see either a <figcaption> or <div> element with a corresponding id="img-caption" that contains textual content describing the image shown in "img-div".
So that’s telling you , it’s looking for either a div or figcaption with the id img-caption. You have that id on an h2 tag, instead.
There are one of two ways to fix this. First, you could simply change that h2 to a div, and it’s fixed.
Option two, you could use Semantic HTML. Change the img-div from being a div to being something like a div:
<figure id="img-div">
<img src="<!--your images source -->" />
<figcaption id="img-caption">The text for the image caption.</figcaption>
</figure>
It won’t cause more problems, it will still work like a div, but it’s more descriptive of the intent there. The image and its caption are treated as a discrete bit of data, within a figure tag.