anchor.diff:      exit(1);
     }
   
  -  String _getUriForBrowserTest(TestInformation info,
  -                            String pathComponent,
  -                            subtestNames,
  -                            subtestIndex) {
  +  Uri _getUriForBrowserTest(String pathComponent, String subtestName) {
       // Note: If we run test.py with the "--list" option, no http servers
  -    // will be started. So we use PORT/CROSS_ORIGIN_PORT instead of real ports.
  -    var serverPort = "PORT";
  -    var crossOriginPort = "CROSS_ORIGIN_PORT";
  -    if (!configuration['list']) {
  -      assert(configuration.containsKey('_servers_'));
  -      serverPort = configuration['_servers_'].port;
  -      crossOriginPort = configuration['_servers_'].crossOriginPort;
  -    }
  -
  -    var localIp = configuration['local_ip'];
  -    var url= 'http://$localIp:$serverPort$pathComponent'
  -        '?crossOriginPort=$crossOriginPort';
  -    if (info.optionsFromFile['isMultiHtmlTest'] && subtestNames.length > 0) {
  -      url= '${url}&group=${subtestNames[subtestIndex]}';
  -    }
  -    return url;
  +    // will be started. So we return a dummy url instead.
  +    if (configuration['list']) {
  +      return Uri.parse('http://listing_the_tests_only');
  +    }
  +    assert(configuration.containsKey('_servers_'));
  +    int serverPort = configuration['_servers_'].port;
  +    int crossOriginPort = configuration['_servers_'].crossOriginPort;
  +    Map parameters = {'crossOriginPort': crossOriginPort.toString()};
  +    if (subtestName != null) {
  +      parameters['group'] = subtestName;
  +    }
  +    return new Uri(scheme: 'http',
  +                   host: configuration['local_ip'],
  +                   port: serverPort,
  +                   path: pathComponent,
  +                   queryParameters: parameters);
     }
   
     void _createWrapperFile(String dartWrapperFilename,
  
positive.code:       }
  
        // Create BrowserTestCase and queue it.
        String testDisplayName = '$suiteName/$testName';
        var testCase;
        if (info.optionsFromFile['isMultiHtmlTest']) {
          testDisplayName = '$testDisplayName/${subtestNames[subtestIndex]}';
          testCase = new BrowserTestCase(
              testDisplayName,
              commandSet,
              configuration,
              expectations['$testName/${subtestNames[subtestIndex]}'],
              info,
              isNegative(info),
              fullHtmlPath);
        } else {
          testCase = new BrowserTestCase(
              testDisplayName,
              commandSet,
              configuration,
              expectations,
              info,
              isNegative(info),
              fullHtmlPath);
        }
  
        enqueueNewTestCase(testCase);
        subtestIndex++;
      } while (subtestIndex < subtestNames.length);
    }
  
    void enqueueHtmlTest(
  
negative.code:     new File.fromUri(htmlFile).writeAsStringSync(contents);
  
      var htmlPath = _createUrlPathFromFile(new Path(htmlFile.toFilePath()));
      var fullHtmlPath = _getUriForBrowserTest(htmlPath, null).toString();
      var commands = [
          CommandBuilder.instance.getBrowserHtmlTestCommand(
              runtime,
  