diff --git a/gopls/internal/lsp/regtest/expectation.go b/gopls/internal/lsp/regtest/expectation.go
index 3b623d0..7fcaf51 100644
--- a/gopls/internal/lsp/regtest/expectation.go
+++ b/gopls/internal/lsp/regtest/expectation.go
@@ -749,23 +749,6 @@
 	}
 }
 
-// NoDiagnostics asserts that no diagnostics are sent for the
-// workspace-relative path name. It should be used primarily in conjunction
-// with a OnceMet, as it has to check that all outstanding diagnostics have
-// already been delivered.
-func NoDiagnostics(name string) Expectation {
-	check := func(s State) Verdict {
-		if _, ok := s.diagnostics[name]; !ok {
-			return Met
-		}
-		return Unmet
-	}
-	return SimpleExpectation{
-		check:       check,
-		description: fmt.Sprintf("no diagnostics for %q", name),
-	}
-}
-
 // DiagnosticAtRegexp expects that there is a diagnostic entry at the start
 // position matching the regexp search string re in the buffer specified by
 // name. Note that this currently ignores the end position.
diff --git a/gopls/internal/regtest/diagnostics/builtin_test.go b/gopls/internal/regtest/diagnostics/builtin_test.go
index 8de47bc..ae775d9 100644
--- a/gopls/internal/regtest/diagnostics/builtin_test.go
+++ b/gopls/internal/regtest/diagnostics/builtin_test.go
@@ -32,7 +32,7 @@
 		}
 		env.Await(OnceMet(
 			env.DoneWithOpen(),
-			NoDiagnostics("builtin.go"),
+			EmptyOrNoDiagnostics("builtin.go"),
 		))
 	})
 }
diff --git a/gopls/internal/regtest/diagnostics/diagnostics_test.go b/gopls/internal/regtest/diagnostics/diagnostics_test.go
index 84bd5d4..9ef429c 100644
--- a/gopls/internal/regtest/diagnostics/diagnostics_test.go
+++ b/gopls/internal/regtest/diagnostics/diagnostics_test.go
@@ -1092,7 +1092,7 @@
 		env.Await(
 			OnceMet(
 				env.DoneWithChange(),
-				NoDiagnostics("foo/foo.go"),
+				EmptyOrNoDiagnostics("foo/foo.go"),
 			),
 		)
 	})
@@ -1208,7 +1208,7 @@
 		WorkspaceFolders("a"),
 	).Run(t, mod, func(t *testing.T, env *Env) {
 		env.OpenFile("a/main.go")
-		env.Await(
+		env.AfterChange(
 			env.DiagnosticAtRegexp("main.go", "x"),
 		)
 	})
@@ -1217,8 +1217,8 @@
 		Settings{"expandWorkspaceToModule": false},
 	).Run(t, mod, func(t *testing.T, env *Env) {
 		env.OpenFile("a/main.go")
-		env.Await(
-			NoDiagnostics("main.go"),
+		env.AfterChange(
+			EmptyOrNoDiagnostics("main.go"),
 		)
 	})
 }
diff --git a/gopls/internal/regtest/template/template_test.go b/gopls/internal/regtest/template/template_test.go
index afe5797..4e87d04 100644
--- a/gopls/internal/regtest/template/template_test.go
+++ b/gopls/internal/regtest/template/template_test.go
@@ -121,8 +121,11 @@
 		},
 	).Run(t, files, func(t *testing.T, env *Env) {
 		env.Await(
-			OnceMet(env.DiagnosticAtRegexp("a/a.tmpl", "()A")),
-			NoDiagnostics("b/b.tmpl"),
+			OnceMet(
+				InitialWorkspaceLoad,
+				env.DiagnosticAtRegexp("a/a.tmpl", "()A"),
+				EmptyOrNoDiagnostics("b/b.tmpl"),
+			),
 		)
 	})
 }
diff --git a/gopls/internal/regtest/watch/watch_test.go b/gopls/internal/regtest/watch/watch_test.go
index 99c76ff..a62b473 100644
--- a/gopls/internal/regtest/watch/watch_test.go
+++ b/gopls/internal/regtest/watch/watch_test.go
@@ -225,8 +225,8 @@
 	Run(t, original, func(t *testing.T, env *Env) {
 		env.WriteWorkspaceFile("c/c.go", `package c; func C() {};`)
 		env.WriteWorkspaceFile("a/a.go", `package a; import "mod.com/c"; func _() { c.C() }`)
-		env.Await(
-			NoDiagnostics("a/a.go"),
+		env.AfterChange(
+			EmptyOrNoDiagnostics("a/a.go"),
 		)
 	})
 }
@@ -490,7 +490,7 @@
 		env.RemoveWorkspaceFile("a/a1.go")
 		env.WriteWorkspaceFile("a/a2.go", "package a; func _() {};")
 		env.AfterChange(
-			NoDiagnostics("main.go"),
+			EmptyOrNoDiagnostics("main.go"),
 		)
 	})
 }
diff --git a/gopls/internal/regtest/workspace/directoryfilters_test.go b/gopls/internal/regtest/workspace/directoryfilters_test.go
index 3f8bf6c..0a1f596 100644
--- a/gopls/internal/regtest/workspace/directoryfilters_test.go
+++ b/gopls/internal/regtest/workspace/directoryfilters_test.go
@@ -53,7 +53,12 @@
 	WithOptions(
 		Settings{"directoryFilters": []string{"-exclude"}},
 	).Run(t, files, func(t *testing.T, env *Env) {
-		env.Await(NoDiagnostics("exclude/x.go"))
+		env.Await(
+			OnceMet(
+				InitialWorkspaceLoad,
+				EmptyOrNoDiagnostics("exclude/x.go"),
+			),
+		)
 	})
 }
 
@@ -81,8 +86,11 @@
 		Settings{"directoryFilters": []string{"-exclude"}},
 	).Run(t, files, func(t *testing.T, env *Env) {
 		env.Await(
-			NoDiagnostics("exclude/exclude.go"), // filtered out
-			NoDiagnostics("include/include.go"), // successfully builds
+			OnceMet(
+				InitialWorkspaceLoad,
+				EmptyOrNoDiagnostics("exclude/exclude.go"), // filtered out
+				EmptyOrNoDiagnostics("include/include.go"), // successfully builds
+			),
 		)
 	})
 }
diff --git a/gopls/internal/regtest/workspace/workspace_test.go b/gopls/internal/regtest/workspace/workspace_test.go
index 35ea6b9..0028f84 100644
--- a/gopls/internal/regtest/workspace/workspace_test.go
+++ b/gopls/internal/regtest/workspace/workspace_test.go
@@ -1172,11 +1172,8 @@
 `
 	Run(t, ws, func(t *testing.T, env *Env) {
 		env.OpenFile("b/main.go")
-		env.Await(
-			OnceMet(
-				env.DoneWithOpen(),
-				NoDiagnostics("a/main.go"),
-			),
+		env.AfterChange(
+			EmptyOrNoDiagnostics("a/main.go"),
 		)
 		env.OpenFile("a/main.go")
 		env.Await(
