expectCleanTestSurfaceAtEnd function

void expectCleanTestSurfaceAtEnd()

Adds a setUpAll and tearDownAll pair to the current group that verifies that no new elements exist on the test surface after everything is done running.

main() {
  group('SomeComponent', () {
    expectCleanTestSurfaceAtEnd();

    // Additional `group`s and/or `test`s
  });
}

Implementation

void expectCleanTestSurfaceAtEnd() {
  late Set<Element> nodesBefore;

  setUpAll(() {
    nodesBefore = document.body!.children.toSet();
  });

  tearDownAll(() {
    Set<Element> nodesAfter = document.body!.children.toSet();
    var nodesAdded = nodesAfter.difference(nodesBefore).map((element) => element.outerHtml).toList();

    expect(nodesAdded, isEmpty, reason: 'tests should leave the test surface clean.');
  });
}