This is a testharness.js-based test.
[FAIL] heading with link referencing image using aria-labelledby, that in turn references text element via aria-labelledby
assert_equals: <h3 data-expectedlabel="image link" data-testname="heading with link referencing image using aria-labelledby, that in turn references text element via aria-labelledby" class="ex">\n <a href="#" aria-labelledby="nested_image_label3">\n <span class="note" id="crossref_link">link</span><!-- this text is skipped the first time around because of aria-labelledby on parent element -->\n </a>\n <!-- but it's picked up again in inverse order b/c of cross-referencial aria-labelledby edge case -->\n <img id="nested_image_label3" alt="image" aria-labelledby="crossref_link" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==">\n</h3> expected "image link" but got "image"
[FAIL] heading with link referencing image using aria-labelledby, that in turn references itself and another element via aria-labelledby
assert_equals: <h3 data-expectedlabel="image link" data-testname="heading with link referencing image using aria-labelledby, that in turn references itself and another element via aria-labelledby" class="ex">\n <a href="#" aria-labelledby="nested_image_label4">\n <span class="note" id="crossref_link2">link</span><!-- this text is skipped the first time around because of aria-labelledby on parent element -->\n </a>\n <!-- but it's picked up again (after the self-referencial image alt) in inverse order b/c of cross-referencial aria-labelledby edge case -->\n <img id="nested_image_label4" alt="image" aria-labelledby="nested_image_label4 crossref_link2" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==">\n</h3> expected "image link" but got "image"
Harness: the test ran to completion.