function getAssertionReport(actual, expected, reportOptions = {}) {
  const localConsole = new LocalConsole();

  expected = pruneExpectations(localConsole, actual.lhr, expected, reportOptions);
  const comparisons = collateResults(localConsole, actual, expected);

  let correctCount = 0;
  let failedCount = 0;

  comparisons.forEach(assertion => {
    if (assertion.equal) {
      correctCount++;
    } else {
      failedCount++;
    }

    if (!assertion.equal || reportOptions.isDebug) {
      reportAssertion(localConsole, assertion);
    }
  });

  return {
    passed: correctCount,
    failed: failedCount,
    log: localConsole.getLog(),
  };
}
Log all the comparisons between actual and expected test results, then print
summary. Returns count of passed and failed tests.
@param {{lhr: LH.Result, artifacts: LH.Artifacts, networkRequests?: string[]}} actual
@param {Smokehouse.ExpectedRunnerResult} expected
@param {{runner?: string, isDebug?: boolean}=} reportOptions
@return {{passed: number, failed: number, log: string}}