cmd/screentest: per-test retrypixels

Allow each test case to specify a value for
retrypixels, overriding the command-line flag.

Change-Id: I8a048abd314d856df41a09ef875c767aa44fc2e0
Reviewed-on: https://go-review.googlesource.com/c/website/+/803080
Reviewed-by: Ethan Lee <ethanalee@google.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/cmd/screentest/main.go b/cmd/screentest/main.go
index b1edfe8..158ab58 100644
--- a/cmd/screentest/main.go
+++ b/cmd/screentest/main.go
@@ -113,6 +113,10 @@
 
 	status 404
 
+Use retrypixels N to override the value of the -retrypixels flag for this test.
+
+	retrypixels 80
+
 Use click SELECTOR to add a click an element on the page.
 
 	click button.submit
diff --git a/cmd/screentest/screentest.go b/cmd/screentest/screentest.go
index 2b8d7b8..7877e4b 100644
--- a/cmd/screentest/screentest.go
+++ b/cmd/screentest/screentest.go
@@ -392,6 +392,15 @@
 				return nil, fmt.Errorf("strconv.Atoi(%q): %w", args, err)
 			}
 
+		case "RETRYPIXELS":
+			if test == nil {
+				return nil, errors.New("directive must be in a test")
+			}
+			test.retryPixels, err = strconv.Atoi(args)
+			if err != nil {
+				return nil, fmt.Errorf("strconv.Atoi(%q): %w", args, err)
+			}
+
 		case "PATH":
 			if test == nil {
 				return nil, errors.New("directive must be in a test")
diff --git a/cmd/screentest/screentest_test.go b/cmd/screentest/screentest_test.go
index 6018718..eed03a9 100644
--- a/cmd/screentest/screentest_test.go
+++ b/cmd/screentest/screentest_test.go
@@ -43,7 +43,8 @@
 			testURL: "https://go.dev",
 			wantURL: "http://localhost:6060",
 			opts: options{
-				vars: "Authorization:Bearer token",
+				vars:        "Authorization:Bearer token",
+				retryPixels: 0,
 			},
 			want: []*testcase{
 				{
@@ -80,7 +81,8 @@
 				},
 				{
 					common: common{
-						vars: map[string]string{"Authorization": "Bearer token"},
+						vars:        map[string]string{"Authorization": "Bearer token"},
+						retryPixels: 44, // overrides 0 in options
 					},
 					name:           "about page",
 					path:           "/about",
diff --git a/cmd/screentest/testdata/readtests.txt b/cmd/screentest/testdata/readtests.txt
index faa00ea..18447ba 100644
--- a/cmd/screentest/testdata/readtests.txt
+++ b/cmd/screentest/testdata/readtests.txt
@@ -7,6 +7,7 @@
 
 test about page
 path /about
+retrypixels 44
 capture fullscreen
 
 test homepage element