anchor.diff:        ...<String>['-r', 'compact'],
         '--concurrency=$concurrency',
         if (isDebug) '--pause-after-load',
  +      // Don't pollute logs with output from tests that are expected to fail.
  +      if (expectFailure)
  +        '--reporter=name-only',
         '--platform=${SupportedBrowsers.instance.supportedBrowserToPlatform[browser]}',
         '--precompiled=${environment.webUiRootDir.path}/build',
         SupportedBrowsers.instance.browserToConfiguration[browser],
         '--',
         ...testFiles.map((f) => f.relativeToWebUi).toList(),
       ];
  +
  +    if (expectFailure) {
  +      hack.registerReporter(
  +        'name-only',
  +        hack.ReporterDetails(
  +        'Prints the name of the test, but suppresses all other test output.',
  +        (_, hack.Engine engine, __) => NameOnlyReporter(engine)),
  +      );
  +    }
   
       hack.registerPlatformPlugin(<Runtime>[
         SupportedBrowsers.instance.supportedBrowsersToRuntimes[browser]
  
positive.code: import 'package:meta/meta.dart';
  import 'package:path/path.dart' as path;
  import 'package:pool/pool.dart';
  import 'package:test_core/src/runner/hack_register_platform.dart'
      as hack;
  import 'package:test_api/src/backend/runtime.dart';
  import 'package:test_core/src/executable.dart'
  
negative.code: }
  
  class TestFailureException implements Exception {}
  
  /// Prints the name of the test, but suppresses all other test output.
  ///
  /// This is useful to prevent pollution of logs by tests that are expected to
  /// fail.
  class NameOnlyReporter implements hack.Reporter {
    NameOnlyReporter(hack.Engine testEngine) {
      testEngine.onTestStarted.listen(_printTestName);
    }
  
    void _printTestName(hack.LiveTest test) {
      print('Running ${test.groups.map((hack.Group group) => group.name).join(' ')} ${test.individualName}');
    }
  
    @override
    void pause() {}
  
    @override
    void resume() {}
  }
  