{
  "versions": {
    "node": "v24.20.0",
    "playwright": "1.63.0",
    "chromium": "153.0.8010.12",
    "puppeteerCore": "25.11.0",
    "curl": "curl 8.18.0 (x86_64-pc-linux-gnu) libcurl/8.18.0 OpenSSL/3.5.5 zlib/1.3.1 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.68.0 librtmp/2.3 mit-krb5/1.22.1 OpenLDAP/2.6.10",
    "os": "linux x64",
    "recordedAt": "2026-09-17T08:40:51.911Z"
  },
  "results": [
    {
      "tool": "playwright",
      "case": "closed-port",
      "proxy": {
        "server": "http://127.0.0.1:41105"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 294,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "tcp-accept-silent",
      "proxy": {
        "server": "http://127.0.0.1:43481"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: Timeout 8000ms exceeded.",
      "ms": 8136,
      "proxySaw": [
        "tcp-accept-silent: accepted, never answers"
      ]
    },
    {
      "tool": "playwright",
      "case": "tcp-accept-close",
      "proxy": {
        "server": "http://127.0.0.1:41843"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_CONNECTION_RESET at https://127.0.0.1:PORT/",
      "ms": 142,
      "proxySaw": [
        "tcp-accept-close: accepted, closed at once"
      ]
    },
    {
      "tool": "playwright",
      "case": "not-http",
      "proxy": {
        "server": "http://127.0.0.1:38427"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_INVALID_HTTP_RESPONSE at https://127.0.0.1:PORT/",
      "ms": 137,
      "proxySaw": [
        "not-http: accepted, wrote junk"
      ]
    },
    {
      "tool": "playwright",
      "case": "connect-403",
      "proxy": {
        "server": "http://127.0.0.1:46411"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 151,
      "proxySaw": [
        "connect-403: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "connect-429",
      "proxy": {
        "server": "http://127.0.0.1:33293"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 148,
      "proxySaw": [
        "connect-429: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "connect-502",
      "proxy": {
        "server": "http://127.0.0.1:39393"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 149,
      "proxySaw": [
        "connect-502: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "connect-503",
      "proxy": {
        "server": "http://127.0.0.1:46721"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 132,
      "proxySaw": [
        "connect-503: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "connect-200-then-close",
      "proxy": {
        "server": "http://127.0.0.1:36121"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_CONNECTION_CLOSED at https://127.0.0.1:PORT/",
      "ms": 147,
      "proxySaw": [
        "connect-200-then-close: CONNECT 127.0.0.1:33609 auth=none",
        "connect-200-then-close: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "auth-required-no-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 407,
        "statusText": "Proxy Authentication Required",
        "ok": false,
        "proxyAuthenticate": "Basic realm=\"lab\"",
        "body": ""
      },
      "requestFailed": [
        "net::ERR_TUNNEL_CONNECTION_FAILED"
      ],
      "ms": 178,
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "auth-required-wrong-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857",
        "username": "labuser",
        "password": "***"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 407,
        "statusText": "Proxy Authentication Required",
        "ok": false,
        "proxyAuthenticate": "Basic realm=\"lab\"",
        "body": ""
      },
      "requestFailed": [
        "net::ERR_TUNNEL_CONNECTION_FAILED"
      ],
      "ms": 217,
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=wrong"
      ]
    },
    {
      "tool": "playwright",
      "case": "auth-required-correct-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857",
        "username": "labuser",
        "password": "***"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "statusText": "OK",
        "ok": true,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 247,
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok",
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok"
      ]
    },
    {
      "tool": "playwright",
      "case": "working-proxy",
      "proxy": {
        "server": "http://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "statusText": "OK",
        "ok": true,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 252,
      "proxySaw": [
        "working: CONNECT 127.0.0.1:33609 auth=none",
        "working: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "https-scheme-to-plain-http-proxy",
      "proxy": {
        "server": "https://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 231,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "socks5-scheme-to-http-proxy",
      "proxy": {
        "server": "socks5://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_SOCKS_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 224,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "socks5-closed-port",
      "proxy": {
        "server": "socks5://127.0.0.1:41105"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 205,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "socks5-with-credentials",
      "proxy": {
        "server": "socks5://127.0.0.1:36961",
        "username": "labuser",
        "password": "***"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "browserType.launch: Browser does not support socks5 proxy authentication",
      "ms": 1,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "plain-http-destination-connect-403-proxy",
      "proxy": {
        "server": "http://127.0.0.1:46411"
      },
      "url": "http://127.0.0.1:PORT/",
      "result": {
        "status": 403,
        "statusText": "Forbidden",
        "ok": false,
        "body": "proxy says 403"
      },
      "requestFailed": [],
      "ms": 232,
      "proxySaw": [
        "connect-403: GET http://127.0.0.1:37207/ auth=no"
      ]
    },
    {
      "tool": "playwright",
      "case": "plain-http-destination-auth-required-no-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857"
      },
      "url": "http://127.0.0.1:PORT/",
      "result": {
        "status": 407,
        "statusText": "Proxy Authentication Required",
        "ok": false,
        "proxyAuthenticate": "Basic realm=\"lab\"",
        "body": "proxy says 407"
      },
      "requestFailed": [],
      "ms": 246,
      "proxySaw": [
        "auth-required: GET http://127.0.0.1:37207/ auth=no"
      ]
    },
    {
      "tool": "playwright",
      "case": "loopback-destination-without-bypass-rule",
      "proxy": {
        "server": "http://127.0.0.1:46411",
        "bypass": ""
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 309,
      "proxySaw": [
        "connect-403: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "playwright",
      "case": "credentials-in-httpCredentials-not-proxy",
      "proxy": {
        "server": "http://127.0.0.1:38857"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "statusText": "OK",
        "ok": true,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 271,
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok",
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "closed-port",
      "proxy": {
        "server": "http://127.0.0.1:41105"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 807,
      "proxySaw": []
    },
    {
      "tool": "puppeteer",
      "case": "tcp-accept-close",
      "proxy": {
        "server": "http://127.0.0.1:41843"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_SOCKET_NOT_CONNECTED at https://127.0.0.1:PORT/",
      "ms": 666,
      "proxySaw": [
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once",
        "tcp-accept-close: accepted, closed at once"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "not-http",
      "proxy": {
        "server": "http://127.0.0.1:38427"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_INVALID_HTTP_RESPONSE at https://127.0.0.1:PORT/",
      "ms": 521,
      "proxySaw": [
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk",
        "not-http: accepted, wrote junk"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "connect-403",
      "proxy": {
        "server": "http://127.0.0.1:46411"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 575,
      "proxySaw": [
        "connect-403: GET http://clients2.google.com/time/1/current auth=no",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT accounts.google.com:443 auth=none",
        "connect-403: CONNECT www.google.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "connect-429",
      "proxy": {
        "server": "http://127.0.0.1:33293"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 605,
      "proxySaw": [
        "connect-429: GET http://clients2.google.com/time/1/current auth=no",
        "connect-429: CONNECT update.googleapis.com:443 auth=none",
        "connect-429: CONNECT accounts.google.com:443 auth=none",
        "connect-429: CONNECT www.google.com:443 auth=none",
        "connect-429: CONNECT update.googleapis.com:443 auth=none",
        "connect-429: CONNECT update.googleapis.com:443 auth=none",
        "connect-429: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "connect-502",
      "proxy": {
        "server": "http://127.0.0.1:39393"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 571,
      "proxySaw": [
        "connect-502: GET http://clients2.google.com/time/1/current auth=no",
        "connect-502: CONNECT update.googleapis.com:443 auth=none",
        "connect-502: CONNECT update.googleapis.com:443 auth=none",
        "connect-502: CONNECT update.googleapis.com:443 auth=none",
        "connect-502: CONNECT accounts.google.com:443 auth=none",
        "connect-502: CONNECT www.google.com:443 auth=none",
        "connect-502: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "connect-200-then-close",
      "proxy": {
        "server": "http://127.0.0.1:36121"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_CONNECTION_CLOSED at https://127.0.0.1:PORT/",
      "ms": 642,
      "proxySaw": [
        "connect-200-then-close: GET http://clients2.google.com/time/1/current auth=no",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT accounts.google.com:443 auth=none",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT www.google.com:443 auth=none",
        "connect-200-then-close: CONNECT accounts.google.com:443 auth=none",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT www.google.com:443 auth=none",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT update.googleapis.com:443 auth=none",
        "connect-200-then-close: CONNECT 127.0.0.1:33609 auth=none",
        "connect-200-then-close: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "working",
      "proxy": {
        "server": "http://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 786,
      "proxySaw": [
        "working: GET http://clients2.google.com/time/1/current auth=no",
        "working: CONNECT update.googleapis.com:443 auth=none",
        "working: CONNECT accounts.google.com:443 auth=none",
        "working: CONNECT www.google.com:443 auth=none",
        "working: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "tcp-accept-silent",
      "proxy": {
        "server": "http://127.0.0.1:43481"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "Navigation timeout of 8000 ms exceeded",
      "ms": 8491,
      "proxySaw": [
        "tcp-accept-silent: accepted, never answers",
        "tcp-accept-silent: accepted, never answers",
        "tcp-accept-silent: accepted, never answers",
        "tcp-accept-silent: accepted, never answers",
        "tcp-accept-silent: accepted, never answers"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "connect-503",
      "proxy": {
        "server": "http://127.0.0.1:46721"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_TUNNEL_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 396,
      "proxySaw": [
        "connect-503: GET http://clients2.google.com/time/1/current auth=no",
        "connect-503: CONNECT accounts.google.com:443 auth=none",
        "connect-503: CONNECT update.googleapis.com:443 auth=none",
        "connect-503: CONNECT update.googleapis.com:443 auth=none",
        "connect-503: CONNECT www.google.com:443 auth=none",
        "connect-503: CONNECT update.googleapis.com:443 auth=none",
        "connect-503: CONNECT 127.0.0.1:33609 auth=none",
        "connect-503: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "https-scheme-to-plain-http-proxy",
      "proxy": {
        "server": "https://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 369,
      "proxySaw": []
    },
    {
      "tool": "puppeteer",
      "case": "socks5-scheme-to-http-proxy",
      "proxy": {
        "server": "socks5://127.0.0.1:36961"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_SOCKS_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 398,
      "proxySaw": []
    },
    {
      "tool": "puppeteer",
      "case": "plain-http-destination-connect-403-proxy",
      "proxy": {
        "server": "http://127.0.0.1:46411"
      },
      "url": "http://127.0.0.1:PORT/",
      "result": {
        "status": 403,
        "body": "proxy says 403"
      },
      "requestFailed": [],
      "ms": 485,
      "proxySaw": [
        "connect-403: GET http://clients2.google.com/time/1/current auth=no",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT accounts.google.com:443 auth=none",
        "connect-403: CONNECT www.google.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: GET http://127.0.0.1:37207/ auth=no",
        "connect-403: GET http://127.0.0.1:37207/favicon.ico auth=no"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "auth-required-no-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_INVALID_AUTH_CREDENTIALS at https://127.0.0.1:PORT/",
      "ms": 388,
      "proxySaw": [
        "auth-required: GET http://clients2.google.com/time/1/current auth=no",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT accounts.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "auth-required-wrong-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857",
        "username": "labuser",
        "password": "***"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 407,
        "body": "127.0.0.1\n  /* Copyright 2017 The Chromium Authors\n * Use of"
      },
      "requestFailed": [
        "net::ERR_HTTP_RESPONSE_CODE_FAILURE"
      ],
      "ms": 522,
      "proxySaw": [
        "auth-required: GET http://clients2.google.com/time/1/current auth=no",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT accounts.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=wrong",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "auth-required-correct-credentials",
      "proxy": {
        "server": "http://127.0.0.1:38857",
        "username": "labuser",
        "password": "***"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 438,
      "proxySaw": [
        "auth-required: GET http://clients2.google.com/time/1/current auth=no",
        "auth-required: CONNECT accounts.google.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT update.googleapis.com:443 auth=none",
        "auth-required: CONNECT www.google.com:443 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=none",
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok",
        "auth-required: CONNECT www.google.com:443 auth=ok"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "loopback-destination-default-bypass",
      "proxy": {
        "server": "http://127.0.0.1:46411"
      },
      "url": "https://127.0.0.1:PORT/",
      "result": {
        "status": 200,
        "body": "destination ok"
      },
      "requestFailed": [],
      "ms": 473,
      "proxySaw": [
        "connect-403: GET http://clients2.google.com/time/1/current auth=no",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT accounts.google.com:443 auth=none",
        "connect-403: CONNECT www.google.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none",
        "connect-403: CONNECT update.googleapis.com:443 auth=none"
      ]
    },
    {
      "tool": "puppeteer",
      "case": "unresolvable-proxy-host",
      "proxy": {
        "server": "http://proxy.example.invalid:8080"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 418,
      "proxySaw": []
    },
    {
      "tool": "playwright",
      "case": "unresolvable-proxy-host",
      "proxy": {
        "server": "http://proxy.example.invalid:8080"
      },
      "url": "https://127.0.0.1:PORT/",
      "error": "page.goto: net::ERR_PROXY_CONNECTION_FAILED at https://127.0.0.1:PORT/",
      "ms": 144,
      "proxySaw": []
    },
    {
      "tool": "curl",
      "case": "closed-port",
      "proxy": "http://127.0.0.1:41105",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) Failed to connect to 127.0.0.1 port 33609 via 127.0.0.1 after 0 ms: Could not connect to server",
      "result": "000 connect=000",
      "proxySaw": []
    },
    {
      "tool": "curl",
      "case": "tcp-accept-close",
      "proxy": "http://127.0.0.1:41843",
      "url": "https://127.0.0.1:PORT/",
      "exit": 56,
      "error": "curl: (56) Recv failure: Connection reset by peer",
      "result": "000 connect=000",
      "proxySaw": [
        "tcp-accept-close: accepted, closed at once"
      ]
    },
    {
      "tool": "curl",
      "case": "not-http",
      "proxy": "http://127.0.0.1:38427",
      "url": "https://127.0.0.1:PORT/",
      "exit": 56,
      "error": "curl: (56) Proxy CONNECT aborted",
      "result": "000 connect=000",
      "proxySaw": [
        "not-http: accepted, wrote junk"
      ]
    },
    {
      "tool": "curl",
      "case": "connect-403",
      "proxy": "http://127.0.0.1:46411",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 403",
      "result": "000 connect=403",
      "proxySaw": [
        "connect-403: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "connect-429",
      "proxy": "http://127.0.0.1:33293",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 429",
      "result": "000 connect=429",
      "proxySaw": [
        "connect-429: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "connect-502",
      "proxy": "http://127.0.0.1:39393",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 502",
      "result": "000 connect=502",
      "proxySaw": [
        "connect-502: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "connect-200-then-close",
      "proxy": "http://127.0.0.1:36121",
      "url": "https://127.0.0.1:PORT/",
      "exit": 35,
      "error": "curl: (35) Send failure: Broken pipe",
      "result": "000 connect=200",
      "proxySaw": [
        "connect-200-then-close: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "working",
      "proxy": "http://127.0.0.1:36961",
      "url": "https://127.0.0.1:PORT/",
      "result": "200 connect=200",
      "proxySaw": [
        "working: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "auth-required-no-credentials",
      "proxy": "http://127.0.0.1:38857",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 407",
      "result": "000 connect=407",
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "auth-required-wrong-credentials",
      "proxy": "http://127.0.0.1:38857",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 407",
      "result": "000 connect=407",
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=wrong"
      ]
    },
    {
      "tool": "curl",
      "case": "auth-required-correct-credentials",
      "proxy": "http://127.0.0.1:38857",
      "url": "https://127.0.0.1:PORT/",
      "result": "200 connect=200",
      "proxySaw": [
        "auth-required: CONNECT 127.0.0.1:33609 auth=ok"
      ]
    },
    {
      "tool": "curl",
      "case": "plain-http-destination-connect-403-proxy",
      "proxy": "http://127.0.0.1:46411",
      "url": "http://127.0.0.1:PORT/",
      "result": "403 connect=000",
      "proxySaw": [
        "connect-403: GET http://127.0.0.1:37207/ auth=no"
      ]
    },
    {
      "tool": "curl",
      "case": "tcp-accept-silent",
      "proxy": "http://127.0.0.1:43481",
      "url": "https://127.0.0.1:PORT/",
      "exit": 28,
      "error": "curl: (28) Connection timed out after 8002 milliseconds",
      "result": "000 connect=000",
      "proxySaw": [
        "tcp-accept-silent: accepted, never answers"
      ]
    },
    {
      "tool": "curl",
      "case": "connect-503",
      "proxy": "http://127.0.0.1:46721",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) CONNECT tunnel failed, response 503",
      "result": "000 connect=503",
      "proxySaw": [
        "connect-503: CONNECT 127.0.0.1:33609 auth=none"
      ]
    },
    {
      "tool": "curl",
      "case": "socks5-scheme-to-http-proxy",
      "proxy": "socks5://127.0.0.1:36961",
      "url": "https://127.0.0.1:PORT/",
      "exit": 97,
      "error": "curl: (97) Received invalid version in initial SOCKS5 response.",
      "result": "000 connect=000",
      "proxySaw": []
    },
    {
      "tool": "curl",
      "case": "socks5-closed-port",
      "proxy": "socks5://127.0.0.1:41105",
      "url": "https://127.0.0.1:PORT/",
      "exit": 7,
      "error": "curl: (7) Failed to connect to 127.0.0.1 port 33609 via 127.0.0.1 after 0 ms: Could not connect to server",
      "result": "000 connect=000",
      "proxySaw": []
    },
    {
      "tool": "curl",
      "case": "unresolvable-proxy-host",
      "proxy": "http://proxy.example.invalid:8080",
      "url": "https://127.0.0.1:PORT/",
      "exit": 5,
      "error": "curl: (5) Could not resolve proxy: proxy.example.invalid",
      "result": "000 connect=000",
      "proxySaw": []
    },
    {
      "tool": "curl",
      "case": "https-scheme-to-plain-http-proxy",
      "proxy": "https://127.0.0.1:36961",
      "url": "https://127.0.0.1:PORT/",
      "exit": 35,
      "error": "curl: (35) TLS connect error: error:0A00010B:SSL routines::wrong version number",
      "result": "000 connect=000",
      "proxySaw": []
    }
  ],
  "proxyLog": [
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=wrong"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "working",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "working",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://127.0.0.1:37207/ auth=no"
    },
    {
      "proxy": "auth-required",
      "what": "GET http://127.0.0.1:37207/ auth=no"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "working",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "working",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "working",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "working",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "working",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "connect-503",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://127.0.0.1:37207/ auth=no"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://127.0.0.1:37207/favicon.ico auth=no"
    },
    {
      "proxy": "auth-required",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=wrong"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT www.google.com:443 auth=ok"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://clients2.google.com/time/1/current auth=no"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT accounts.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT www.google.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT update.googleapis.com:443 auth=none"
    },
    {
      "proxy": "tcp-accept-close",
      "what": "accepted, closed at once"
    },
    {
      "proxy": "not-http",
      "what": "accepted, wrote junk"
    },
    {
      "proxy": "connect-403",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-429",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-502",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "connect-200-then-close",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "working",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=wrong"
    },
    {
      "proxy": "auth-required",
      "what": "CONNECT 127.0.0.1:33609 auth=ok"
    },
    {
      "proxy": "connect-403",
      "what": "GET http://127.0.0.1:37207/ auth=no"
    },
    {
      "proxy": "tcp-accept-silent",
      "what": "accepted, never answers"
    },
    {
      "proxy": "connect-503",
      "what": "CONNECT 127.0.0.1:33609 auth=none"
    }
  ]
}
