diff --git a/cmd/golangorg/godoc_test.go b/cmd/golangorg/godoc_test.go
index a9d5b8b..1bdbb0f 100644
--- a/cmd/golangorg/godoc_test.go
+++ b/cmd/golangorg/godoc_test.go
@@ -10,18 +10,17 @@
 import (
 	"bytes"
 	"fmt"
-	"go/build"
 	"io/ioutil"
 	"net"
 	"net/http"
 	"os"
 	"os/exec"
 	"path/filepath"
-	"regexp"
 	"runtime"
-	"strings"
 	"testing"
 	"time"
+
+	"golang.org/x/website/internal/webtest"
 )
 
 // buildGodoc builds the godoc executable.
@@ -75,24 +74,12 @@
 	waitForServer(t,
 		fmt.Sprintf("http://%v/", addr),
 		"The Go Programming Language",
-		15*time.Second,
-		false)
-}
-
-func waitUntilScanComplete(t *testing.T, addr string) {
-	waitForServer(t,
-		fmt.Sprintf("http://%v/pkg", addr),
-		"Scan is not yet complete",
-		2*time.Minute,
-		true,
-	)
-	// setting reverse as true, which means this waits
-	// until the string is not returned in the response anymore
+		15*time.Second)
 }
 
 const pollInterval = 200 * time.Millisecond
 
-func waitForServer(t *testing.T, url, match string, timeout time.Duration, reverse bool) {
+func waitForServer(t *testing.T, url, match string, timeout time.Duration) {
 	// "health check" duplicated from x/tools/cmd/tipgodoc/tip.go
 	deadline := time.Now().Add(timeout)
 	for time.Now().Before(deadline) {
@@ -104,10 +91,7 @@
 		rbody, err := ioutil.ReadAll(res.Body)
 		res.Body.Close()
 		if err == nil && res.StatusCode == http.StatusOK {
-			if bytes.Contains(rbody, []byte(match)) && !reverse {
-				return
-			}
-			if !bytes.Contains(rbody, []byte(match)) && reverse {
+			if bytes.Contains(rbody, []byte(match)) {
 				return
 			}
 		}
@@ -115,17 +99,6 @@
 	t.Fatalf("Server failed to respond in %v", timeout)
 }
 
-// hasTag checks whether a given release tag is contained in the current version
-// of the go binary.
-func hasTag(t string) bool {
-	for _, v := range build.Default.ReleaseTags {
-		if t == v {
-			return true
-		}
-	}
-	return false
-}
-
 func killAndWait(cmd *exec.Cmd) {
 	cmd.Process.Kill()
 	cmd.Wait()
@@ -165,246 +138,6 @@
 	defer killAndWait(cmd)
 
 	waitForServerReady(t, addr)
-	waitUntilScanComplete(t, addr)
 
-	tests := []struct {
-		path        string
-		contains    []string // substring
-		match       []string // regexp
-		notContains []string
-		redirect    string
-		releaseTag  string // optional release tag that must be in go/build.ReleaseTags
-	}{
-		{
-			path: "/",
-			contains: []string{
-				"Go is an open source programming language",
-				"Binary distributions available for",
-			},
-		},
-		{
-			path:     "/conduct",
-			contains: []string{"Project Stewards"},
-		},
-		{
-			path:     "/doc/asm",
-			contains: []string{"Quick Guide", "Assembler"},
-		},
-		{
-			path:     "/doc/gdb",
-			contains: []string{"Debugging Go Code"},
-		},
-		{
-			path:     "/doc/debugging_with_gdb.html",
-			redirect: "/doc/gdb",
-		},
-		{
-			path:     "/ref/spec",
-			contains: []string{"Go Programming Language Specification"},
-		},
-		{
-			path:     "/doc/go_spec",
-			redirect: "/ref/spec",
-		},
-		{
-			path:     "/doc/go_spec.html",
-			redirect: "/ref/spec",
-		},
-		{
-			path:     "/doc/go_spec.md",
-			redirect: "/ref/spec",
-		},
-		{
-			path:     "/ref/mem",
-			contains: []string{"Memory Model"},
-		},
-		{
-			path:     "/doc/go_mem.html",
-			redirect: "/ref/mem",
-		},
-		{
-			path:     "/doc/go_mem.md",
-			redirect: "/ref/mem",
-		},
-		{
-			path:     "/doc/help.html",
-			redirect: "/help",
-		},
-		{
-			path:     "/help/",
-			redirect: "/help",
-		},
-		{
-			path:     "/help",
-			contains: []string{"Get help"},
-		},
-		{
-			path:     "/pkg/fmt/",
-			contains: []string{"Package fmt implements formatted I/O"},
-		},
-		{
-			path:     "/src/fmt/",
-			contains: []string{"scan_test.go"},
-		},
-		{
-			path:     "/src/fmt/print.go",
-			contains: []string{"// Println formats using"},
-		},
-		{
-			path:     "/pkg",
-			redirect: "/pkg/",
-		},
-		{
-			path: "/pkg/",
-			contains: []string{
-				"Standard library",
-				"Package fmt implements formatted I/O",
-			},
-			notContains: []string{
-				"internal/syscall",
-				"cmd/gc",
-			},
-		},
-		{
-			path: "/pkg/?m=all",
-			contains: []string{
-				"Standard library",
-				"Package fmt implements formatted I/O",
-				"internal/syscall/?m=all",
-			},
-			notContains: []string{
-				"cmd/gc",
-			},
-		},
-		{
-			path: "/pkg/strings/",
-			contains: []string{
-				`href="/src/strings/strings.go"`,
-			},
-		},
-		{
-			path: "/cmd/compile/internal/amd64/",
-			contains: []string{
-				`href="/src/cmd/compile/internal/amd64/ssa.go"`,
-			},
-		},
-		{
-			path: "/pkg/math/bits/",
-			contains: []string{
-				`Added in Go 1.9`,
-			},
-		},
-		{
-			path: "/pkg/net/",
-			contains: []string{
-				`// IPv6 scoped addressing zone; added in Go 1.1`,
-			},
-		},
-		{
-			path: "/pkg/net/http/httptrace/",
-			match: []string{
-				`Got1xxResponse.*// Go 1\.11`,
-			},
-			releaseTag: "go1.11",
-		},
-		// Verify we don't add version info to a struct field added the same time
-		// as the struct itself:
-		{
-			path: "/pkg/net/http/httptrace/",
-			match: []string{
-				`(?m)GotFirstResponseByte func\(\)\s*$`,
-			},
-		},
-		// Remove trailing periods before adding semicolons:
-		{
-			path: "/pkg/database/sql/",
-			contains: []string{
-				"The number of connections currently in use; added in Go 1.11",
-				"The number of idle connections; added in Go 1.11",
-			},
-			releaseTag: "go1.11",
-		},
-		{
-			path: "/project",
-			contains: []string{
-				`<li><a href="/doc/go1.14">Go 1.14</a> <small>(February 2020)</small></li>`,
-				`<li><a href="/doc/go1.1">Go 1.1</a> <small>(May 2013)</small></li>`,
-			},
-		},
-		{
-			path:     "/doc/go1.16.html",
-			redirect: "/doc/go1.16",
-		},
-		{
-			path:     "/doc/go1.16",
-			contains: []string{"Go 1.16"},
-		},
-	}
-	for _, test := range tests {
-		url := fmt.Sprintf("http://%s%s", addr, test.path)
-		var redirect string
-		client := &http.Client{
-			CheckRedirect: func(req *http.Request, via []*http.Request) error {
-				redirect = strings.TrimPrefix(req.URL.String(), "http://"+addr)
-				return fmt.Errorf("not following redirects")
-			},
-		}
-		resp, err := client.Get(url)
-		if redirect != "" {
-			resp.Body.Close()
-			if test.redirect == "" {
-				t.Errorf("GET %s: unexpected redirect -> %s", url, redirect)
-				continue
-			}
-			if test.redirect != redirect {
-				t.Errorf("GET %s: redirect -> %s, want %s", url, redirect, test.redirect)
-				continue
-			}
-			continue
-		}
-		if err != nil {
-			t.Errorf("GET %s failed: %s", url, err)
-			continue
-		}
-		body, err := ioutil.ReadAll(resp.Body)
-		resp.Body.Close()
-		if err != nil {
-			t.Errorf("GET %s: failed to read body: %s (response: %v)", url, err, resp)
-		}
-		if test.redirect != "" {
-			t.Errorf("GET %s: have direct response, want redirect -> %s", url, test.redirect)
-		}
-		strBody := string(body)
-		isErr := false
-		for _, substr := range test.contains {
-			if test.releaseTag != "" && !hasTag(test.releaseTag) {
-				continue
-			}
-			if !bytes.Contains(body, []byte(substr)) {
-				t.Errorf("GET %s: wanted substring %q in body", url, substr)
-				isErr = true
-			}
-		}
-		for _, re := range test.match {
-			if test.releaseTag != "" && !hasTag(test.releaseTag) {
-				continue
-			}
-			if ok, err := regexp.MatchString(re, strBody); !ok || err != nil {
-				if err != nil {
-					t.Fatalf("Bad regexp %q: %v", re, err)
-				}
-				t.Errorf("GET %s: wanted to match %s in body", url, re)
-				isErr = true
-			}
-		}
-		for _, substr := range test.notContains {
-			if bytes.Contains(body, []byte(substr)) {
-				t.Errorf("GET %s: didn't want substring %q in body", url, substr)
-				isErr = true
-			}
-		}
-		if isErr {
-			t.Errorf("GET %s: got:\n%s", url, body)
-		}
-	}
+	webtest.TestServer(t, "testdata/web.txt", addr)
 }
diff --git a/cmd/golangorg/regtest_test.go b/cmd/golangorg/regtest_test.go
index 38db14b..fd694cd 100644
--- a/cmd/golangorg/regtest_test.go
+++ b/cmd/golangorg/regtest_test.go
@@ -10,15 +10,11 @@
 package main_test
 
 import (
-	"bytes"
 	"flag"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"regexp"
 	"strings"
 	"testing"
+
+	"golang.org/x/website/internal/webtest"
 )
 
 var host = flag.String("regtest.host", "", "host to run regression test against")
@@ -28,166 +24,6 @@
 	if *host == "" {
 		t.Skip("regtest.host flag missing.")
 	}
-	substringTests := []struct {
-		Message     string
-		Path        string
-		Substring   string
-		Regexp      string
-		NoAnalytics bool // expect the response to not contain GA.
-		PostBody    string
-		StatusCode  int // if 0, expect 2xx status code.
-	}{
-		{
-			Path:      "/doc/",
-			Substring: "an introduction to using modules in a simple project",
-		},
-		{
-			Path:      "/conduct",
-			Substring: "Project Stewards",
-		},
-		{
-			Path:      "/doc/faq",
-			Substring: "What is the purpose of the project",
-		},
-		{
-			Path:      "/pkg/",
-			Substring: "Package tar",
-		},
-		{
-			Path:      "/pkg/os/",
-			Substring: "func Open",
-		},
-		{
-			Path:      "/pkg/net/http/",
-			Substring: `title="Added in Go 1.11"`,
-			Message:   "version information not present - failed InitVersionInfo?",
-		},
-		{
-			Path:        "/robots.txt",
-			Substring:   "Disallow: /search",
-			Message:     "robots not present - not deployed from Dockerfile?",
-			NoAnalytics: true,
-		},
-		{
-			Path:        "/change/75944e2e3a63",
-			Substring:   "bdb10cf",
-			Message:     "no change redirect - hg to git mapping not registered?",
-			NoAnalytics: true,
-			StatusCode:  302,
-		},
-		{
-			Path:      "/dl/",
-			Substring: `href="/dl/go1.11.windows-amd64.msi"`,
-			Message:   "missing data on dl page - misconfiguration of datastore?",
-		},
-		{
-			Path:        "/dl/?mode=json",
-			Substring:   ".windows-amd64.msi",
-			NoAnalytics: true,
-		},
-		{
-			Message:     "broken shortlinks - misconfiguration of datastore or memcache?",
-			Path:        "/s/go2design",
-			Regexp:      "proposal.*Found",
-			NoAnalytics: true,
-			StatusCode:  302,
-		},
-		{
-			Path:        "/compile",
-			PostBody:    "body=" + url.QueryEscape("package main; func main() { print(6*7); }"),
-			Regexp:      `^{"compile_errors":"","output":"42"}$`,
-			NoAnalytics: true,
-		},
-		{
-			Path:        "/compile",
-			PostBody:    "body=" + url.QueryEscape("//empty"),
-			Substring:   "expected 'package', found 'EOF'",
-			NoAnalytics: true,
-		},
-		{
-			Path:        "/compile",
-			PostBody:    "version=2&body=package+main%3Bimport+(%22fmt%22%3B%22time%22)%3Bfunc+main()%7Bfmt.Print(%22A%22)%3Btime.Sleep(time.Second)%3Bfmt.Print(%22B%22)%7D",
-			Regexp:      `^{"Errors":"","Events":\[{"Message":"A","Kind":"stdout","Delay":0},{"Message":"B","Kind":"stdout","Delay":1000000000}\]}$`,
-			NoAnalytics: true,
-		},
-		{
-			Path:        "/share",
-			PostBody:    "package main",
-			Substring:   "", // just check it is a 2xx.
-			NoAnalytics: true,
-		},
-		{
-			Path:        "/x/net",
-			Substring:   `<meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">`,
-			NoAnalytics: true,
-		},
-		{
-			Message: "release history page has an entry for Go 1.14.2",
-			Path:    "/doc/devel/release",
-			Regexp:  `go1\.14\.2\s+\(released 2020-04-08\)\s+includes\s+fixes to cgo, the go command, the runtime,`,
-		},
-		{
-			Message:   "Go project page has an entry for Go 1.14",
-			Path:      "/project",
-			Substring: `<li><a href="/doc/go1.14">Go 1.14</a> <small>(February 2020)</small></li>`,
-		},
-		{
-			Message:    "Go project subpath does not exist",
-			Path:       "/project/notexist",
-			StatusCode: http.StatusNotFound,
-		},
-	}
 
-	for _, tc := range substringTests {
-		t.Run(tc.Path, func(t *testing.T) {
-			method := "GET"
-			var reqBody io.Reader
-			if tc.PostBody != "" {
-				method = "POST"
-				reqBody = strings.NewReader(tc.PostBody)
-			}
-			req, err := http.NewRequest(method, *host+tc.Path, reqBody)
-			if err != nil {
-				t.Fatalf("NewRequest: %v", err)
-			}
-			if reqBody != nil {
-				req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
-			}
-			resp, err := http.DefaultTransport.RoundTrip(req)
-			if err != nil {
-				t.Fatalf("RoundTrip: %v", err)
-			}
-			if tc.StatusCode == 0 {
-				if resp.StatusCode > 299 {
-					t.Errorf("Non-OK status code: %v", resp.StatusCode)
-				}
-			} else if tc.StatusCode != resp.StatusCode {
-				t.Errorf("StatusCode; got %v, want %v", resp.StatusCode, tc.StatusCode)
-			}
-			body, err := ioutil.ReadAll(resp.Body)
-			if err != nil {
-				t.Fatalf("ReadAll: %v", err)
-			}
-
-			const googleAnalyticsID = "UA-11222381-2" // golang.org analytics ID
-			if !tc.NoAnalytics && !bytes.Contains(body, []byte(googleAnalyticsID)) {
-				t.Errorf("want response to contain analytics tracking ID")
-			}
-
-			if tc.Substring != "" {
-				tc.Regexp = regexp.QuoteMeta(tc.Substring)
-			}
-			re := regexp.MustCompile(tc.Regexp)
-
-			if !re.Match(body) {
-				t.Log("------ actual output -------")
-				t.Log(string(body))
-				t.Log("----------------------------")
-				if tc.Message != "" {
-					t.Log(tc.Message)
-				}
-				t.Fatalf("wanted response to match %s", tc.Regexp)
-			}
-		})
-	}
+	webtest.TestServer(t, "testdata/live.txt", *host)
 }
diff --git a/cmd/golangorg/release_test.go b/cmd/golangorg/release_test.go
index 9d44ad7..14917a0 100644
--- a/cmd/golangorg/release_test.go
+++ b/cmd/golangorg/release_test.go
@@ -8,13 +8,11 @@
 package main
 
 import (
-	"net/http"
-	"net/http/httptest"
-	"strings"
 	"testing"
 
 	"golang.org/x/website"
 	"golang.org/x/website/internal/web"
+	"golang.org/x/website/internal/webtest"
 )
 
 // Test that the release history page includes expected entries.
@@ -34,843 +32,5 @@
 	}
 	mux := registerHandlers(site)
 
-	req := httptest.NewRequest(http.MethodGet, "/doc/devel/release", nil)
-	rr := httptest.NewRecorder()
-	mux.ServeHTTP(rr, req)
-	resp := rr.Result()
-	if got, want := resp.StatusCode, http.StatusOK; got != want {
-		t.Errorf("got status code %d %s, want %d %s", got, http.StatusText(got), want, http.StatusText(want))
-	}
-	if got, want := resp.Header.Get("Content-Type"), "text/html; charset=utf-8"; got != want {
-		t.Errorf("got Content-Type header %q, want %q", got, want)
-	}
-	if !strings.Contains(foldSpace(rr.Body.String()), foldSpace(wantGo114HTML)) {
-		t.Errorf("got body that doesn't contain expected Go 1.14 release history entries")
-		println("HAVE")
-		println(rr.Body.String())
-		println("WANT")
-		println(wantGo114HTML)
-	}
-	if !strings.Contains(foldSpace(rr.Body.String()), foldSpace(wantGo113HTML)) {
-		t.Errorf("got body that doesn't contain expected Go 1.13 release history entries")
-	}
-	if !strings.Contains(foldSpace(rr.Body.String()), foldSpace(wantOldReleaseHTML)) {
-		t.Errorf("got body that doesn't contain expected Go 1.12 and older release history entries")
-	}
+	webtest.TestHandler(t, "testdata/release.txt", mux)
 }
