code: def make_report(self, outcome):
          
          failures = self.getreports('failed')
          if not failures:
              return
          for rep in failures:
              # Check if this is a notebook node
              msg = self._getfailureheadline(rep)
              lines = rep.longrepr.splitlines()
              if len(lines) > 1:
                  self.section(msg, lines[1])
              self._outrep_summary(rep)
          tmpdir = tempfile.mkdtemp()
          try:
              ref_file = os.path.join(tmpdir, 'reference.ipynb')
              test_file = os.path.join(tmpdir, 'test_result.ipynb')
              with io.open(ref_file, "w", encoding="utf8") as f:
                  nbformat.write(self.nb_ref, f)
              with io.open(test_file, "w", encoding="utf8") as f:
                  nbformat.write(self.nb_test, f)
              run_server(
                  port=0,     # Run on random port
                  cwd=tmpdir,
                  closable=True,
                  on_port=lambda port: browse(
                      port, ref_file, test_file, None))
          finally:
              shutil.rmtree(tmpdir)
docs: Make report in form of two notebooks.
  
          Use nbdime diff-web to present the difference between reference
          cells and test cells.