diff --git a/doc/tutorial/kubernetes/quick/cue.mod b/doc/tutorial/kubernetes/quick/cue.mod
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/tutorial/kubernetes/quick/cue.mod
diff --git a/doc/tutorial/kubernetes/tut_test.go b/doc/tutorial/kubernetes/tut_test.go
index 4866f20..4df54c8 100644
--- a/doc/tutorial/kubernetes/tut_test.go
+++ b/doc/tutorial/kubernetes/tut_test.go
@@ -117,6 +117,7 @@
 				cmd = cmd[:p]
 			}
 
+			logf(t, "$ %s", cmd)
 			switch cmd = strings.TrimSpace(cmd); {
 			case strings.HasPrefix(cmd, "cat"):
 				if input == "" {
@@ -146,8 +147,6 @@
 				}
 
 			case strings.HasPrefix(cmd, "cue "):
-				logf(t, "$ %s", cmd)
-
 				if strings.HasPrefix(cmd, "cue create") {
 					// Don't execute the kubernetes dry run.
 					break
@@ -158,20 +157,32 @@
 				}
 
 				cuetest.Run(t, wd, cmd, &cuetest.Config{
-					Stdin:  strings.NewReader(input),
-					Stdout: ioutil.Discard,
+					Stdin: strings.NewReader(input),
 				})
 
-			case strings.HasPrefix(cmd, "sed "),
-				strings.HasPrefix(cmd, "touch "):
-				logf(t, "$ %s", cmd)
-				args := cuetest.SplitArgs(t, cmd)
-				cx := exec.Command(args[0], args[1:]...)
-				if input != "" {
-					cx.Stdin = strings.NewReader(input)
-					cx.Stdout = ioutil.Discard
+			case strings.HasPrefix(cmd, "sed "):
+				c := cuetest.NewChunker(t, []byte(cmd))
+				c.Next("s/", "/")
+				re := regexp.MustCompile(c.Text())
+				c.Next("", "/'")
+				repl := c.Bytes()
+				c.Next(" ", ".cue")
+				file := c.Text() + ".cue"
+				b, err := ioutil.ReadFile(file)
+				if err != nil {
+					t.Fatal(err)
 				}
-				if err := cx.Run(); err != nil {
+				b = re.ReplaceAll(b, repl)
+				err = ioutil.WriteFile(file, b, 0644)
+				if err != nil {
+					t.Fatal(err)
+				}
+
+			case strings.HasPrefix(cmd, "touch "):
+				logf(t, "$ %s", cmd)
+				file := strings.TrimSpace(cmd[len("touch "):])
+				err := ioutil.WriteFile(file, []byte(""), 0644)
+				if err != nil {
 					t.Fatal(err)
 				}
 			}
@@ -280,7 +291,8 @@
 			}
 
 			if got, want := string(got), string(b); got != want {
-				t.Errorf("files differ:\n%s", diff.Diff(got, want))
+				t.Log(got)
+				t.Errorf("output differs for file %s in %s", testfile, cwd)
 			}
 		})
 	}
diff --git a/internal/cuetest/sim.go b/internal/cuetest/sim.go
index 87f0f99..ed105c7 100644
--- a/internal/cuetest/sim.go
+++ b/internal/cuetest/sim.go
@@ -66,11 +66,16 @@
 	cmd, err := cmd.New(args)
 	if cfg.Stdout != nil {
 		cmd.SetOutput(cfg.Stdout)
+	} else {
+		cmd.SetOutput(buf)
 	}
 	if cfg.Stdin != nil {
 		cmd.SetInput(cfg.Stdin)
 	}
 	if err = cmd.Run(context.Background()); err != nil {
+		if cfg.Stdout == nil {
+			logf(t, "Ouput:\n%s", buf.String())
+		}
 		logf(t, "Execution failed: %v", err)
 	}
 
@@ -93,6 +98,7 @@
 }
 
 func logf(t *testing.T, format string, args ...interface{}) {
+	t.Helper()
 	t.Logf(format, args...)
 }
 