-
-// foldSpace returns s with each instance of one or more consecutive
-// white space characters, as defined by unicode.IsSpace, replaced
-// by a single space ('\x20') character, with leading and trailing
-// white space removed.
-func foldSpace(s string) string {
-	return strings.Join(strings.Fields(s), " ")
-}
-
-const wantGo114HTML = `
-<h2 id="go1.14">go1.14 (released 2020-02-25)</h2>
-
-<p>
-Go 1.14 is a major release of Go.
-Read the <a href="/doc/go1.14">Go 1.14 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.14.minor">Minor revisions</h3>
-
-<p>
-go1.14.1 (released 2020-03-19) includes fixes to the go command, tools, and the runtime. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.14.1+label%3ACherryPickApproved">Go
-1.14.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.14.2 (released 2020-04-08) includes fixes to cgo, the go command, the runtime,
-and the <code>os/exec</code> and <code>testing</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.14.2+label%3ACherryPickApproved">Go
-1.14.2 milestone</a> on our issue tracker for details.
-</p>
-`
-
-const wantGo113HTML = `
-<h2 id="go1.13">go1.13 (released 2019-09-03)</h2>
-
-<p>
-Go 1.13 is a major release of Go.
-Read the <a href="/doc/go1.13">Go 1.13 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.13.minor">Minor revisions</h3>
-
-<p>
-go1.13.1 (released 2019-09-25) includes security fixes to the
-<code>net/http</code> and <code>net/textproto</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.1+label%3ACherryPickApproved">Go
-1.13.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.2 (released 2019-10-17) includes security fixes to the
-compiler and the <code>crypto/dsa</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.2+label%3ACherryPickApproved">Go
-1.13.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.3 (released 2019-10-17) includes fixes to the go command,
-the toolchain, the runtime, and the <code>syscall</code>, <code>net</code>,
-<code>net/http</code>, and <code>crypto/ecdsa</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.3+label%3ACherryPickApproved">Go
-1.13.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.4 (released 2019-10-31) includes fixes to the <code>net/http</code> and
-<code>syscall</code> packages. It also fixes an issue on macOS 10.15 Catalina
-where the non-notarized installer and binaries were being
-<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.4+label%3ACherryPickApproved">Go
-1.13.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.5 (released 2019-12-04) includes fixes to the go command, the runtime,
-the linker, and the <code>net/http</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved">Go
-1.13.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.6 (released 2020-01-09) includes fixes to the runtime and
-the <code>net/http</code> package. See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.6+label%3ACherryPickApproved">Go
-1.13.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.7 (released 2020-01-28) includes two security fixes to
-the <code>crypto/x509</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.7+label%3ACherryPickApproved">Go
-1.13.7 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.8 (released 2020-02-12) includes fixes to the runtime, and the
-<code>crypto/x509</code> and <code>net/http</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.8+label%3ACherryPickApproved">Go
-1.13.8 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.9 (released 2020-03-19) includes fixes to the go command, tools, the runtime, the
-toolchain, and the <code>crypto/cypher</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.9+label%3ACherryPickApproved">Go
-1.13.9 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.13.10 (released 2020-04-08) includes fixes to the go command, the runtime,
-and the <code>os/exec</code> and <code>time</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.10+label%3ACherryPickApproved">Go
-1.13.10 milestone</a> on our issue tracker for details.
-</p>
-`
-
-const wantOldReleaseHTML = `
-<h2 id="go1.12">go1.12 (released 2019-02-25)</h2>
-
-<p>
-Go 1.12 is a major release of Go.
-Read the <a href="/doc/go1.12">Go 1.12 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.12.minor">Minor revisions</h3>
-
-<p>
-go1.12.1 (released 2019-03-14) includes fixes to cgo, the compiler, the go
-command, and the <code>fmt</code>, <code>net/smtp</code>, <code>os</code>,
-<code>path/filepath</code>, <code>sync</code>, and <code>text/template</code>
-packages. See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.1+label%3ACherryPickApproved">Go
-1.12.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.2 (released 2019-04-05) includes fixes to the compiler, the go
-command, the runtime, and the <code>doc</code>, <code>net</code>,
-<code>net/http/httputil</code>, and <code>os</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.2+label%3ACherryPickApproved">Go
-1.12.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.3 (released 2019-04-08) was accidentally released without its
-intended fix. It is identical to go1.12.2, except for its version
-number. The intended fix is in go1.12.4.
-</p>
-
-<p>
-go1.12.4 (released 2019-04-11) fixes an issue where using the prebuilt binary
-releases on older versions of GNU/Linux
-<a href="https://golang.org/issues/31293">led to failures</a>
-when linking programs that used cgo.
-Only Linux users who hit this issue need to update.
-</p>
-
-<p>
-go1.12.5 (released 2019-05-06) includes fixes to the compiler, the linker,
-the go command, the runtime, and the <code>os</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.5+label%3ACherryPickApproved">Go
-1.12.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.6 (released 2019-06-11) includes fixes to the compiler, the linker,
-the go command, and the <code>crypto/x509</code>, <code>net/http</code>, and
-<code>os</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.6+label%3ACherryPickApproved">Go
-1.12.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.7 (released 2019-07-08) includes fixes to cgo, the compiler,
-and the linker.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.7+label%3ACherryPickApproved">Go
-1.12.7 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.8 (released 2019-08-13) includes security fixes to the
-<code>net/http</code> and <code>net/url</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.8+label%3ACherryPickApproved">Go
-1.12.8 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.9 (released 2019-08-15) includes fixes to the linker,
-and the <code>os</code> and <code>math/big</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.9+label%3ACherryPickApproved">Go
-1.12.9 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.10 (released 2019-09-25) includes security fixes to the
-<code>net/http</code> and <code>net/textproto</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.10+label%3ACherryPickApproved">Go
-1.12.10 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.11 (released 2019-10-17) includes security fixes to the
-<code>crypto/dsa</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.11+label%3ACherryPickApproved">Go
-1.12.11 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.12 (released 2019-10-17) includes fixes to the go command,
-runtime, and the <code>syscall</code> and <code>net</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.12+label%3ACherryPickApproved">Go
-1.12.12 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.13 (released 2019-10-31) fixes an issue on macOS 10.15 Catalina
-where the non-notarized installer and binaries were being
-<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>.
-Only macOS users who hit this issue need to update.
-</p>
-
-<p>
-go1.12.14 (released 2019-12-04) includes a fix to the runtime. See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.14+label%3ACherryPickApproved">Go
-1.12.14 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.15 (released 2020-01-09) includes fixes to the runtime and
-the <code>net/http</code> package. See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.15+label%3ACherryPickApproved">Go
-1.12.15 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.16 (released 2020-01-28) includes two security fixes to
-the <code>crypto/x509</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.16+label%3ACherryPickApproved">Go
-1.12.16 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.12.17 (released 2020-02-12) includes a fix to the runtime. See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.17+label%3ACherryPickApproved">Go
-1.12.17 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.11">go1.11 (released 2018-08-24)</h2>
-
-<p>
-Go 1.11 is a major release of Go.
-Read the <a href="/doc/go1.11">Go 1.11 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.11.minor">Minor revisions</h3>
-
-<p>
-go1.11.1 (released 2018-10-01) includes fixes to the compiler, documentation, go
-command, runtime, and the <code>crypto/x509</code>, <code>encoding/json</code>,
-<code>go/types</code>, <code>net</code>, <code>net/http</code>, and
-<code>reflect</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.1+label%3ACherryPickApproved">Go
-1.11.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.2 (released 2018-11-02) includes fixes to the compiler, linker,
-documentation, go command, and the <code>database/sql</code> and
-<code>go/types</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.2+label%3ACherryPickApproved">Go
-1.11.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.3 (released 2018-12-12) includes three security fixes to "go get" and
-the <code>crypto/x509</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.3+label%3ACherryPickApproved">Go
-1.11.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.4 (released 2018-12-14) includes fixes to cgo, the compiler, linker,
-runtime, documentation, go command, and the <code>net/http</code> and
-<code>go/types</code> packages.
-It includes a fix to a bug introduced in Go 1.11.3 that broke <code>go</code>
-<code>get</code> for import path patterns containing "<code>...</code>".
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.4+label%3ACherryPickApproved">Go
-1.11.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.5 (released 2019-01-23) includes a security fix to the
-<code>crypto/elliptic</code> package.  See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.5+label%3ACherryPickApproved">Go
-1.11.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.6 (released 2019-03-14) includes fixes to cgo, the compiler, linker,
-runtime, go command, and the <code>crypto/x509</code>, <code>encoding/json</code>,
-<code>net</code>, and <code>net/url</code> packages. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.6+label%3ACherryPickApproved">Go
-1.11.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.7 (released 2019-04-05) includes fixes to the runtime and the
-<code>net</code> package. See the
-<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.7+label%3ACherryPickApproved">Go
-1.11.7 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.8 (released 2019-04-08) was accidentally released without its
-intended fix. It is identical to go1.11.7, except for its version
-number. The intended fix is in go1.11.9.
-</p>
-
-<p>
-go1.11.9 (released 2019-04-11) fixes an issue where using the prebuilt binary
-releases on older versions of GNU/Linux
-<a href="https://golang.org/issues/31293">led to failures</a>
-when linking programs that used cgo.
-Only Linux users who hit this issue need to update.
-</p>
-
-<p>
-go1.11.10 (released 2019-05-06) includes fixes to the runtime and the linker.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.10+label%3ACherryPickApproved">Go
-1.11.10 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.11 (released 2019-06-11) includes a fix to the <code>crypto/x509</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.11+label%3ACherryPickApproved">Go
-1.11.11 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.12 (released 2019-07-08) includes fixes to the compiler and the linker.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.12+label%3ACherryPickApproved">Go
-1.11.12 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.11.13 (released 2019-08-13) includes security fixes to the
-<code>net/http</code> and <code>net/url</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.13+label%3ACherryPickApproved">Go
-1.11.13 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.10">go1.10 (released 2018-02-16)</h2>
-
-<p>
-Go 1.10 is a major release of Go.
-Read the <a href="/doc/go1.10">Go 1.10 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.10.minor">Minor revisions</h3>
-
-<p>
-go1.10.1 (released 2018-03-28) includes fixes to the compiler, runtime, and the
-<code>archive/zip</code>, <code>crypto/tls</code>, <code>crypto/x509</code>,
-<code>encoding/json</code>, <code>net</code>, <code>net/http</code>, and
-<code>net/http/pprof</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.1+label%3ACherryPickApproved">Go
-1.10.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.2 (released 2018-05-01) includes fixes to the compiler, linker, and go
-command.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.2+label%3ACherryPickApproved">Go
-1.10.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.3 (released 2018-06-05) includes fixes to the go command, and the
-<code>crypto/tls</code>, <code>crypto/x509</code>, and <code>strings</code> packages.
-In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9">
-minimal support to the go command for the vgo transition</a>.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.3+label%3ACherryPickApproved">Go
-1.10.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.4 (released 2018-08-24) includes fixes to the go command, linker, and the
-<code>net/http</code>, <code>mime/multipart</code>, <code>ld/macho</code>,
-<code>bytes</code>, and <code>strings</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.4+label%3ACherryPickApproved">Go
-1.10.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.5 (released 2018-11-02) includes fixes to the go command, linker, runtime,
-and the <code>database/sql</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.5+label%3ACherryPickApproved">Go
-1.10.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.6 (released 2018-12-12) includes three security fixes to "go get" and
-the <code>crypto/x509</code> package.
-It contains the same fixes as Go 1.11.3 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.6+label%3ACherryPickApproved">Go
-1.10.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.7 (released 2018-12-14) includes a fix to a bug introduced in Go 1.10.6
-that broke <code>go</code> <code>get</code> for import path patterns containing
-"<code>...</code>".
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.7+label%3ACherryPickApproved">
-Go 1.10.7 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.10.8 (released 2019-01-23) includes a security fix to the
-<code>crypto/elliptic</code> package.  See
-the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.8+label%3ACherryPickApproved">Go
-1.10.8 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.9">go1.9 (released 2017-08-24)</h2>
-
-<p>
-Go 1.9 is a major release of Go.
-Read the <a href="/doc/go1.9">Go 1.9 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.9.minor">Minor revisions</h3>
-
-<p>
-go1.9.1 (released 2017-10-04) includes two security fixes.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.1+label%3ACherryPickApproved">Go
-1.9.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.2 (released 2017-10-25) includes fixes to the compiler, linker, runtime,
-documentation, <code>go</code> command,
-and the <code>crypto/x509</code>, <code>database/sql</code>, <code>log</code>,
-and <code>net/smtp</code> packages.
-It includes a fix to a bug introduced in Go 1.9.1 that broke <code>go</code> <code>get</code>
-of non-Git repositories under certain conditions.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.2+label%3ACherryPickApproved">Go
-1.9.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.3 (released 2018-01-22) includes fixes to the compiler, runtime,
-and the <code>database/sql</code>, <code>math/big</code>, <code>net/http</code>,
-and <code>net/url</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.3+label%3ACherryPickApproved">Go
-1.9.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.4 (released 2018-02-07) includes a security fix to "go get".
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.4+label%3ACherryPickApproved">Go
-1.9.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.5 (released 2018-03-28) includes fixes to the compiler, go command, and the
-<code>net/http/pprof</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.5+label%3ACherryPickApproved">Go
-1.9.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.6 (released 2018-05-01) includes fixes to the compiler and go command.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.6+label%3ACherryPickApproved">Go
-1.9.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.9.7 (released 2018-06-05) includes fixes to the go command, and the
-<code>crypto/x509</code> and <code>strings</code> packages.
-In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9">
-minimal support to the go command for the vgo transition</a>.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.7+label%3ACherryPickApproved">Go
-1.9.7 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.8">go1.8 (released 2017-02-16)</h2>
-
-<p>
-Go 1.8 is a major release of Go.
-Read the <a href="/doc/go1.8">Go 1.8 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.8.minor">Minor revisions</h3>
-
-<p>
-go1.8.1 (released 2017-04-07) includes fixes to the compiler, linker, runtime,
-documentation, <code>go</code> command and the <code>crypto/tls</code>,
-<code>encoding/xml</code>, <code>image/png</code>, <code>net</code>,
-<code>net/http</code>, <code>reflect</code>, <code>text/template</code>,
-and <code>time</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.1">Go
-1.8.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.2 (released 2017-05-23) includes a security fix to the
-<code>crypto/elliptic</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go
-1.8.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.3 (released 2017-05-24) includes fixes to the compiler, runtime,
-documentation, and the <code>database/sql</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.3">Go
-1.8.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.4 (released 2017-10-04) includes two security fixes.
-It contains the same fixes as Go 1.9.1 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.4">Go
-1.8.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.5 (released 2017-10-25) includes fixes to the compiler, linker, runtime,
-documentation, <code>go</code> command,
-and the <code>crypto/x509</code> and <code>net/smtp</code> packages.
-It includes a fix to a bug introduced in Go 1.8.4 that broke <code>go</code> <code>get</code>
-of non-Git repositories under certain conditions.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.5">Go
-1.8.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.6 (released 2018-01-22) includes the same fix in <code>math/big</code>
-as Go 1.9.3 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.6">Go
-1.8.6 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.8.7 (released 2018-02-07) includes a security fix to "go get".
-It contains the same fix as Go 1.9.4 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.7">Go
-1.8.7</a> milestone on our issue tracker for details.
-</p>
-
-<h2 id="go1.7">go1.7 (released 2016-08-15)</h2>
-
-<p>
-Go 1.7 is a major release of Go.
-Read the <a href="/doc/go1.7">Go 1.7 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.7.minor">Minor revisions</h3>
-
-<p>
-go1.7.1 (released 2016-09-07) includes fixes to the compiler, runtime,
-documentation, and the <code>compress/flate</code>, <code>hash/crc32</code>,
-<code>io</code>, <code>net</code>, <code>net/http</code>,
-<code>path/filepath</code>, <code>reflect</code>, and <code>syscall</code>
-packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.1">Go
-1.7.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.7.2 should not be used. It was tagged but not fully released.
-The release was deferred due to a last minute bug report.
-Use go1.7.3 instead, and refer to the summary of changes below.
-</p>
-
-<p>
-go1.7.3 (released 2016-10-19) includes fixes to the compiler, runtime,
-and the <code>crypto/cipher</code>, <code>crypto/tls</code>,
-<code>net/http</code>, and <code>strings</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.3">Go
-1.7.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.7.4 (released 2016-12-01) includes two security fixes.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go
-1.7.4 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.7.5 (released 2017-01-26) includes fixes to the compiler, runtime,
-and the <code>crypto/x509</code> and <code>time</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.5">Go
-1.7.5 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.7.6 (released 2017-05-23) includes the same security fix as Go 1.8.2 and
-was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go
-1.8.2 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.6">go1.6 (released 2016-02-17)</h2>
-
-<p>
-Go 1.6 is a major release of Go.
-Read the <a href="/doc/go1.6">Go 1.6 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.6.minor">Minor revisions</h3>
-
-<p>
-go1.6.1 (released 2016-04-12) includes two security fixes.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go
-1.6.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.6.2 (released 2016-04-20) includes fixes to the compiler, runtime, tools,
-documentation, and the <code>mime/multipart</code>, <code>net/http</code>, and
-<code>sort</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.2">Go
-1.6.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.6.3 (released 2016-07-17) includes security fixes to the
-<code>net/http/cgi</code> package and <code>net/http</code> package when used in
-a CGI environment.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.3">Go
-1.6.3 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.6.4 (released 2016-12-01) includes two security fixes.
-It contains the same fixes as Go 1.7.4 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go
-1.7.4 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.5">go1.5 (released 2015-08-19)</h2>
-
-<p>
-Go 1.5 is a major release of Go.
-Read the <a href="/doc/go1.5">Go 1.5 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.5.minor">Minor revisions</h3>
-
-<p>
-go1.5.1 (released 2015-09-08) includes bug fixes to the compiler, assembler, and
-the <code>fmt</code>, <code>net/textproto</code>, <code>net/http</code>, and
-<code>runtime</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.1">Go
-1.5.1 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.5.2 (released 2015-12-02) includes bug fixes to the compiler, linker, and
-the <code>mime/multipart</code>, <code>net</code>, and <code>runtime</code>
-packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.2">Go
-1.5.2 milestone</a> on our issue tracker for details.
-</p>
-
-<p>
-go1.5.3 (released 2016-01-13) includes a security fix to the <code>math/big</code> package
-affecting the <code>crypto/tls</code> package.
-See the <a href="https://golang.org/s/go153announce">release announcement</a> for details.
-</p>
-
-<p>
-go1.5.4 (released 2016-04-12) includes two security fixes.
-It contains the same fixes as Go 1.6.1 and was released at the same time.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go
-1.6.1 milestone</a> on our issue tracker for details.
-</p>
-
-<h2 id="go1.4">go1.4 (released 2014-12-10)</h2>
-
-<p>
-Go 1.4 is a major release of Go.
-Read the <a href="/doc/go1.4">Go 1.4 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.4.minor">Minor revisions</h3>
-
-<p>
-go1.4.1 (released 2015-01-15) includes bug fixes to the linker and the <code>log</code>, <code>syscall</code>, and <code>runtime</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.1">Go 1.4.1 milestone on our issue tracker</a> for details.
-</p>
-
-<p>
-go1.4.2 (released 2015-02-17) includes bug fixes to the <code>go</code> command, the compiler and linker, and the <code>runtime</code>, <code>syscall</code>, <code>reflect</code>, and <code>math/big</code> packages.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.2">Go 1.4.2 milestone on our issue tracker</a> for details.
-</p>
-
-<p>
-go1.4.3 (released 2015-09-22) includes security fixes to the <code>net/http</code> package and bug fixes to the <code>runtime</code> package.
-See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.3">Go 1.4.3 milestone on our issue tracker</a> for details.
-</p>
-
-<h2 id="go1.3">go1.3 (released 2014-06-18)</h2>
-
-<p>
-Go 1.3 is a major release of Go.
-Read the <a href="/doc/go1.3">Go 1.3 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.3.minor">Minor revisions</h3>
-
-<p>
-go1.3.1 (released 2014-08-13) includes bug fixes to the compiler and the <code>runtime</code>, <code>net</code>, and <code>crypto/rsa</code> packages.
-See the <a href="https://github.com/golang/go/commits/go1.3.1">change history</a> for details.
-</p>
-
-<p>
-go1.3.2 (released 2014-09-25) includes bug fixes to cgo and the crypto/tls packages.
-See the <a href="https://github.com/golang/go/commits/go1.3.2">change history</a> for details.
-</p>
-
-<p>
-go1.3.3 (released 2014-09-30) includes further bug fixes to cgo, the runtime package, and the nacl port.
-See the <a href="https://github.com/golang/go/commits/go1.3.3">change history</a> for details.
-</p>
-
-<h2 id="go1.2">go1.2 (released 2013-12-01)</h2>
-
-<p>
-Go 1.2 is a major release of Go.
-Read the <a href="/doc/go1.2">Go 1.2 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.2.minor">Minor revisions</h3>
-
-<p>
-go1.2.1 (released 2014-03-02) includes bug fixes to the <code>runtime</code>, <code>net</code>, and <code>database/sql</code> packages.
-See the <a href="https://github.com/golang/go/commits/go1.2.1">change history</a> for details.
-</p>
-
-<p>
-go1.2.2 (released 2014-05-05) includes a
-<a href="https://github.com/golang/go/commits/go1.2.2">security fix</a>
-that affects the tour binary included in the binary distributions (thanks to Guillaume T).
-</p>
-
-<h2 id="go1.1">go1.1 (released 2013-05-13)</h2>
-
-<p>
-Go 1.1 is a major release of Go.
-Read the <a href="/doc/go1.1">Go 1.1 Release Notes</a> for more information.
-</p>
-
-<h3 id="go1.1.minor">Minor revisions</h3>
-
-<p>
-go1.1.1 (released 2013-06-13) includes several compiler and runtime bug fixes.
-See the <a href="https://github.com/golang/go/commits/go1.1.1">change history</a> for details.
-</p>
-
-<p>
-go1.1.2 (released 2013-08-13) includes fixes to the <code>gc</code> compiler
-and <code>cgo</code>, and the <code>bufio</code>, <code>runtime</code>,
-<code>syscall</code>, and <code>time</code> packages.
-See the <a href="https://github.com/golang/go/commits/go1.1.2">change history</a> for details.
-If you use package syscall's <code>Getrlimit</code> and <code>Setrlimit</code>
-functions under Linux on the ARM or 386 architectures, please note change
-<a href="//golang.org/cl/11803043">11803043</a>
-that fixes <a href="//golang.org/issue/5949">issue 5949</a>.
-</p>
-
-<h2 id="go1">go1 (released 2012-03-28)</h2>
-
-<p>
-Go 1 is a major release of Go that will be stable in the long term.
-Read the <a href="/doc/go1.html">Go 1 Release Notes</a> for more information.
-</p>
-
-<p>
-It is intended that programs written for Go 1 will continue to compile and run
-correctly, unchanged, under future versions of Go 1.
-Read the <a href="/doc/go1compat.html">Go 1 compatibility document</a> for more
-about the future of Go 1.
-</p>
-
-<p>
-The go1 release corresponds to
-<code><a href="weekly.html#2012-03-27">weekly.2012-03-27</a></code>.
-</p>
-
-<h3 id="go1.minor">Minor revisions</h3>
-
-<p>
-go1.0.1 (released 2012-04-25) was issued to
-<a href="//golang.org/cl/6061043">fix</a> an
-<a href="//golang.org/issue/3545">escape analysis bug</a>
-that can lead to memory corruption.
-It also includes several minor code and documentation fixes.
-</p>
-
-<p>
-go1.0.2 (released 2012-06-13) was issued to fix two bugs in the implementation
-of maps using struct or array keys:
-<a href="//golang.org/issue/3695">issue 3695</a> and
-<a href="//golang.org/issue/3573">issue 3573</a>.
-It also includes many minor code and documentation fixes.
-</p>
-
-<p>
-go1.0.3 (released 2012-09-21) includes minor code and documentation fixes.
-</p>
-
-<p>
-See the <a href="https://github.com/golang/go/commits/release-branch.go1">go1 release branch history</a> for the complete list of changes.
-</p>
-`
diff --git a/cmd/golangorg/testdata/live.txt b/cmd/golangorg/testdata/live.txt
new file mode 100644
index 0000000..02c0e4e
--- /dev/null
+++ b/cmd/golangorg/testdata/live.txt
@@ -0,0 +1,81 @@
+GET /doc/
+body contains an introduction to using modules in a simple project
+
+GET /conduct
+body contains Project Stewards
+
+GET /doc/devel/release
+body ~ go1\.14\.2\s+\(released 2020-04-08\)\s+includes\s+fixes to cgo, the go command, the runtime,
+
+GET /doc/devel/release.html
+redirect == /doc/devel/release
+
+GET /doc/faq
+body contains What is the purpose of the project
+
+GET /pkg/
+body contains Package tar
+
+GET /pkg/os/
+body contains func Open
+
+GET /pkg/net/http/
+body contains title="Added in Go 1.11"
+
+GET /robots.txt
+body contains Disallow: /search
+body !contains UA-
+
+GET /change/75944e2e3a63
+code == 302
+redirect contains bdb10cf
+body contains bdb10cf
+body !contains UA-
+
+GET /dl/
+body contains href="/dl/go1.11.windows-amd64.msi"
+
+GET /dl/?mode=json
+body contains .windows-amd64.msi
+body !contains UA-
+
+GET /s/go2design
+code == 302
+body ~ proposal.*Found
+body !contains UA-
+
+POST /compile
+postquery
+	body=package main; func main() { print(6*7); }
+body == {"compile_errors":"","output":"42"}
+
+POST /compile
+postquery
+	body=//empty
+body contains expected 'package', found 'EOF'
+body !contains UA-
+
+POST /compile
+postquery
+	version=2
+	body=package main; import ("fmt"; "time"); func main() {fmt.Print("A"); time.Sleep(time.Second); fmt.Print("B")}
+body == {"Errors":"","Events":[{"Message":"A","Kind":"stdout","Delay":0},{"Message":"B","Kind":"stdout","Delay":1000000000}]}
+
+POST /share
+postbody
+	package main
+body !contains UA-
+
+GET /x/net
+code == 200
+body contains <meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">
+body !contains UA-
+
+GET /project
+body contains <li><a href="/doc/go1.14">Go 1.14</a> <small>(February 2020)</small></li>
+
+GET /project/
+redirect == /project
+
+GET /project/notexist
+code == 404
diff --git a/cmd/golangorg/testdata/release.txt b/cmd/golangorg/testdata/release.txt
new file mode 100644
index 0000000..5724f4f
--- /dev/null
+++ b/cmd/golangorg/testdata/release.txt
@@ -0,0 +1,854 @@
+GET /doc/devel/release
+header content-type == text/html; charset=utf-8
+trimbody contains
+	<h2 id="go1.14">go1.14 (released 2020-02-25)</h2>
+	<p>
+	Go 1.14 is a major release of Go.
+	Read the <a href="/doc/go1.14">Go 1.14 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.14.minor">Minor revisions</h3>
+	<p>
+	go1.14.1
+	(released 2020-03-19)
+	includes
+	fixes to the go command, tools, and the runtime.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.14.1+label%3ACherryPickApproved">Go 1.14.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.14.2
+	(released 2020-04-08)
+	includes
+	fixes to cgo, the go command, the runtime, and the <code>os/exec</code> and <code>testing</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.14.2+label%3ACherryPickApproved">Go 1.14.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+trimbody contains
+	<h2 id="go1.13">go1.13 (released 2019-09-03)</h2>
+	<p>
+	Go 1.13 is a major release of Go.
+	Read the <a href="/doc/go1.13">Go 1.13 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.13.minor">Minor revisions</h3>
+	<p>
+	go1.13.1
+	(released 2019-09-25)
+	includes
+	security
+	fixes to the <code>net/http</code> and <code>net/textproto</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.1+label%3ACherryPickApproved">Go 1.13.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.2
+	(released 2019-10-17)
+	includes
+	security
+	fixes to the compiler and the <code>crypto/dsa</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.2+label%3ACherryPickApproved">Go 1.13.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.3
+	(released 2019-10-17)
+	includes
+	fixes to the go command, the toolchain, the runtime, and the <code>syscall</code>, <code>net</code>, <code>net/http</code>, and <code>crypto/ecdsa</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.3+label%3ACherryPickApproved">Go 1.13.3 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.4
+	(released 2019-10-31)
+	includes
+	fixes to the <code>net/http</code> and <code>syscall</code> packages.
+	It also fixes an issue on macOS 10.15 Catalina
+	where the non-notarized installer and binaries were being
+	<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.4+label%3ACherryPickApproved">Go 1.13.4 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.5
+	(released 2019-12-04)
+	includes
+	fixes to the go command, the runtime, the linker, and the <code>net/http</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.5+label%3ACherryPickApproved">Go 1.13.5 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.6
+	(released 2020-01-09)
+	includes
+	fixes to the runtime and the <code>net/http</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.6+label%3ACherryPickApproved">Go 1.13.6 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.7
+	(released 2020-01-28)
+	includes
+	two
+	security
+	fixes to the <code>crypto/x509</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.7+label%3ACherryPickApproved">Go 1.13.7 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.8
+	(released 2020-02-12)
+	includes
+	fixes to the runtime, and the <code>crypto/x509</code> and <code>net/http</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.8+label%3ACherryPickApproved">Go 1.13.8 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.9
+	(released 2020-03-19)
+	includes
+	fixes to the go command, tools, the runtime, the toolchain, and the <code>crypto/cypher</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.9+label%3ACherryPickApproved">Go 1.13.9 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.13.10
+	(released 2020-04-08)
+	includes
+	fixes to the go command, the runtime, and the <code>os/exec</code> and <code>time</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.13.10+label%3ACherryPickApproved">Go 1.13.10 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+trimbody contains
+	<h2 id="go1.12">go1.12 (released 2019-02-25)</h2>
+	<p>
+	Go 1.12 is a major release of Go.
+	Read the <a href="/doc/go1.12">Go 1.12 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.12.minor">Minor revisions</h3>
+	<p>
+	go1.12.1
+	(released 2019-03-14)
+	includes
+	fixes to cgo, the compiler, the go command, and the <code>fmt</code>, <code>net/smtp</code>, <code>os</code>, <code>path/filepath</code>, <code>sync</code>, and <code>text/template</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.1+label%3ACherryPickApproved">Go 1.12.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.2
+	(released 2019-04-05)
+	includes
+	fixes to the compiler, the go command, the runtime, and the <code>doc</code>, <code>net</code>, <code>net/http/httputil</code>, and <code>os</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.2+label%3ACherryPickApproved">Go 1.12.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.3
+	(released 2019-04-08)
+	was accidentally released without its
+	intended fix. It is identical to go1.12.2, except for its version
+	number. The intended fix is in go1.12.4.
+	</p>
+	<p>
+	go1.12.4
+	(released 2019-04-11)
+	fixes an issue where using the prebuilt binary
+	releases on older versions of GNU/Linux
+	<a href="https://golang.org/issues/31293">led to failures</a>
+	when linking programs that used cgo.
+	Only Linux users who hit this issue need to update.
+	</p>
+	<p>
+	go1.12.5
+	(released 2019-05-06)
+	includes
+	fixes to the compiler, the linker, the go command, the runtime, and the <code>os</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.5+label%3ACherryPickApproved">Go 1.12.5 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.6
+	(released 2019-06-11)
+	includes
+	fixes to the compiler, the linker, the go command, and the <code>crypto/x509</code>, <code>net/http</code>, and <code>os</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.6+label%3ACherryPickApproved">Go 1.12.6 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.7
+	(released 2019-07-08)
+	includes
+	fixes to cgo, the compiler, and the linker.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.7+label%3ACherryPickApproved">Go 1.12.7 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.8
+	(released 2019-08-13)
+	includes
+	security
+	fixes to the <code>net/http</code> and <code>net/url</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.8+label%3ACherryPickApproved">Go 1.12.8 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.9
+	(released 2019-08-15)
+	includes
+	fixes to the linker, and the <code>os</code> and <code>math/big</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.9+label%3ACherryPickApproved">Go 1.12.9 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.10
+	(released 2019-09-25)
+	includes
+	security
+	fixes to the <code>net/http</code> and <code>net/textproto</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.10+label%3ACherryPickApproved">Go 1.12.10 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.11
+	(released 2019-10-17)
+	includes
+	security
+	fixes to the <code>crypto/dsa</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.11+label%3ACherryPickApproved">Go 1.12.11 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.12
+	(released 2019-10-17)
+	includes
+	fixes to the go command, runtime, and the <code>syscall</code> and <code>net</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.12+label%3ACherryPickApproved">Go 1.12.12 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.13
+	(released 2019-10-31)
+	fixes an issue on macOS 10.15 Catalina
+	where the non-notarized installer and binaries were being
+	<a href="https://golang.org/issue/34986">rejected by Gatekeeper</a>.
+	Only macOS users who hit this issue need to update.
+	</p>
+	<p>
+	go1.12.14
+	(released 2019-12-04)
+	includes
+	a
+	fix to the runtime.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.14+label%3ACherryPickApproved">Go 1.12.14 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.15
+	(released 2020-01-09)
+	includes
+	fixes to the runtime and the <code>net/http</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.15+label%3ACherryPickApproved">Go 1.12.15 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.16
+	(released 2020-01-28)
+	includes
+	two
+	security
+	fixes to the <code>crypto/x509</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.16+label%3ACherryPickApproved">Go 1.12.16 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.12.17
+	(released 2020-02-12)
+	includes
+	a
+	fix to the runtime.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.12.17+label%3ACherryPickApproved">Go 1.12.17 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<h2 id="go1.11">go1.11 (released 2018-08-24)</h2>
+	<p>
+	Go 1.11 is a major release of Go.
+	Read the <a href="/doc/go1.11">Go 1.11 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.11.minor">Minor revisions</h3>
+	<p>
+	go1.11.1
+	(released 2018-10-01)
+	includes
+	fixes to the compiler, documentation, go command, runtime, and the <code>crypto/x509</code>, <code>encoding/json</code>, <code>go/types</code>, <code>net</code>, <code>net/http</code>, and <code>reflect</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.1+label%3ACherryPickApproved">Go 1.11.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.2
+	(released 2018-11-02)
+	includes
+	fixes to the compiler, linker, documentation, go command, and the <code>database/sql</code> and <code>go/types</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.2+label%3ACherryPickApproved">Go 1.11.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.3
+	(released 2018-12-12)
+	includes
+	three
+	security
+	fixes to "go get" and the <code>crypto/x509</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.3+label%3ACherryPickApproved">Go 1.11.3 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.4
+	(released 2018-12-14)
+	includes
+	fixes to cgo, the compiler, linker, runtime, documentation, go command, and the <code>net/http</code> and <code>go/types</code> packages.
+	It includes a fix to a bug introduced in Go 1.11.3 that broke <code>go</code>
+	<code>get</code> for import path patterns containing "<code>...</code>".
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.4+label%3ACherryPickApproved">Go 1.11.4 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.5
+	(released 2019-01-23)
+	includes
+	a
+	security
+	fix to the <code>crypto/elliptic</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.5+label%3ACherryPickApproved">Go 1.11.5 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.6
+	(released 2019-03-14)
+	includes
+	fixes to cgo, the compiler, linker, runtime, go command, and the <code>crypto/x509</code>, <code>encoding/json</code>, <code>net</code>, and <code>net/url</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.6+label%3ACherryPickApproved">Go 1.11.6 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.7
+	(released 2019-04-05)
+	includes
+	fixes to the runtime and the <code>net</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.7+label%3ACherryPickApproved">Go 1.11.7 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.8
+	(released 2019-04-08)
+	was accidentally released without its
+	intended fix. It is identical to go1.11.7, except for its version
+	number. The intended fix is in go1.11.9.
+	</p>
+	<p>
+	go1.11.9
+	(released 2019-04-11)
+	fixes an issue where using the prebuilt binary
+	releases on older versions of GNU/Linux
+	<a href="https://golang.org/issues/31293">led to failures</a>
+	when linking programs that used cgo.
+	Only Linux users who hit this issue need to update.
+	</p>
+	<p>
+	go1.11.10
+	(released 2019-05-06)
+	includes
+	fixes to the runtime and the linker.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.10+label%3ACherryPickApproved">Go 1.11.10 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.11
+	(released 2019-06-11)
+	includes
+	a
+	fix to the <code>crypto/x509</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.11+label%3ACherryPickApproved">Go 1.11.11 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.12
+	(released 2019-07-08)
+	includes
+	fixes to the compiler and the linker.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.12+label%3ACherryPickApproved">Go 1.11.12 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.11.13
+	(released 2019-08-13)
+	includes
+	security
+	fixes to the <code>net/http</code> and <code>net/url</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.11.13+label%3ACherryPickApproved">Go 1.11.13 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<h2 id="go1.10">go1.10 (released 2018-02-16)</h2>
+	<p>
+	Go 1.10 is a major release of Go.
+	Read the <a href="/doc/go1.10">Go 1.10 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.10.minor">Minor revisions</h3>
+	<p>
+	go1.10.1
+	(released 2018-03-28)
+	includes
+	fixes to the compiler, runtime, and the <code>archive/zip</code>, <code>crypto/tls</code>, <code>crypto/x509</code>, <code>encoding/json</code>, <code>net</code>, <code>net/http</code>, and <code>net/http/pprof</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.1+label%3ACherryPickApproved">Go 1.10.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.2
+	(released 2018-05-01)
+	includes
+	fixes to the compiler, linker, and go command.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.2+label%3ACherryPickApproved">Go 1.10.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.3
+	(released 2018-06-05)
+	includes
+	fixes to the go command, and the <code>crypto/tls</code>, <code>crypto/x509</code>, and <code>strings</code> packages.
+	In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9">
+	minimal support to the go command for the vgo transition</a>.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.3+label%3ACherryPickApproved">Go 1.10.3 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.4
+	(released 2018-08-24)
+	includes
+	fixes to the go command, linker, and the <code>net/http</code>, <code>mime/multipart</code>, <code>ld/macho</code>, <code>bytes</code>, and <code>strings</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.4+label%3ACherryPickApproved">Go 1.10.4 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.5
+	(released 2018-11-02)
+	includes
+	fixes to the go command, linker, runtime, and the <code>database/sql</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.5+label%3ACherryPickApproved">Go 1.10.5 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.6
+	(released 2018-12-12)
+	includes
+	three
+	security
+	fixes to "go get" and the <code>crypto/x509</code> package.
+	It contains the same fixes as Go 1.11.3 and was released at the same time.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.6+label%3ACherryPickApproved">Go 1.10.6 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.7
+	(released 2018-12-14)
+	includes a fix to a bug introduced in Go 1.10.6
+	that broke <code>go</code> <code>get</code> for import path patterns containing
+	"<code>...</code>".
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.7+label%3ACherryPickApproved">
+	Go 1.10.7 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.10.8
+	(released 2019-01-23)
+	includes
+	a
+	security
+	fix to the <code>crypto/elliptic</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.10.8+label%3ACherryPickApproved">Go 1.10.8 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<h2 id="go1.9">go1.9 (released 2017-08-24)</h2>
+	<p>
+	Go 1.9 is a major release of Go.
+	Read the <a href="/doc/go1.9">Go 1.9 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.9.minor">Minor revisions</h3>
+	<p>
+	go1.9.1
+	(released 2017-10-04)
+	includes
+	two
+	security
+	fixes.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.1+label%3ACherryPickApproved">Go 1.9.1 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.2
+	(released 2017-10-25)
+	includes
+	fixes to the compiler, linker, runtime, documentation, <code>go</code> command, and the <code>crypto/x509</code>, <code>database/sql</code>, <code>log</code>, and <code>net/smtp</code> packages.
+	It includes a fix to a bug introduced in Go 1.9.1 that broke <code>go</code> <code>get</code>
+	of non-Git repositories under certain conditions.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.2+label%3ACherryPickApproved">Go 1.9.2 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.3
+	(released 2018-01-22)
+	includes
+	fixes to the compiler, runtime, and the <code>database/sql</code>, <code>math/big</code>, <code>net/http</code>, and <code>net/url</code> packages.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.3+label%3ACherryPickApproved">Go 1.9.3 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.4
+	(released 2018-02-07)
+	includes
+	a
+	security
+	fix to "go get".
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.4+label%3ACherryPickApproved">Go 1.9.4 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.5
+	(released 2018-03-28)
+	includes
+	fixes to the compiler, go command, and the <code>net/http/pprof</code> package.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.5+label%3ACherryPickApproved">Go 1.9.5 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.6
+	(released 2018-05-01)
+	includes
+	fixes to the compiler and go command.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.6+label%3ACherryPickApproved">Go 1.9.6 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<p>
+	go1.9.7
+	(released 2018-06-05)
+	includes
+	fixes to the go command, and the <code>crypto/x509</code> and <code>strings</code> packages.
+	In particular, it adds <a href="https://go.googlesource.com/go/+/d4e21288e444d3ffd30d1a0737f15ea3fc3b8ad9">
+	minimal support to the go command for the vgo transition</a>.
+	See the
+	<a href="https://github.com/golang/go/issues?q=milestone%3AGo1.9.7+label%3ACherryPickApproved">Go 1.9.7 milestone</a>
+	on our issue tracker for details.
+	</p>
+	<h2 id="go1.8">go1.8 (released 2017-02-16)</h2>
+	<p>
+	Go 1.8 is a major release of Go.
+	Read the <a href="/doc/go1.8">Go 1.8 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.8.minor">Minor revisions</h3>
+	<p>
+	go1.8.1 (released 2017-04-07) includes fixes to the compiler, linker, runtime,
+	documentation, <code>go</code> command and the <code>crypto/tls</code>,
+	<code>encoding/xml</code>, <code>image/png</code>, <code>net</code>,
+	<code>net/http</code>, <code>reflect</code>, <code>text/template</code>,
+	and <code>time</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.1">Go
+	1.8.1 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.2 (released 2017-05-23) includes a security fix to the
+	<code>crypto/elliptic</code> package.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go
+	1.8.2 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.3 (released 2017-05-24) includes fixes to the compiler, runtime,
+	documentation, and the <code>database/sql</code> package.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.3">Go
+	1.8.3 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.4 (released 2017-10-04) includes two security fixes.
+	It contains the same fixes as Go 1.9.1 and was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.4">Go
+	1.8.4 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.5 (released 2017-10-25) includes fixes to the compiler, linker, runtime,
+	documentation, <code>go</code> command,
+	and the <code>crypto/x509</code> and <code>net/smtp</code> packages.
+	It includes a fix to a bug introduced in Go 1.8.4 that broke <code>go</code> <code>get</code>
+	of non-Git repositories under certain conditions.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.5">Go
+	1.8.5 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.6 (released 2018-01-22) includes the same fix in <code>math/big</code>
+	as Go 1.9.3 and was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.6">Go
+	1.8.6 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.8.7 (released 2018-02-07) includes a security fix to "go get".
+	It contains the same fix as Go 1.9.4 and was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.7">Go
+	1.8.7</a> milestone on our issue tracker for details.
+	</p>
+	<h2 id="go1.7">go1.7 (released 2016-08-15)</h2>
+	<p>
+	Go 1.7 is a major release of Go.
+	Read the <a href="/doc/go1.7">Go 1.7 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.7.minor">Minor revisions</h3>
+	<p>
+	go1.7.1 (released 2016-09-07) includes fixes to the compiler, runtime,
+	documentation, and the <code>compress/flate</code>, <code>hash/crc32</code>,
+	<code>io</code>, <code>net</code>, <code>net/http</code>,
+	<code>path/filepath</code>, <code>reflect</code>, and <code>syscall</code>
+	packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.1">Go
+	1.7.1 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.7.2 should not be used. It was tagged but not fully released.
+	The release was deferred due to a last minute bug report.
+	Use go1.7.3 instead, and refer to the summary of changes below.
+	</p>
+	<p>
+	go1.7.3 (released 2016-10-19) includes fixes to the compiler, runtime,
+	and the <code>crypto/cipher</code>, <code>crypto/tls</code>,
+	<code>net/http</code>, and <code>strings</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.3">Go
+	1.7.3 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.7.4 (released 2016-12-01) includes two security fixes.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go
+	1.7.4 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.7.5 (released 2017-01-26) includes fixes to the compiler, runtime,
+	and the <code>crypto/x509</code> and <code>time</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.5">Go
+	1.7.5 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.7.6 (released 2017-05-23) includes the same security fix as Go 1.8.2 and
+	was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.8.2">Go
+	1.8.2 milestone</a> on our issue tracker for details.
+	</p>
+	<h2 id="go1.6">go1.6 (released 2016-02-17)</h2>
+	<p>
+	Go 1.6 is a major release of Go.
+	Read the <a href="/doc/go1.6">Go 1.6 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.6.minor">Minor revisions</h3>
+	<p>
+	go1.6.1 (released 2016-04-12) includes two security fixes.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go
+	1.6.1 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.6.2 (released 2016-04-20) includes fixes to the compiler, runtime, tools,
+	documentation, and the <code>mime/multipart</code>, <code>net/http</code>, and
+	<code>sort</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.2">Go
+	1.6.2 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.6.3 (released 2016-07-17) includes security fixes to the
+	<code>net/http/cgi</code> package and <code>net/http</code> package when used in
+	a CGI environment.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.3">Go
+	1.6.3 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.6.4 (released 2016-12-01) includes two security fixes.
+	It contains the same fixes as Go 1.7.4 and was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.7.4">Go
+	1.7.4 milestone</a> on our issue tracker for details.
+	</p>
+	<h2 id="go1.5">go1.5 (released 2015-08-19)</h2>
+	<p>
+	Go 1.5 is a major release of Go.
+	Read the <a href="/doc/go1.5">Go 1.5 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.5.minor">Minor revisions</h3>
+	<p>
+	go1.5.1 (released 2015-09-08) includes bug fixes to the compiler, assembler, and
+	the <code>fmt</code>, <code>net/textproto</code>, <code>net/http</code>, and
+	<code>runtime</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.1">Go
+	1.5.1 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.5.2 (released 2015-12-02) includes bug fixes to the compiler, linker, and
+	the <code>mime/multipart</code>, <code>net</code>, and <code>runtime</code>
+	packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.5.2">Go
+	1.5.2 milestone</a> on our issue tracker for details.
+	</p>
+	<p>
+	go1.5.3 (released 2016-01-13) includes a security fix to the <code>math/big</code> package
+	affecting the <code>crypto/tls</code> package.
+	See the <a href="https://golang.org/s/go153announce">release announcement</a> for details.
+	</p>
+	<p>
+	go1.5.4 (released 2016-04-12) includes two security fixes.
+	It contains the same fixes as Go 1.6.1 and was released at the same time.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.6.1">Go
+	1.6.1 milestone</a> on our issue tracker for details.
+	</p>
+	<h2 id="go1.4">go1.4 (released 2014-12-10)</h2>
+	<p>
+	Go 1.4 is a major release of Go.
+	Read the <a href="/doc/go1.4">Go 1.4 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.4.minor">Minor revisions</h3>
+	<p>
+	go1.4.1 (released 2015-01-15) includes bug fixes to the linker and the <code>log</code>, <code>syscall</code>, and <code>runtime</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.1">Go 1.4.1 milestone on our issue tracker</a> for details.
+	</p>
+	<p>
+	go1.4.2 (released 2015-02-17) includes bug fixes to the <code>go</code> command, the compiler and linker, and the <code>runtime</code>, <code>syscall</code>, <code>reflect</code>, and <code>math/big</code> packages.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.2">Go 1.4.2 milestone on our issue tracker</a> for details.
+	</p>
+	<p>
+	go1.4.3 (released 2015-09-22) includes security fixes to the <code>net/http</code> package and bug fixes to the <code>runtime</code> package.
+	See the <a href="https://github.com/golang/go/issues?q=milestone%3AGo1.4.3">Go 1.4.3 milestone on our issue tracker</a> for details.
+	</p>
+	<h2 id="go1.3">go1.3 (released 2014-06-18)</h2>
+	<p>
+	Go 1.3 is a major release of Go.
+	Read the <a href="/doc/go1.3">Go 1.3 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.3.minor">Minor revisions</h3>
+	<p>
+	go1.3.1 (released 2014-08-13) includes bug fixes to the compiler and the <code>runtime</code>, <code>net</code>, and <code>crypto/rsa</code> packages.
+	See the <a href="https://github.com/golang/go/commits/go1.3.1">change history</a> for details.
+	</p>
+	<p>
+	go1.3.2 (released 2014-09-25) includes bug fixes to cgo and the crypto/tls packages.
+	See the <a href="https://github.com/golang/go/commits/go1.3.2">change history</a> for details.
+	</p>
+	<p>
+	go1.3.3 (released 2014-09-30) includes further bug fixes to cgo, the runtime package, and the nacl port.
+	See the <a href="https://github.com/golang/go/commits/go1.3.3">change history</a> for details.
+	</p>
+	<h2 id="go1.2">go1.2 (released 2013-12-01)</h2>
+	<p>
+	Go 1.2 is a major release of Go.
+	Read the <a href="/doc/go1.2">Go 1.2 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.2.minor">Minor revisions</h3>
+	<p>
+	go1.2.1 (released 2014-03-02) includes bug fixes to the <code>runtime</code>, <code>net</code>, and <code>database/sql</code> packages.
+	See the <a href="https://github.com/golang/go/commits/go1.2.1">change history</a> for details.
+	</p>
+	<p>
+	go1.2.2 (released 2014-05-05) includes a
+	<a href="https://github.com/golang/go/commits/go1.2.2">security fix</a>
+	that affects the tour binary included in the binary distributions (thanks to Guillaume T).
+	</p>
+	<h2 id="go1.1">go1.1 (released 2013-05-13)</h2>
+	<p>
+	Go 1.1 is a major release of Go.
+	Read the <a href="/doc/go1.1">Go 1.1 Release Notes</a> for more information.
+	</p>
+	<h3 id="go1.1.minor">Minor revisions</h3>
+	<p>
+	go1.1.1 (released 2013-06-13) includes several compiler and runtime bug fixes.
+	See the <a href="https://github.com/golang/go/commits/go1.1.1">change history</a> for details.
+	</p>
+	<p>
+	go1.1.2 (released 2013-08-13) includes fixes to the <code>gc</code> compiler
+	and <code>cgo</code>, and the <code>bufio</code>, <code>runtime</code>,
+	<code>syscall</code>, and <code>time</code> packages.
+	See the <a href="https://github.com/golang/go/commits/go1.1.2">change history</a> for details.
+	If you use package syscall's <code>Getrlimit</code> and <code>Setrlimit</code>
+	functions under Linux on the ARM or 386 architectures, please note change
+	<a href="//golang.org/cl/11803043">11803043</a>
+	that fixes <a href="//golang.org/issue/5949">issue 5949</a>.
+	</p>
+	<h2 id="go1">go1 (released 2012-03-28)</h2>
+	<p>
+	Go 1 is a major release of Go that will be stable in the long term.
+	Read the <a href="/doc/go1.html">Go 1 Release Notes</a> for more information.
+	</p>
+	<p>
+	It is intended that programs written for Go 1 will continue to compile and run
+	correctly, unchanged, under future versions of Go 1.
+	Read the <a href="/doc/go1compat.html">Go 1 compatibility document</a> for more
+	about the future of Go 1.
+	</p>
+	<p>
+	The go1 release corresponds to
+	<code><a href="weekly.html#2012-03-27">weekly.2012-03-27</a></code>.
+	</p>
+	<h3 id="go1.minor">Minor revisions</h3>
+	<p>
+	go1.0.1 (released 2012-04-25) was issued to
+	<a href="//golang.org/cl/6061043">fix</a> an
+	<a href="//golang.org/issue/3545">escape analysis bug</a>
+	that can lead to memory corruption.
+	It also includes several minor code and documentation fixes.
+	</p>
+	<p>
+	go1.0.2 (released 2012-06-13) was issued to fix two bugs in the implementation
+	of maps using struct or array keys:
+	<a href="//golang.org/issue/3695">issue 3695</a> and
+	<a href="//golang.org/issue/3573">issue 3573</a>.
+	It also includes many minor code and documentation fixes.
+	</p>
+	<p>
+	go1.0.3 (released 2012-09-21) includes minor code and documentation fixes.
+	</p>
+	<p>
+	See the <a href="https://github.com/golang/go/commits/release-branch.go1">go1 release branch history</a> for the complete list of changes.
+	</p>
diff --git a/cmd/golangorg/testdata/web.txt b/cmd/golangorg/testdata/web.txt
new file mode 100644
index 0000000..ca48661
--- /dev/null
+++ b/cmd/golangorg/testdata/web.txt
@@ -0,0 +1,99 @@
+GET /
+body contains Go is an open source programming language
+body contains Binary distributions available for
+
+GET /conduct
+body contains Project Stewards
+
+GET /doc/asm
+body ~ Quick Guide.*Assembler
+
+GET /doc/gdb
+body contains Debugging Go Code
+
+GET /doc/debugging_with_gdb.html
+redirect == /doc/gdb
+
+GET /ref/spec
+body contains Go Programming Language Specification
+
+GET /doc/go_spec
+redirect == /ref/spec
+
+GET /doc/go_spec.html
+redirect == /ref/spec
+
+GET /doc/go_spec.md
+redirect == /ref/spec
+
+GET /ref/mem
+body contains Memory Model
+
+GET /doc/go_mem.html
+redirect == /ref/mem
+
+GET /doc/go_mem.md
+redirect == /ref/mem
+
+GET /doc/help.html
+redirect == /help
+
+GET /help/
+redirect == /help
+
+GET /help
+body contains Get help
+
+GET /pkg/fmt/
+body contains Package fmt implements formatted I/O
+
+GET /src/fmt/
+body contains scan_test.go
+
+GET /src/fmt/print.go
+body contains // Println formats using
+
+GET /pkg
+redirect == /pkg/
+
+GET /pkg/
+body contains Standard library
+body contains Package fmt implements formatted I/O
+body !contains internal/syscall
+body !contains cmd/gc
+
+GET /pkg/?m=all
+body contains Standard library
+body contains Package fmt implements formatted I/O
+body contains internal/syscall/?m=all
+body !contains cmd/gc
+
+GET /pkg/strings/
+body contains href="/src/strings/strings.go"
+
+GET /cmd/compile/internal/amd64/
+body contains href="/src/cmd/compile/internal/amd64/ssa.go"
+
+GET /pkg/math/bits/
+body contains Added in Go 1.9
+
+GET /pkg/net/
+body contains // IPv6 scoped addressing zone; added in Go 1.1
+
+GET /pkg/net/http/httptrace/
+body ~ Got1xxResponse.*// Go 1\.11
+body ~ GotFirstResponseByte func\(\)\s*$
+
+GET /pkg/database/sql/
+body contains The number of connections currently in use; added in Go 1.11
+body contains The number of idle connections; added in Go 1.11
+
+GET /project
+body contains <li><a href="/doc/go1.14">Go 1.14</a> <small>(February 2020)</small></li>
+body contains <li><a href="/doc/go1.1">Go 1.1</a> <small>(May 2013)</small></li>
+
+GET /doc/go1.16.html
+redirect == /doc/go1.16
+
+GET /doc/go1.16
+body contains Go 1.16
diff --git a/cmd/golangorg/testdata/x.txt b/cmd/golangorg/testdata/x.txt
new file mode 100644
index 0000000..4704926
--- /dev/null
+++ b/cmd/golangorg/testdata/x.txt
@@ -0,0 +1,25 @@
+GET /x/net
+code == 200
+body contains <meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">
+body contains http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/net">
+
+GET /x/net/suffix
+code == 200
+body contains <meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">
+body contains http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/net/suffix">
+
+GET /x/pkgsite
+code == 200
+body contains <meta name="go-import" content="golang.org/x/pkgsite git https://go.googlesource.com/pkgsite">
+body contains <a href="https://pkg.go.dev/golang.org/x/pkgsite">Redirecting to documentation...</a>
+body contains http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/pkgsite">
+
+GET /x/notexist
+code == 404
+
+GET /x/
+code == 307
+header location == https://pkg.go.dev/search?q=golang.org/x
+
+GET /x/In%20Valid,X
+code == 404
diff --git a/cmd/golangorg/x_test.go b/cmd/golangorg/x_test.go
index 1968807..aedc2db 100644
--- a/cmd/golangorg/x_test.go
+++ b/cmd/golangorg/x_test.go
@@ -8,98 +8,12 @@
 package main
 
 import (
-	"net/http/httptest"
-	"strings"
+	"net/http"
 	"testing"
+
+	"golang.org/x/website/internal/webtest"
 )
 
 func TestXHandler(t *testing.T) {
-	type check func(t *testing.T, rec *httptest.ResponseRecorder)
-	status := func(v int) check {
-		return func(t *testing.T, rec *httptest.ResponseRecorder) {
-			t.Helper()
-			if rec.Code != v {
-				t.Errorf("response status = %v; want %v", rec.Code, v)
-			}
-		}
-	}
-	substr := func(s string) check {
-		return func(t *testing.T, rec *httptest.ResponseRecorder) {
-			t.Helper()
-			if !strings.Contains(rec.Body.String(), s) {
-				t.Errorf("missing expected substring %q in value: %#q", s, rec.Body)
-			}
-		}
-	}
-	hasHeader := func(k, v string) check {
-		return func(t *testing.T, rec *httptest.ResponseRecorder) {
-			t.Helper()
-			if got := rec.HeaderMap.Get(k); got != v {
-				t.Errorf("header[%q] = %q; want %q", k, got, v)
-			}
-		}
-	}
-
-	tests := []struct {
-		name   string
-		path   string
-		checks []check
-	}{
-		{
-			name: "net",
-			path: "/x/net",
-			checks: []check{
-				status(200),
-				substr(`<meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">`),
-				substr(`http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/net">`),
-			},
-		},
-		{
-			name: "net-suffix",
-			path: "/x/net/suffix",
-			checks: []check{
-				status(200),
-				substr(`<meta name="go-import" content="golang.org/x/net git https://go.googlesource.com/net">`),
-				substr(`http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/net/suffix">`),
-			},
-		},
-		{
-			name: "pkgsite",
-			path: "/x/pkgsite",
-			checks: []check{
-				status(200),
-				substr(`<meta name="go-import" content="golang.org/x/pkgsite git https://go.googlesource.com/pkgsite">`),
-				substr(`<a href="https://pkg.go.dev/golang.org/x/pkgsite">Redirecting to documentation...</a>`),
-				substr(`http-equiv="refresh" content="0; url=https://pkg.go.dev/golang.org/x/pkgsite">`),
-			},
-		},
-		{
-			name:   "notexist",
-			path:   "/x/notexist",
-			checks: []check{status(404)},
-		},
-		{
-			name: "empty",
-			path: "/x/",
-			checks: []check{
-				status(307),
-				hasHeader("Location", "https://pkg.go.dev/search?q=golang.org/x"),
-			},
-		},
-		{
-			name:   "invalid",
-			path:   "/x/In%20Valid,X",
-			checks: []check{status(404)},
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			req := httptest.NewRequest("GET", tt.path, nil)
-			rec := httptest.NewRecorder()
-			xHandler(rec, req)
-			for _, check := range tt.checks {
-				check(t, rec)
-			}
-		})
-	}
+	webtest.TestHandler(t, "testdata/x.txt", http.HandlerFunc(xHandler))
 }
