<div dir="ltr">Hi all,<div><br></div><div>I've noticed that we have quite a few places in our unit test suite that test for correctness of behaviour by searching for quite complex HTML fragments in page renders. An example would be openstack_dashboard/dashboards/project/access_and_security/floating_ips/tests.py</div><div><br></div><div>(there's plenty more - search for "expected_string")</div><div><br></div><div>The code in question is testing far more than it should. We are testing for the presence of the "disabled" class in an element which has a clear id attribute by constructing the whole element HTML, including label and title text, glyph icon, other classes, the tag type itself, etc. All of those things are quite irrelevant to the test in question, but any change to those will cause the test to break unnecessarily.</div><div><br></div><div>In these cases a far more robust and targeted unit test would construct a DOM from the rendered HTML and use semantic searches to determine the correctness of behaviour. I would recommend we consider using something like <a href="https://django-with-asserts.rtfd.org/">https://django-with-asserts.rtfd.org/</a> which allow us to write:</div><div><br></div><div> with self.assertHTML(res, element_id='security_groups__action_create') as elem:</div><div>    self.assertContains(elem.attrib['class'], 'disabled')</div><div><br></div><div>Who's with me?</div><div><br></div><div><br></div><div>    Richard</div><div><br></div></div>