pr command scriptability improvements
This PR came out of the research in #940 and consists of several small changes to pr commands that
make them more amenable to scripting.

In this PR, when run unattached to a TTY:

- pr create clearly errors if -t or -f are missing
- pr create clearly errors if -w is specified
- pr list prints more machine readable output, including draft status
- pr view prints raw pr body + linewise metadata, including draft status
- various human-oriented informational messages are suppressed

Closes #1297
Part of #1082
Part of #939


This issue captures the improvements required to make `gh pr` subcommands more amenable to scripting. Most of these bullet points are trivial; some are more involved. Came out of research for #940 

create:

- [x] Clear error if not connected to a tty but either `--title` xor `--fill` is missing
- [x] All output except final URL should go to STDERR when when not connected to tty

list:

- [x] output should be machine friendly when not connected to tty Output should include
  the data that is lost when color is removed.
- [x] don't print header when not connected to tty

merge:

- [x] if not tty,  merge should run non-interactively.
- [x] all output should go to STDERR

review:

- [x] when not connected to tty and there are enough flags, run non-interactively; clear error
  otherwise
- [x] all output except final review/comment URL should go to STDERR

view:

- [x] Output raw text and print metadata linewise when not connected to tty


pr scriptability improvements
diff --git a/command/issue.go b/command/issue.go
index 5e1dacd861b..5de86da9147 100644
--- a/command/issue.go
+++ b/command/issue.go
@@ -517,7 +517,9 @@ func issueCreate(cmd *cobra.Command, args []string) error {
 		} else if len(nonLegacyTemplateFiles) > 1 {
 			openURL += "/choose"
 		}
-		cmd.Printf("Opening %s in your browser.\n", displayURL(openURL))
+		if connectedToTerminal(cmd) {
+			cmd.Printf("Opening %s in your browser.\n", displayURL(openURL))
+		}
 		return utils.OpenInBrowser(openURL)
 	}
 
diff --git a/command/pr.go b/command/pr.go
index 91ceb11862b..9978d18be0c 100644
--- a/command/pr.go
+++ b/command/pr.go
@@ -293,8 +293,9 @@ func prList(cmd *cobra.Command, args []string) error {
 	})
 
 	title := listHeader(ghrepo.FullName(baseRepo), "pull request", len(listResult.PullRequests), listResult.TotalCount, hasFilters)
-	// TODO: avoid printing header if piped to a script
-	fmt.Fprintf(colorableErr(cmd), "\n%s\n\n", title)
+	if connectedToTerminal(cmd) {
+		fmt.Fprintf(colorableErr(cmd), "\n%s\n\n", title)
+	}
 
 	table := utils.NewTablePrinter(cmd.OutOrStdout())
 	for _, pr := range listResult.PullRequests {
@@ -305,6 +306,9 @@ func prList(cmd *cobra.Command, args []string) error {
 		table.AddField(prNum, nil, colorFuncForPR(pr))
 		table.AddField(replaceExcessiveWhitespace(pr.Title), nil, nil)
 		table.AddField(pr.HeadLabel(), nil, utils.Cyan)
+		if !table.IsTTY() {
+			table.AddField(prStateWithDraft(&pr), nil, nil)
+		}
 		table.EndRow()
 	}
 	err = table.Render()
@@ -364,11 +368,18 @@ func prView(cmd *cobra.Command, args []string) error {
 	openURL := pr.URL
 
 	if web {
-		fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", openURL)
+		if connectedToTerminal(cmd) {
+			fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", openURL)
+		}
 		return utils.OpenInBrowser(openURL)
 	}
-	out := colorableOut(cmd)
-	return printPrPreview(out, pr)
+
+	if connectedToTerminal(cmd) {
+		out := colorableOut(cmd)
+		return printHumanPrPreview(out, pr)
+	}
+
+	return printRawPrPreview(cmd.OutOrStdout(), pr)
 }
 
 func prClose(cmd *cobra.Command, args []string) error {
@@ -482,6 +493,9 @@ func prMerge(cmd *cobra.Command, args []string) error {
 	}
 
 	if enabledFlagCount == 0 {
+		if !connectedToTerminal(cmd) {
+			return errors.New("--merge, --rebase, or --squash required when not attached to a tty")
+		}
 		isInteractive = true
 	} else if enabledFlagCount > 1 {
 		return errors.New("expected exactly one of --merge, --rebase, or --squash to be true")
@@ -513,7 +527,9 @@ func prMerge(cmd *cobra.Command, args []string) error {
 		return fmt.Errorf("API call failed: %w", err)
 	}
 
-	fmt.Fprintf(colorableOut(cmd), "%s %s pull request #%d (%s)\n", utils.Magenta("✔"), action, pr.Number, pr.Title)
+	if connectedToTerminal(cmd) {
+		fmt.Fprintf(colorableErr(cmd), "%s %s pull request #%d (%s)\n", utils.Magenta("✔"), action, pr.Number, pr.Title)
+	}
 
 	if deleteBranch {
 		branchSwitchString := ""
@@ -560,7 +576,9 @@ func prMerge(cmd *cobra.Command, args []string) error {
 			}
 		}
 
-		fmt.Fprintf(colorableOut(cmd), "%s Deleted branch %s%s\n", utils.Red("✔"), utils.Cyan(pr.HeadRefName), branchSwitchString)
+		if connectedToTerminal(cmd) {
+			fmt.Fprintf(colorableErr(cmd), "%s Deleted branch %s%s\n", utils.Red("✔"), utils.Cyan(pr.HeadRefName), branchSwitchString)
+		}
 	}
 
 	return nil
@@ -620,7 +638,36 @@ func prInteractiveMerge(deleteLocalBranch bool, crossRepoPR bool) (api.PullReque
 	return mergeMethod, deleteBranch, nil
 }
 
-func printPrPreview(out io.Writer, pr *api.PullRequest) error {
+func prStateWithDraft(pr *api.PullRequest) string {
+	if pr.IsDraft && pr.State == "OPEN" {
+		return "DRAFT"
+	}
+
+	return pr.State
+}
+
+func printRawPrPreview(out io.Writer, pr *api.PullRequest) error {
+	reviewers := prReviewerList(*pr)
+	assignees := prAssigneeList(*pr)
+	labels := prLabelList(*pr)
+	projects := prProjectList(*pr)
+
+	fmt.Fprintf(out, "title:\t%s\n", pr.Title)
+	fmt.Fprintf(out, "state:\t%s\n", prStateWithDraft(pr))
+	fmt.Fprintf(out, "author:\t%s\n", pr.Author.Login)
+	fmt.Fprintf(out, "labels:\t%s\n", labels)
+	fmt.Fprintf(out, "assignees:\t%s\n", assignees)
+	fmt.Fprintf(out, "reviewers:\t%s\n", reviewers)
+	fmt.Fprintf(out, "projects:\t%s\n", projects)
+	fmt.Fprintf(out, "milestone:\t%s\n", pr.Milestone.Title)
+
+	fmt.Fprintln(out, "--")
+	fmt.Fprintln(out, pr.Body)
+
+	return nil
+}
+
+func printHumanPrPreview(out io.Writer, pr *api.PullRequest) error {
 	// Header (Title and State)
 	fmt.Fprintln(out, utils.Bold(pr.Title))
 	fmt.Fprintf(out, "%s", prStateTitleWithColor(*pr))
diff --git a/command/pr_create.go b/command/pr_create.go
index 15406a27c2e..b66a7ff5d98 100644
--- a/command/pr_create.go
+++ b/command/pr_create.go
@@ -205,12 +205,14 @@ func prCreate(cmd *cobra.Command, _ []string) error {
 			message = "\nCreating draft pull request for %s into %s in %s\n\n"
 		}
 
-		fmt.Fprintf(colorableErr(cmd), message,
-			utils.Cyan(headBranch),
-			utils.Cyan(baseBranch),
-			ghrepo.FullName(baseRepo))
-		if (title == "" || body == "") && defaultsErr != nil {
-			fmt.Fprintf(colorableErr(cmd), "%s warning: could not compute title or body defaults: %s\n", utils.Yellow("!"), defaultsErr)
+		if connectedToTerminal(cmd) {
+			fmt.Fprintf(colorableErr(cmd), message,
+				utils.Cyan(headBranch),
+				utils.Cyan(baseBranch),
+				ghrepo.FullName(baseRepo))
+			if (title == "" || body == "") && defaultsErr != nil {
+				fmt.Fprintf(colorableErr(cmd), "%s warning: could not compute title or body defaults: %s\n", utils.Yellow("!"), defaultsErr)
+			}
 		}
 	}
 
@@ -223,7 +225,13 @@ func prCreate(cmd *cobra.Command, _ []string) error {
 		Milestones: milestoneTitles,
 	}
 
-	interactive := !(cmd.Flags().Changed("title") && cmd.Flags().Changed("body"))
+	if !connectedToTerminal(cmd) {
+		if !isWeb && (!cmd.Flags().Changed("title") && !autofill) {
+			return errors.New("--title or --fill required when not attached to a tty")
+		}
+	}
+
+	interactive := connectedToTerminal(cmd) && !(cmd.Flags().Changed("title") && cmd.Flags().Changed("body"))
 
 	if !isWeb && !autofill && interactive {
 		var nonLegacyTemplateFiles []string
@@ -357,8 +365,10 @@ func prCreate(cmd *cobra.Command, _ []string) error {
 		if err != nil {
 			return err
 		}
-		// TODO could exceed max url length for explorer
-		fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", displayURL(openURL))
+		if connectedToTerminal(cmd) {
+			// TODO could exceed max url length for explorer
+			fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", displayURL(openURL))
+		}
 		return utils.OpenInBrowser(openURL)
 	} else {
 		panic("Unreachable state")
diff --git a/command/pr_review.go b/command/pr_review.go
index 08efc638de1..a9681d61900 100644
--- a/command/pr_review.go
+++ b/command/pr_review.go
@@ -72,7 +72,10 @@ func processReviewOpt(cmd *cobra.Command) (*api.PullRequestReviewInput, error) {
 	}
 
 	if found == 0 && body == "" {
-		return nil, nil // signal interactive mode
+		if connectedToTerminal(cmd) {
+			return nil, nil // signal interactive mode
+		}
+		return nil, errors.New("--approve, --request-changes, or --comment required when not attached to a tty")
 	} else if found == 0 && body != "" {
 		return nil, errors.New("--body unsupported without --approve, --request-changes, or --comment")
 	} else if found > 1 {
@@ -106,7 +109,7 @@ func prReview(cmd *cobra.Command, args []string) error {
 		return fmt.Errorf("did not understand desired review action: %w", err)
 	}
 
-	out := colorableOut(cmd)
+	stderr := colorableErr(cmd)
 
 	if reviewData == nil {
 		reviewData, err = reviewSurvey(cmd)
@@ -114,7 +117,7 @@ func prReview(cmd *cobra.Command, args []string) error {
 			return err
 		}
 		if reviewData == nil && err == nil {
-			fmt.Fprint(out, "Discarding.\n")
+			fmt.Fprint(stderr, "Discarding.\n")
 			return nil
 		}
 	}
@@ -124,13 +127,17 @@ func prReview(cmd *cobra.Command, args []string) error {
 		return fmt.Errorf("failed to create review: %w", err)
 	}
 
+	if !connectedToTerminal(cmd) {
+		return nil
+	}
+
 	switch reviewData.State {
 	case api.ReviewComment:
-		fmt.Fprintf(out, "%s Reviewed pull request #%d\n", utils.Gray("-"), pr.Number)
+		fmt.Fprintf(stderr, "%s Reviewed pull request #%d\n", utils.Gray("-"), pr.Number)
 	case api.ReviewApprove:
-		fmt.Fprintf(out, "%s Approved pull request #%d\n", utils.Green("✓"), pr.Number)
+		fmt.Fprintf(stderr, "%s Approved pull request #%d\n", utils.Green("✓"), pr.Number)
 	case api.ReviewRequestChanges:
-		fmt.Fprintf(out, "%s Requested changes to pull request #%d\n", utils.Red("+"), pr.Number)
+		fmt.Fprintf(stderr, "%s Requested changes to pull request #%d\n", utils.Red("+"), pr.Number)
 	}
 
 	return nil

diff --git a/command/issue_test.go b/command/issue_test.go
index e9db1ca2205..7e7532a1e61 100644
--- a/command/issue_test.go
+++ b/command/issue_test.go
@@ -753,6 +753,8 @@ func TestIssueCreate_web(t *testing.T) {
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
+	defer stubTerminal(true)()
+
 	var seenCmd *exec.Cmd
 	restoreCmd := run.SetPrepareCmd(func(cmd *exec.Cmd) run.Runnable {
 		seenCmd = cmd
@@ -779,6 +781,8 @@ func TestIssueCreate_webTitleBody(t *testing.T) {
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
+	defer stubTerminal(true)()
+
 	var seenCmd *exec.Cmd
 	restoreCmd := run.SetPrepareCmd(func(cmd *exec.Cmd) run.Runnable {
 		seenCmd = cmd
diff --git a/command/pr_create_test.go b/command/pr_create_test.go
index 9f2a1ebdc3d..4d82c2b11f6 100644
--- a/command/pr_create_test.go
+++ b/command/pr_create_test.go
@@ -12,10 +12,124 @@ import (
 	"github.com/cli/cli/internal/ghrepo"
 	"github.com/cli/cli/pkg/httpmock"
 	"github.com/cli/cli/test"
+	"github.com/stretchr/testify/assert"
 )
 
+func TestPRCreate_nontty_web(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+	{ "data": { "repository": { "forks": { "nodes": [
+	] } } } }
+	`))
+
+	cs, cmdTeardown := test.InitCmdStubber()
+	defer cmdTeardown()
+
+	cs.Stub("")                                         // git config --get-regexp (determineTrackingBranch)
+	cs.Stub("")                                         // git show-ref --verify   (determineTrackingBranch)
+	cs.Stub("")                                         // git status
+	cs.Stub("1234567890,commit 0\n2345678901,commit 1") // git log
+	cs.Stub("")                                         // git push
+	cs.Stub("")                                         // browser
+
+	output, err := RunCommand(`pr create --web`)
+	eq(t, err, nil)
+
+	eq(t, output.String(), "")
+	eq(t, output.Stderr(), "")
+
+	eq(t, len(cs.Calls), 6)
+	eq(t, strings.Join(cs.Calls[4].Args, " "), "git push --set-upstream origin HEAD:feature")
+	browserCall := cs.Calls[5].Args
+	eq(t, browserCall[len(browserCall)-1], "https://github.com/OWNER/REPO/compare/master...feature?expand=1")
+
+}
+
+func TestPRCreate_nontty_insufficient_flags(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+	{ "data": { "repository": { "forks": { "nodes": [
+	] } } } }
+	`))
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "repository": { "pullRequests": { "nodes" : [
+		] } } } }
+	`))
+
+	output, err := RunCommand("pr create")
+	if err == nil {
+		t.Fatal("expected error")
+	}
+
+	assert.Equal(t, "--title or --fill required when not attached to a tty", err.Error())
+
+	assert.Equal(t, "", output.String())
+}
+
+func TestPRCreate_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+	{ "data": { "repository": { "forks": { "nodes": [
+	] } } } }
+	`))
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "repository": { "pullRequests": { "nodes" : [
+		] } } } }
+	`))
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "createPullRequest": { "pullRequest": {
+			"URL": "https://github.com/OWNER/REPO/pull/12"
+		} } } }
+	`))
+
+	cs, cmdTeardown := test.InitCmdStubber()
+	defer cmdTeardown()
+
+	cs.Stub("")                                         // git config --get-regexp (determineTrackingBranch)
+	cs.Stub("")                                         // git show-ref --verify   (determineTrackingBranch)
+	cs.Stub("")                                         // git status
+	cs.Stub("1234567890,commit 0\n2345678901,commit 1") // git log
+	cs.Stub("")                                         // git push
+
+	output, err := RunCommand(`pr create -t "my title" -b "my body"`)
+	eq(t, err, nil)
+
+	bodyBytes, _ := ioutil.ReadAll(http.Requests[3].Body)
+	reqBody := struct {
+		Variables struct {
+			Input struct {
+				RepositoryID string
+				Title        string
+				Body         string
+				BaseRefName  string
+				HeadRefName  string
+			}
+		}
+	}{}
+	_ = json.Unmarshal(bodyBytes, &reqBody)
+
+	assert.Equal(t, "REPOID", reqBody.Variables.Input.RepositoryID)
+	assert.Equal(t, "my title", reqBody.Variables.Input.Title)
+	assert.Equal(t, "my body", reqBody.Variables.Input.Body)
+	assert.Equal(t, "master", reqBody.Variables.Input.BaseRefName)
+	assert.Equal(t, "feature", reqBody.Variables.Input.HeadRefName)
+
+	assert.Equal(t, "", output.Stderr())
+	assert.Equal(t, "https://github.com/OWNER/REPO/pull/12\n", output.String())
+}
+
 func TestPRCreate(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -69,6 +183,7 @@ func TestPRCreate(t *testing.T) {
 
 func TestPRCreate_metadata(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 
@@ -193,6 +308,7 @@ func TestPRCreate_metadata(t *testing.T) {
 
 func TestPRCreate_withForking(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponseWithPermission("OWNER", "REPO", "READ")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -236,6 +352,7 @@ func TestPRCreate_withForking(t *testing.T) {
 
 func TestPRCreate_alreadyExists(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -269,6 +386,7 @@ func TestPRCreate_alreadyExists(t *testing.T) {
 
 func TestPRCreate_alreadyExistsDifferentBase(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -301,6 +419,7 @@ func TestPRCreate_alreadyExistsDifferentBase(t *testing.T) {
 
 func TestPRCreate_web(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -332,6 +451,7 @@ func TestPRCreate_web(t *testing.T) {
 
 func TestPRCreate_ReportsUncommittedChanges(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 
 	http.StubRepoResponse("OWNER", "REPO")
@@ -362,13 +482,11 @@ func TestPRCreate_ReportsUncommittedChanges(t *testing.T) {
 	eq(t, err, nil)
 
 	eq(t, output.String(), "https://github.com/OWNER/REPO/pull/12\n")
-	eq(t, output.Stderr(), `Warning: 1 uncommitted change
-
-Creating pull request for feature into master in OWNER/REPO
-
-`)
+	test.ExpectLines(t, output.Stderr(), `Warning: 1 uncommitted change`, `Creating pull request for.*feature.*into.*master.*in OWNER/REPO`)
 }
+
 func TestPRCreate_cross_repo_same_branch(t *testing.T) {
+	defer stubTerminal(true)()
 	ctx := context.NewBlank()
 	ctx.SetBranch("default")
 	ctx.SetRemotes(map[string]string{
@@ -457,6 +575,7 @@ func TestPRCreate_cross_repo_same_branch(t *testing.T) {
 
 func TestPRCreate_survey_defaults_multicommit(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "cool_bug-fixes")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -533,6 +652,7 @@ func TestPRCreate_survey_defaults_multicommit(t *testing.T) {
 
 func TestPRCreate_survey_defaults_monocommit(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.Register(httpmock.GraphQL(`query RepositoryNetwork\b`), httpmock.StringResponse(httpmock.RepoNetworkStubResponse("OWNER", "REPO", "master", "WRITE")))
@@ -592,8 +712,70 @@ func TestPRCreate_survey_defaults_monocommit(t *testing.T) {
 	eq(t, output.String(), "https://github.com/OWNER/REPO/pull/12\n")
 }
 
+func TestPRCreate_survey_autofill_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+	{ "data": { "repository": { "forks": { "nodes": [
+	] } } } }
+	`))
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "repository": { "pullRequests": { "nodes" : [
+		] } } } }
+	`))
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "createPullRequest": { "pullRequest": {
+			"URL": "https://github.com/OWNER/REPO/pull/12"
+		} } } }
+	`))
+
+	cs, cmdTeardown := test.InitCmdStubber()
+	defer cmdTeardown()
+
+	cs.Stub("")                                                        // git config --get-regexp (determineTrackingBranch)
+	cs.Stub("")                                                        // git show-ref --verify   (determineTrackingBranch)
+	cs.Stub("")                                                        // git status
+	cs.Stub("1234567890,the sky above the port")                       // git log
+	cs.Stub("was the color of a television, turned to a dead channel") // git show
+	cs.Stub("")                                                        // git rev-parse
+	cs.Stub("")                                                        // git push
+	cs.Stub("")                                                        // browser open
+
+	output, err := RunCommand(`pr create -f`)
+	eq(t, err, nil)
+
+	bodyBytes, _ := ioutil.ReadAll(http.Requests[3].Body)
+	reqBody := struct {
+		Variables struct {
+			Input struct {
+				RepositoryID string
+				Title        string
+				Body         string
+				BaseRefName  string
+				HeadRefName  string
+			}
+		}
+	}{}
+	_ = json.Unmarshal(bodyBytes, &reqBody)
+
+	expectedBody := "was the color of a television, turned to a dead channel"
+
+	assert.Equal(t, "REPOID", reqBody.Variables.Input.RepositoryID)
+	assert.Equal(t, "the sky above the port", reqBody.Variables.Input.Title)
+	assert.Equal(t, expectedBody, reqBody.Variables.Input.Body)
+	assert.Equal(t, "master", reqBody.Variables.Input.BaseRefName)
+	assert.Equal(t, "feature", reqBody.Variables.Input.HeadRefName)
+
+	assert.Equal(t, "https://github.com/OWNER/REPO/pull/12\n", output.String())
+
+	assert.Equal(t, "", output.Stderr())
+}
+
 func TestPRCreate_survey_autofill(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -652,6 +834,7 @@ func TestPRCreate_survey_autofill(t *testing.T) {
 
 func TestPRCreate_defaults_error_autofill(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -670,6 +853,7 @@ func TestPRCreate_defaults_error_autofill(t *testing.T) {
 
 func TestPRCreate_defaults_error_web(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -688,6 +872,7 @@ func TestPRCreate_defaults_error_web(t *testing.T) {
 
 func TestPRCreate_defaults_error_interactive(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
diff --git a/command/pr_review_test.go b/command/pr_review_test.go
index 2c2673db4ae..9b2c88b53d4 100644
--- a/command/pr_review_test.go
+++ b/command/pr_review_test.go
@@ -8,6 +8,7 @@ import (
 	"testing"
 
 	"github.com/cli/cli/test"
+	"github.com/stretchr/testify/assert"
 )
 
 func TestPRReview_validation(t *testing.T) {
@@ -49,6 +50,7 @@ func TestPRReview_bad_body(t *testing.T) {
 
 func TestPRReview_url_arg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubResponse(200, bytes.NewBufferString(`
 		{ "data": { "repository": { "pullRequest": {
@@ -74,7 +76,7 @@ func TestPRReview_url_arg(t *testing.T) {
 		t.Fatalf("error running pr review: %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), "Approved pull request #123")
+	test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
 
 	bodyBytes, _ := ioutil.ReadAll(http.Requests[1].Body)
 	reqBody := struct {
@@ -95,6 +97,7 @@ func TestPRReview_url_arg(t *testing.T) {
 
 func TestPRReview_number_arg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -121,7 +124,7 @@ func TestPRReview_number_arg(t *testing.T) {
 		t.Fatalf("error running pr review: %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), "Approved pull request #123")
+	test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
 
 	bodyBytes, _ := ioutil.ReadAll(http.Requests[2].Body)
 	reqBody := struct {
@@ -142,6 +145,7 @@ func TestPRReview_number_arg(t *testing.T) {
 
 func TestPRReview_no_arg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -159,7 +163,7 @@ func TestPRReview_no_arg(t *testing.T) {
 		t.Fatalf("error running pr review: %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), "- Reviewed pull request #123")
+	test.ExpectLines(t, output.Stderr(), "Reviewed pull request #123")
 
 	bodyBytes, _ := ioutil.ReadAll(http.Requests[2].Body)
 	reqBody := struct {
@@ -254,8 +258,73 @@ func TestPRReview(t *testing.T) {
 	}
 }
 
+func TestPRReview_nontty_insufficient_flags(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "repository": { "pullRequests": { "nodes": [
+			{ "url": "https://github.com/OWNER/REPO/pull/123",
+			  "number": 123,
+			  "id": "foobar123",
+			  "headRefName": "feature",
+				"baseRefName": "master" }
+		] } } } }
+	`))
+
+	output, err := RunCommand("pr review")
+	if err == nil {
+		t.Fatal("expected error")
+	}
+
+	assert.Equal(t, "", output.String())
+
+	assert.Equal(t, "did not understand desired review action: --approve, --request-changes, or --comment required when not attached to a tty", err.Error())
+}
+
+func TestPRReview_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.StubResponse(200, bytes.NewBufferString(`
+		{ "data": { "repository": { "pullRequests": { "nodes": [
+			{ "url": "https://github.com/OWNER/REPO/pull/123",
+			  "number": 123,
+			  "id": "foobar123",
+			  "headRefName": "feature",
+				"baseRefName": "master" }
+		] } } } }
+	`))
+
+	http.StubResponse(200, bytes.NewBufferString(`{"data": {} }`))
+	output, err := RunCommand("pr review -c -bcool")
+	if err != nil {
+		t.Fatalf("unexpected error running command: %s", err)
+	}
+
+	assert.Equal(t, "", output.String())
+	assert.Equal(t, "", output.Stderr())
+
+	bodyBytes, _ := ioutil.ReadAll(http.Requests[2].Body)
+	reqBody := struct {
+		Variables struct {
+			Input struct {
+				Event string
+				Body  string
+			}
+		}
+	}{}
+	_ = json.Unmarshal(bodyBytes, &reqBody)
+
+	assert.Equal(t, "COMMENT", reqBody.Variables.Input.Event)
+	assert.Equal(t, "cool", reqBody.Variables.Input.Body)
+}
+
 func TestPRReview_interactive(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -295,10 +364,11 @@ func TestPRReview_interactive(t *testing.T) {
 		t.Fatalf("got unexpected error running pr review: %s", err)
 	}
 
+	test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
+
 	test.ExpectLines(t, output.String(),
-		"Approved pull request #123",
 		"Got:",
-		"cool.*story") // weird because markdown rendering puts a bunch of junk between works
+		"cool.*story")
 
 	bodyBytes, _ := ioutil.ReadAll(http.Requests[2].Body)
 	reqBody := struct {
@@ -317,6 +387,7 @@ func TestPRReview_interactive(t *testing.T) {
 
 func TestPRReview_interactive_no_body(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -359,6 +430,7 @@ func TestPRReview_interactive_no_body(t *testing.T) {
 
 func TestPRReview_interactive_blank_approve(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "feature")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.StubResponse(200, bytes.NewBufferString(`
@@ -403,7 +475,7 @@ func TestPRReview_interactive_blank_approve(t *testing.T) {
 		t.Errorf("did not expect to see body printed in %s", output.String())
 	}
 
-	test.ExpectLines(t, output.String(), "Approved pull request #123")
+	test.ExpectLines(t, output.Stderr(), "Approved pull request #123")
 
 	bodyBytes, _ := ioutil.ReadAll(http.Requests[2].Body)
 	reqBody := struct {
diff --git a/command/pr_test.go b/command/pr_test.go
index 59ca67e9aaa..9aa75dae925 100644
--- a/command/pr_test.go
+++ b/command/pr_test.go
@@ -295,6 +295,7 @@ Requesting a code review from you
 
 func TestPRList(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(httpmock.GraphQL(`query PullRequestList\b`), httpmock.FileResponse("../test/fixtures/prList.json"))
@@ -304,18 +305,48 @@ func TestPRList(t *testing.T) {
 		t.Fatal(err)
 	}
 
-	eq(t, output.Stderr(), `
+	assert.Equal(t, `
 Showing 3 of 3 pull requests in OWNER/REPO
 
-`)
-	eq(t, output.String(), `32	New feature	feature
-29	Fixed bad bug	hubot:bug-fix
-28	Improve documentation	docs
-`)
+`, output.Stderr())
+
+	lines := strings.Split(output.String(), "\n")
+	res := []*regexp.Regexp{
+		regexp.MustCompile(`#32.*New feature.*feature`),
+		regexp.MustCompile(`#29.*Fixed bad bug.*hubot:bug-fix`),
+		regexp.MustCompile(`#28.*Improve documentation.*docs`),
+	}
+
+	for i, r := range res {
+		if !r.MatchString(lines[i]) {
+			t.Errorf("%s did not match %s", lines[i], r)
+		}
+	}
+}
+
+func TestPRList_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.Register(httpmock.GraphQL(`query PullRequestList\b`), httpmock.FileResponse("../test/fixtures/prList.json"))
+
+	output, err := RunCommand("pr list")
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	assert.Equal(t, "", output.Stderr())
+
+	assert.Equal(t, `32	New feature	feature	DRAFT
+29	Fixed bad bug	hubot:bug-fix	OPEN
+28	Improve documentation	docs	MERGED
+`, output.String())
 }
 
 func TestPRList_filtering(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(
@@ -339,6 +370,7 @@ No pull requests match your search in OWNER/REPO
 
 func TestPRList_filteringRemoveDuplicate(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(
@@ -350,14 +382,24 @@ func TestPRList_filteringRemoveDuplicate(t *testing.T) {
 		t.Fatal(err)
 	}
 
-	eq(t, output.String(), `32	New feature	feature
-29	Fixed bad bug	hubot:bug-fix
-28	Improve documentation	docs
-`)
+	lines := strings.Split(output.String(), "\n")
+
+	res := []*regexp.Regexp{
+		regexp.MustCompile(`#32.*New feature.*feature`),
+		regexp.MustCompile(`#29.*Fixed bad bug.*hubot:bug-fix`),
+		regexp.MustCompile(`#28.*Improve documentation.*docs`),
+	}
+
+	for i, r := range res {
+		if !r.MatchString(lines[i]) {
+			t.Errorf("%s did not match %s", lines[i], r)
+		}
+	}
 }
 
 func TestPRList_filteringClosed(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(
@@ -374,6 +416,7 @@ func TestPRList_filteringClosed(t *testing.T) {
 
 func TestPRList_filteringAssignee(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(
@@ -390,6 +433,7 @@ func TestPRList_filteringAssignee(t *testing.T) {
 
 func TestPRList_filteringAssigneeLabels(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	initFakeHTTP()
 
 	_, err := RunCommand(`pr list -l one,two -a hubot`)
@@ -400,6 +444,7 @@ func TestPRList_filteringAssigneeLabels(t *testing.T) {
 
 func TestPRList_withInvalidLimitFlag(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	initFakeHTTP()
 
 	_, err := RunCommand(`pr list --limit=0`)
@@ -410,6 +455,7 @@ func TestPRList_withInvalidLimitFlag(t *testing.T) {
 
 func TestPRList_web(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -437,7 +483,187 @@ func TestPRList_web(t *testing.T) {
 	eq(t, url, expectedURL)
 }
 
+func TestPRView_Preview_nontty(t *testing.T) {
+	defer stubTerminal(false)()
+	tests := map[string]struct {
+		ownerRepo       string
+		args            string
+		fixture         string
+		expectedOutputs []string
+	}{
+		"Open PR without metadata": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreview.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are from a fork\n`,
+				`state:\tOPEN\n`,
+				`author:\tnobody\n`,
+				`labels:\t\n`,
+				`assignees:\t\n`,
+				`reviewers:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+				`blueberries taste good`,
+			},
+		},
+		"Open PR with metadata by number": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreviewWithMetadataByNumber.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are from a fork\n`,
+				`reviewers:\t2 \(Approved\), 3 \(Commented\), 1 \(Requested\)\n`,
+				`assignees:\tmarseilles, monaco\n`,
+				`labels:\tone, two, three, four, five\n`,
+				`projects:\tProject 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\), Project 4 \(Awaiting triage\)\n`,
+				`milestone:\tuluru\n`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Open PR with reviewers by number": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreviewWithReviewersByNumber.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are from a fork\n`,
+				`state:\tOPEN\n`,
+				`author:\tnobody\n`,
+				`labels:\t\n`,
+				`assignees:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+				`reviewers:\tDEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), Team 1 \(Requested\), abc \(Requested\)\n`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Open PR with metadata by branch": {
+			ownerRepo: "master",
+			args:      "pr view blueberries",
+			fixture:   "../test/fixtures/prViewPreviewWithMetadataByBranch.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are a good fruit`,
+				`state:\tOPEN`,
+				`author:\tnobody`,
+				`assignees:\tmarseilles, monaco\n`,
+				`labels:\tone, two, three, four, five\n`,
+				`projects:\tProject 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\)\n`,
+				`milestone:\tuluru\n`,
+				`blueberries taste good`,
+			},
+		},
+		"Open PR for the current branch": {
+			ownerRepo: "blueberries",
+			args:      "pr view",
+			fixture:   "../test/fixtures/prView.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are a good fruit`,
+				`state:\tOPEN`,
+				`author:\tnobody`,
+				`assignees:\t\n`,
+				`labels:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Open PR wth empty body for the current branch": {
+			ownerRepo: "blueberries",
+			args:      "pr view",
+			fixture:   "../test/fixtures/prView_EmptyBody.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are a good fruit`,
+				`state:\tOPEN`,
+				`author:\tnobody`,
+				`assignees:\t\n`,
+				`labels:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+			},
+		},
+		"Closed PR": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreviewClosedState.json",
+			expectedOutputs: []string{
+				`state:\tCLOSED\n`,
+				`author:\tnobody\n`,
+				`labels:\t\n`,
+				`assignees:\t\n`,
+				`reviewers:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Merged PR": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreviewMergedState.json",
+			expectedOutputs: []string{
+				`state:\tMERGED\n`,
+				`author:\tnobody\n`,
+				`labels:\t\n`,
+				`assignees:\t\n`,
+				`reviewers:\t\n`,
+				`projects:\t\n`,
+				`milestone:\t\n`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Draft PR": {
+			ownerRepo: "master",
+			args:      "pr view 12",
+			fixture:   "../test/fixtures/prViewPreviewDraftState.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are from a fork\n`,
+				`state:\tDRAFT\n`,
+				`author:\tnobody\n`,
+				`labels:`,
+				`assignees:`,
+				`projects:`,
+				`milestone:`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+		"Draft PR by branch": {
+			ownerRepo: "master",
+			args:      "pr view blueberries",
+			fixture:   "../test/fixtures/prViewPreviewDraftStatebyBranch.json",
+			expectedOutputs: []string{
+				`title:\tBlueberries are a good fruit\n`,
+				`state:\tDRAFT\n`,
+				`author:\tnobody\n`,
+				`labels:`,
+				`assignees:`,
+				`projects:`,
+				`milestone:`,
+				`\*\*blueberries taste good\*\*`,
+			},
+		},
+	}
+
+	for name, tc := range tests {
+		t.Run(name, func(t *testing.T) {
+			initBlankContext("", "OWNER/REPO", tc.ownerRepo)
+			http := initFakeHTTP()
+			http.StubRepoResponse("OWNER", "REPO")
+			http.Register(httpmock.GraphQL(`query PullRequest(ByNumber|ForBranch)\b`), httpmock.FileResponse(tc.fixture))
+
+			output, err := RunCommand(tc.args)
+			if err != nil {
+				t.Errorf("error running command `%v`: %v", tc.args, err)
+			}
+
+			eq(t, output.Stderr(), "")
+
+			test.ExpectLines(t, output.String(), tc.expectedOutputs...)
+		})
+	}
+}
+
 func TestPRView_Preview(t *testing.T) {
+	defer stubTerminal(true)()
 	tests := map[string]struct {
 		ownerRepo       string
 		args            string
@@ -450,7 +676,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreview.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Open • nobody wants to merge 12 commits into master from blueberries`,
+				`Open.*nobody wants to merge 12 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
 			},
@@ -461,12 +687,12 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewWithMetadataByNumber.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Open • nobody wants to merge 12 commits into master from blueberries`,
-				`Reviewers: 2 \(Approved\), 3 \(Commented\), 1 \(Requested\)\n`,
-				`Assignees: marseilles, monaco\n`,
-				`Labels: one, two, three, four, five\n`,
-				`Projects: Project 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\), Project 4 \(Awaiting triage\)\n`,
-				`Milestone: uluru\n`,
+				`Open.*nobody wants to merge 12 commits into master from blueberries`,
+				`Reviewers:.*2 \(.*Approved.*\), 3 \(Commented\), 1 \(.*Requested.*\)\n`,
+				`Assignees:.*marseilles, monaco\n`,
+				`Labels:.*one, two, three, four, five\n`,
+				`Projects:.*Project 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\), Project 4 \(Awaiting triage\)\n`,
+				`Milestone:.*uluru\n`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12\n`,
 			},
@@ -477,7 +703,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewWithReviewersByNumber.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Reviewers: DEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), Team 1 \(Requested\), abc \(Requested\)\n`,
+				`Reviewers:.*DEF \(.*Commented.*\), def \(.*Changes requested.*\), ghost \(.*Approved.*\), hubot \(Commented\), xyz \(.*Approved.*\), 123 \(.*Requested.*\), Team 1 \(.*Requested.*\), abc \(.*Requested.*\)\n`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12\n`,
 			},
@@ -488,11 +714,11 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewWithMetadataByBranch.json",
 			expectedOutputs: []string{
 				`Blueberries are a good fruit`,
-				`Open • nobody wants to merge 8 commits into master from blueberries`,
-				`Assignees: marseilles, monaco\n`,
-				`Labels: one, two, three, four, five\n`,
-				`Projects: Project 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\)\n`,
-				`Milestone: uluru\n`,
+				`Open.*nobody wants to merge 8 commits into master from blueberries`,
+				`Assignees:.*marseilles, monaco\n`,
+				`Labels:.*one, two, three, four, five\n`,
+				`Projects:.*Project 1 \(column A\), Project 2 \(column B\), Project 3 \(column C\)\n`,
+				`Milestone:.*uluru\n`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/10\n`,
 			},
@@ -503,7 +729,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prView.json",
 			expectedOutputs: []string{
 				`Blueberries are a good fruit`,
-				`Open • nobody wants to merge 8 commits into master from blueberries`,
+				`Open.*nobody wants to merge 8 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/10`,
 			},
@@ -514,7 +740,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prView_EmptyBody.json",
 			expectedOutputs: []string{
 				`Blueberries are a good fruit`,
-				`Open • nobody wants to merge 8 commits into master from blueberries`,
+				`Open.*nobody wants to merge 8 commits into master from blueberries`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/10`,
 			},
 		},
@@ -524,7 +750,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewClosedState.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Closed • nobody wants to merge 12 commits into master from blueberries`,
+				`Closed.*nobody wants to merge 12 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
 			},
@@ -535,7 +761,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewMergedState.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Merged • nobody wants to merge 12 commits into master from blueberries`,
+				`Merged.*nobody wants to merge 12 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
 			},
@@ -546,7 +772,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewDraftState.json",
 			expectedOutputs: []string{
 				`Blueberries are from a fork`,
-				`Draft • nobody wants to merge 12 commits into master from blueberries`,
+				`Draft.*nobody wants to merge 12 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
 			},
@@ -557,7 +783,7 @@ func TestPRView_Preview(t *testing.T) {
 			fixture:   "../test/fixtures/prViewPreviewDraftStatebyBranch.json",
 			expectedOutputs: []string{
 				`Blueberries are a good fruit`,
-				`Draft • nobody wants to merge 8 commits into master from blueberries`,
+				`Draft.*nobody wants to merge 8 commits into master from blueberries`,
 				`blueberries taste good`,
 				`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/10`,
 			},
@@ -585,6 +811,7 @@ func TestPRView_Preview(t *testing.T) {
 
 func TestPRView_web_currentBranch(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "blueberries")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(httpmock.GraphQL(`query PullRequestForBranch\b`), httpmock.FileResponse("../test/fixtures/prView.json"))
@@ -620,6 +847,7 @@ func TestPRView_web_currentBranch(t *testing.T) {
 
 func TestPRView_web_noResultsForBranch(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "blueberries")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 	http.Register(httpmock.GraphQL(`query PullRequestForBranch\b`), httpmock.FileResponse("../test/fixtures/prView_NoActiveBranch.json"))
@@ -648,6 +876,7 @@ func TestPRView_web_noResultsForBranch(t *testing.T) {
 
 func TestPRView_web_numberArg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -680,6 +909,7 @@ func TestPRView_web_numberArg(t *testing.T) {
 
 func TestPRView_web_numberArgWithHash(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -712,6 +942,7 @@ func TestPRView_web_numberArgWithHash(t *testing.T) {
 
 func TestPRView_web_urlArg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubResponse(200, bytes.NewBufferString(`
 		{ "data": { "repository": { "pullRequest": {
@@ -742,6 +973,7 @@ func TestPRView_web_urlArg(t *testing.T) {
 
 func TestPRView_web_branchArg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -776,6 +1008,7 @@ func TestPRView_web_branchArg(t *testing.T) {
 
 func TestPRView_web_branchWithOwnerArg(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	http.StubRepoResponse("OWNER", "REPO")
 
@@ -965,6 +1198,7 @@ func TestPRReopen_alreadyMerged(t *testing.T) {
 
 func TestPrMerge(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1005,13 +1239,83 @@ func TestPrMerge(t *testing.T) {
 
 	r := regexp.MustCompile(`Merged pull request #1 \(The title of the PR\)`)
 
-	if !r.MatchString(output.String()) {
-		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.String())
+	if !r.MatchString(output.Stderr()) {
+		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.Stderr())
 	}
 }
 
+func TestPrMerge_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.Register(
+		httpmock.GraphQL(`query PullRequestByNumber\b`),
+		httpmock.StringResponse(`
+		{ "data": { "repository": {
+			"pullRequest": { "number": 1, "title": "The title of the PR", "state": "OPEN", "id": "THE-ID"}
+		} } }`))
+	http.Register(
+		httpmock.GraphQL(`mutation PullRequestMerge\b`),
+		httpmock.GraphQLMutation(`{}`, func(input map[string]interface{}) {
+			assert.Equal(t, "THE-ID", input["pullRequestId"].(string))
+			assert.Equal(t, "MERGE", input["mergeMethod"].(string))
+		}))
+	http.Register(
+		httpmock.GraphQL(`query RepositoryInfo\b`),
+		httpmock.StringResponse(`{
+			"data": {
+				"repository": {
+					"defaultBranchRef": {"name": "master"}
+				}
+			}
+		}`))
+	http.Register(
+		httpmock.REST("DELETE", "repos/OWNER/REPO/git/refs/heads/blueberries"),
+		httpmock.StringResponse(`{}`))
+
+	cs, cmdTeardown := test.InitCmdStubber()
+	defer cmdTeardown()
+
+	cs.Stub("branch.blueberries.remote origin\nbranch.blueberries.merge refs/heads/blueberries") // git config --get-regexp ^branch\.master\.(remote|merge)
+	cs.Stub("")                                                                                  // git config --get-regexp ^branch\.blueberries\.(remote|merge)$
+	cs.Stub("")                                                                                  // git symbolic-ref --quiet --short HEAD
+	cs.Stub("")                                                                                  // git checkout master
+	cs.Stub("")
+
+	output, err := RunCommand("pr merge 1 --merge")
+	if err != nil {
+		t.Fatalf("error running command `pr merge`: %v", err)
+	}
+
+	assert.Equal(t, "", output.String())
+	assert.Equal(t, "", output.Stderr())
+}
+
+func TestPrMerge_nontty_insufficient_flags(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(false)()
+	http := initFakeHTTP()
+	http.StubRepoResponse("OWNER", "REPO")
+	http.Register(
+		httpmock.GraphQL(`query PullRequestByNumber\b`),
+		httpmock.StringResponse(`
+		{ "data": { "repository": {
+			"pullRequest": { "number": 1, "title": "The title of the PR", "state": "OPEN", "id": "THE-ID"}
+		} } }`))
+
+	output, err := RunCommand("pr merge 1")
+	if err == nil {
+		t.Fatal("expected error")
+	}
+
+	assert.Equal(t, "--merge, --rebase, or --squash required when not attached to a tty", err.Error())
+	assert.Equal(t, "", output.String())
+}
+
 func TestPrMerge_withRepoFlag(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.Register(
@@ -1042,13 +1346,14 @@ func TestPrMerge_withRepoFlag(t *testing.T) {
 
 	r := regexp.MustCompile(`Merged pull request #1 \(The title of the PR\)`)
 
-	if !r.MatchString(output.String()) {
-		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.String())
+	if !r.MatchString(output.Stderr()) {
+		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.Stderr())
 	}
 }
 
 func TestPrMerge_deleteBranch(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "blueberries")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1079,11 +1384,12 @@ func TestPrMerge_deleteBranch(t *testing.T) {
 		t.Fatalf("Got unexpected error running `pr merge` %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), `Merged pull request #10 \(Blueberries are a good fruit\)`, "Deleted branch blueberries")
+	test.ExpectLines(t, output.Stderr(), `Merged pull request #10 \(Blueberries are a good fruit\)`, `Deleted branch.*blueberries`)
 }
 
 func TestPrMerge_deleteNonCurrentBranch(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "another-branch")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1112,11 +1418,12 @@ func TestPrMerge_deleteNonCurrentBranch(t *testing.T) {
 		t.Fatalf("Got unexpected error running `pr merge` %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), `Merged pull request #10 \(Blueberries are a good fruit\)`, "Deleted branch blueberries")
+	test.ExpectLines(t, output.Stderr(), `Merged pull request #10 \(Blueberries are a good fruit\)`, `Deleted branch.*blueberries`)
 }
 
 func TestPrMerge_noPrNumberGiven(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "blueberries")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1149,13 +1456,14 @@ func TestPrMerge_noPrNumberGiven(t *testing.T) {
 
 	r := regexp.MustCompile(`Merged pull request #10 \(Blueberries are a good fruit\)`)
 
-	if !r.MatchString(output.String()) {
-		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.String())
+	if !r.MatchString(output.Stderr()) {
+		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.Stderr())
 	}
 }
 
 func TestPrMerge_rebase(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1195,13 +1503,14 @@ func TestPrMerge_rebase(t *testing.T) {
 
 	r := regexp.MustCompile(`Rebased and merged pull request #2 \(The title of the PR\)`)
 
-	if !r.MatchString(output.String()) {
-		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.String())
+	if !r.MatchString(output.Stderr()) {
+		t.Fatalf("output did not match regexp /%s/\n> output\n%q\n", r, output.Stderr())
 	}
 }
 
 func TestPrMerge_squash(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1239,12 +1548,12 @@ func TestPrMerge_squash(t *testing.T) {
 		t.Fatalf("error running command `pr merge`: %v", err)
 	}
 
-	expected := "✔ Squashed and merged pull request #3 (The title of the PR)\n✔ Deleted branch blueberries\n"
-	assert.Equal(t, expected, output.String())
+	test.ExpectLines(t, output.Stderr(), "Squashed and merged pull request #3", `Deleted branch.*blueberries`)
 }
 
 func TestPrMerge_alreadyMerged(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1277,6 +1586,7 @@ func TestPrMerge_alreadyMerged(t *testing.T) {
 
 func TestPRMerge_interactive(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "blueberries")
+	defer stubTerminal(true)()
 	http := initFakeHTTP()
 	defer http.Verify(t)
 	http.StubRepoResponse("OWNER", "REPO")
@@ -1327,11 +1637,22 @@ func TestPRMerge_interactive(t *testing.T) {
 		t.Fatalf("Got unexpected error running `pr merge` %s", err)
 	}
 
-	test.ExpectLines(t, output.String(), "Merged pull request #3", "Deleted branch blueberries")
+	test.ExpectLines(t, output.Stderr(), "Merged pull request #3", `Deleted branch.*blueberries`)
 }
 
 func TestPrMerge_multipleMergeMethods(t *testing.T) {
 	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(true)()
+
+	_, err := RunCommand("pr merge 1 --merge --squash")
+	if err == nil {
+		t.Fatal("expected error running `pr merge` with multiple merge methods")
+	}
+}
+
+func TestPrMerge_multipleMergeMethods_nontty(t *testing.T) {
+	initBlankContext("", "OWNER/REPO", "master")
+	defer stubTerminal(false)()
 
 	_, err := RunCommand("pr merge 1 --merge --squash")
 	if err == nil {
diff --git a/test/fixtures/prList.json b/test/fixtures/prList.json
index abd0e4ee9e0..e050a27f6c5 100644
--- a/test/fixtures/prList.json
+++ b/test/fixtures/prList.json
@@ -9,7 +9,9 @@
               "number": 32,
               "title": "New feature",
               "url": "https://github.com/monalisa/hello/pull/32",
-              "headRefName": "feature"
+              "headRefName": "feature",
+              "state": "OPEN",
+              "isDraft": true
             }
           },
           {
@@ -18,6 +20,8 @@
               "title": "Fixed bad bug",
               "url": "https://github.com/monalisa/hello/pull/29",
               "headRefName": "bug-fix",
+              "state": "OPEN",
+              "isDraft": false,
               "isCrossRepository": true,
               "headRepositoryOwner": {
                 "login": "hubot"
@@ -27,6 +31,8 @@
           {
             "node": {
               "number": 28,
+              "state": "MERGED",
+              "isDraft": false,
               "title": "Improve documentation",
               "url": "https://github.com/monalisa/hello/pull/28",
               "headRefName": "docs"
@@ -40,4 +46,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

{"TestPRView_Preview_nontty/Open_PR_with_reviewers_by_number": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_interactive_blank_approve": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_deleteBranch": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_with_metadata_by_number": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_for_the_current_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_url_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_wth_empty_body_for_the_current_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_rebase": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_with_metadata_by_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_deleteNonCurrentBranch": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty_web": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_withRepoFlag": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_interactive": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRMerge_interactive": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_noPrNumberGiven": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Draft_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_without_metadata": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_no_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Draft_PR_by_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Merged_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRList_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_squash": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_number_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Closed_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"TestIssueCreate_webTitleBody": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_defaults_error_autofill": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigSet": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrStateTitleWithColor/Format_MERGED_state": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStateTitleWithColor/Open_state": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun_inputFile/stdin": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/shorthand_with_directory": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/no_arguments": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/file": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listURLWithQuery": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_currentBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/clone_arguments_with_directory": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside_survey_no": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_determineTrackingBranch_noMatch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrMerge_multipleMergeMethods": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestChangelogURL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueReopen": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_invalid_command": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/append": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestBranchDeleteRemote": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/Template_in_docs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestGistCreate_stdin": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/append_query": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestGistCreate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestGraphQL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_RepoCreate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview_validation": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_blankSlate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/bool": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest/simple_GET": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_RepoMetadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_with_reviewers_by_number": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasList": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCompletion_bash": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/non-GitHub_hostname": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addPerPage": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoCreate_org": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_groupGraphQLVariables/empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_survey_defaults_multicommit": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun_paginationREST": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/failure": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestBranchDeleteRemote/error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_printError/Cobra_flag_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCompletion_zsh": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestForOS": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_tty_Preview": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStateTitleWithColor/Closed_state": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueClose": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/filesystem_path": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrClose": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrStateTitleWithColor/Format_OPEN_state_for_Draft_PR": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoCreate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStatus": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_with_metadata_by_branch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractContents": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_urlArg_differentBase": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_filteringClosed": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigGetHost": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_sameRepo": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_nontty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes/missing_read:org": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest/POST_with_body_and_type": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractContents/Has_front-matter": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_indent/blank": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoCreate_orgWithTeam": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Template_folder_in_.github_takes_precedence": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_Remotes_FindByName": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/too_many_path_components": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_disabledIssues": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoView_web_fullURL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview_blank_request_changes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/HTTPS_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCheckForUpdate/latest_is_current": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest/POST_GraphQL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Template_folder_in_root": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findNextPage": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_branchArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_tty_withFlags": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_existing_alias": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor/more_pageInfo_blocks": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRDiff_no_current_pr": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/multiple_results": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone_hasParent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_filtering": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_resolvedRemotes_clonedFork": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRESTGetDelete": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/with_pagination": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigSet_update": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside/full_name_arg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/filesystem_path_with_scheme": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasList_empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_defaultBranch_repoFlag": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_filteringRemoveDuplicate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_groupGraphQLVariables": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_already_forked": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Legacy_templates_ignored": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_alreadyExists": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCheckForUpdate/current_is_prerelease": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes/no_scopes_in_response": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_openUserFile": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/success_204": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/github.com_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/REST_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStatus_disabledIssues": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_withInvalidLimitFlag": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_fillPlaceholders": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Korean_filled": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestGraphQLError": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_Closed_defaultBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findNextPage/no_next_page_in_Link": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/one_result_in_total_after_filters": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueCreate_nontty_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_tty_Preview/Open_issue_with_empty_body": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview_blank_comment": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/github.com_git_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExpandAlias": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/github.com_SSH_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFuzzyAgo": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/shorthand": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_tty_Preview/Closed_issue": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_for_the_current_branch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest/POST_with_params": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Korean": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_defaultBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_groupGraphQLVariables/variables_only": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestShellAlias_flag": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoView": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Merged_PR": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigGetHost_unset": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_RepoResolveMetadataIDs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_tty_Preview/Open_issue_with_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/no_matches_after_filters": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/with_request_body_from_file": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/no_results": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/string": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/input_pagination": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_differentRepo_remoteExists": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_ReportsUncommittedChanges": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestParseExtraArgs/args_and_target": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_urlArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_groupGraphQLVariables/query_+_variables": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/show_response_headers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_defaults_error_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractName/Complete_front-matter": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/No_extension": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_survey_autofill_nontty": {"run": "NONE", "test": "PASS", "fix": "PASS"}, "TestPrMerge_multipleMergeMethods_nontty": {"run": "NONE", "test": "PASS", "fix": "PASS"}, "TestRepoView_nonmarkdown_readme": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/github.com_HTTPS+SSH_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueClose_alreadyClosed": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest/GET_with_params": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_existingBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueCreate_disabledIssues": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCompletion_unsupported": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listURLWithQuery/spaces_in_values": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReady_alreadyReady": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/null": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findNextPage/no_Link_header": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStateTitleWithColor": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_survey_defaults_monocommit": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_tty_Preview/Open_issue_without_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractContents/No_front-matter": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/file_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_differentRepo_currentBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/silent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/multiple_results_after_filters": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestParseExtraArgs/only_target": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/show_response_headers_even_when_silent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrStateTitleWithColor/Format_CLOSED_state": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_empty_aliases": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findNextPage/has_next_page": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_groupGraphQLVariables/query_only": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/Dash_instead_of_underscore": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_printError": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/one_result": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_parseFields": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestForOS/macOS": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_showTheMostRecentPR": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_in_parent_survey_no": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/SSH_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_gh_command": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_web_notFound": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_cross_repo_same_branch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/POST_pagination": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_nontty_Preview/Closed_issue": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_Merged": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueStatus_blankSlate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/www.github.com_URL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite/blank": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_fork": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Closed_PR": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_indent/empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPullRequest_ChecksStatus": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_in_parent_yes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractName/Incomplete_front-matter": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/[]byte": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addPerPage/adds_per_page": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCompletion_fish": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestReplaceExcessiveWhitespace": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigGet": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_init_alias_cfg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_resolvedRemotes_triangularSetup": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_detachedHead": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/int": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor/unrelated_fields": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasDelete_nonexistent_command": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_reviewsAndChecks": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_numberArgWithHash": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/override_method": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addPerPage/avoids_adding_per_page_if_already_in_params": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCheckForUpdate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/one_result_after_filters": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_survey_autofill": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_branchWithOwnerArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReady": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_determineTrackingBranch_respectTrackingConfig": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueClose_issuesDisabled": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestShellAlias_bang": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_indent/indent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasDelete": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listURLWithQuery/blank": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Japanese": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addPerPage/avoids_adding_per_page_if_already_in_query": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestParseExtraArgs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractName/No_front-matter": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueReopen_alreadyOpen": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/with_headers": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_web_numberArgWithHash": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/Template_in_.github_takes_precedence": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_determineTrackingBranch_empty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_defaults_error_interactive": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/GraphQL_pagination": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_addQuery/nil": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Empty_template_directories": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoView_web_ownerRepo": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReopen": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigSetHost": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside_yes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_ttyTablePrinter_truncate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_printError/DNS_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReady_closed": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_existing_aliases": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_nontty_Preview": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExpandAlias_shell": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrClose_alreadyClosed": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_printError/generic_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_fillPlaceholders/has_substitutes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside/url_arg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes/errored_response": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_disabledIssues": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_alreadyExistsDifferentBase": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_arg_processing": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_differentRepo_invalidBranchName": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_filteringAssigneeLabels": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor/no_next_page": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestDedent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_reuseRemote": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Draft_PR_by_branch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_withInvalidLimitFlag": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/with_silenced_output": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/bool_true": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_wth_empty_body_for_the_current_branch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes/has_admin:org": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listHeader/one_result_in_total": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoView_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRemoteURLFormatting_ssh_config": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/placeholder": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_determineTrackingBranch_hasMatch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrStateTitleWithColor": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueCreate_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_resolvedRemotes_forkLookup": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_without_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_differentRepo": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_urlArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigSetHost_update": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_withForking": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRDiff_validation": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_numberArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_outside_survey_yes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Open_PR_with_metadata_by_number": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigGet_default": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/success": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_tty": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRDiff": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Template_folder_in_docs": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor/blank": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCreate_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_differentRepo_existingBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestConfigGet_not_found": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoClone/clone_arguments": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRESTError": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun_inputFile/from_file": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite/nested_object": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrStateTitleWithColor/Format_OPEN_state": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueCreate": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_Preview/Draft_PR": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/Non_legacy_templates_ignored": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_nontty_Preview/Open_issue_without_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/string": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite/error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun/GraphQL_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCompletion_powerShell": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindNonLegacy/Multiple_templates_in_template_folder": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExtractName": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestBranchDeleteRemote/success": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_fillPlaceholders/no_changes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestForOS/Windows": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_magicFieldValue/bool_false": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_httpRequest": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_web_urlArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_fillPlaceholders/no_greedy_substitutes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPrMerge_alreadyMerged": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_nontty_Preview/Open_issue_with_empty_body": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_noResultsForBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_CheckScopes/has_read:org": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Chinese_filled": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestParseExtraArgs/only_args": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_in_parent_survey_yes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_indent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/with_fields": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReopen_alreadyOpen": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoView_blanks": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRemoteURLFormatting_no_config": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_translateRemotes": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestAliasSet_space_args": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_Closed": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_listURLWithQuery/all": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestParseExtraArgs/no_args": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_repoFromURL/github.com_URL_with_trailing_slash": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueCreate_web": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite/empty_object": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRView_web_branchArg": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueReopen_issuesDisabled": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview_bad_body": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus_currentBranch_Merged_defaultBranch": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRDiff_argument_not_found": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRList_filteringAssignee": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_NewCmdApi/no_flags": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCheckForUpdate/latest_is_older": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestFindLegacy/Template_in_root": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRCheckout_maintainerCanModify": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun_inputFile": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Japanese_filled": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRStatus": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_printError/unknown_Cobra_command_error": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestExpandAlias_shell_extra_args": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepo_withoutUsername": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestWrite/string": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestRepoFork_in_parent": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestForOS/Linux": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReopen_alreadyMerged": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestPRReview_interactive_no_body": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_findEndCursor/has_next_page": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueList_nullAssigneeLabels": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestCheckForUpdate/latest_is_newer": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestTruncate/Chinese": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "Test_apiRun_paginationGraphQL": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "TestIssueView_nontty_Preview/Open_issue_with_metadata": {"run": "PASS", "test": "PASS", "fix": "PASS"}}
{"TestPRView_Preview_nontty/Open_PR_with_reviewers_by_number": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_interactive_blank_approve": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_deleteBranch": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_with_metadata_by_number": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_for_the_current_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_url_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_wth_empty_body_for_the_current_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_rebase": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_with_metadata_by_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_deleteNonCurrentBranch": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty_web": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_withRepoFlag": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_interactive": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRMerge_interactive": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_noPrNumberGiven": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Draft_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRCreate_nontty_insufficient_flags": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Open_PR_without_metadata": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRReview_no_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Draft_PR_by_branch": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Merged_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPRList_nontty": {"run": "NONE", "test": "FAIL", "fix": "PASS"}, "TestPrMerge_squash": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRReview_number_arg": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPrMerge": {"run": "PASS", "test": "FAIL", "fix": "PASS"}, "TestPRView_Preview_nontty/Closed_PR": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"passed_count": 392, "failed_count": 2, "skipped_count": 0, "passed_tests": ["TestIssueCreate_webTitleBody", "TestPRCreate_defaults_error_autofill", "TestConfigSet", "TestPrStateTitleWithColor/Format_MERGED_state", "Test_listURLWithQuery", "TestRepoClone/clone_arguments_with_directory", "TestRepoFork_outside_survey_no", "Test_determineTrackingBranch_noMatch", "TestRepoClone", "TestChangelogURL", "TestAliasSet_invalid_command", "Test_addQuery/append", "TestFindLegacy/Template_in_docs", "TestGistCreate_stdin", "Test_addQuery/append_query", "TestGistCreate", "TestGraphQL", "TestPRReview_validation", "TestPRStatus_blankSlate", "TestTruncate", "TestPRList_web", "Test_httpRequest/simple_GET", "Test_RepoMetadata", "Test_magicFieldValue", "TestCompletion_bash", "Test_repoFromURL/non-GitHub_hostname", "TestRepoCreate_org", "Test_apiRun_paginationREST", "Test_apiRun/failure", "TestPRView_Preview", "TestForOS", "TestIssueView_tty_Preview", "TestIssueStateTitleWithColor/Closed_state", "TestIssueClose", "Test_repoFromURL/filesystem_path", "TestPrClose", "TestIssueStatus", "TestPRView_Preview/Open_PR_with_metadata_by_branch", "TestPRCheckout_urlArg_differentBase", "TestConfigGetHost", "TestPRCheckout_sameRepo", "TestIssueList_nontty", "Test_CheckScopes/missing_read:org", "TestExtractContents/Has_front-matter", "TestFindNonLegacy/Template_folder_in_.github_takes_precedence", "Test_Remotes_FindByName", "TestPRReview_blank_request_changes", "TestRepoClone/HTTPS_URL", "TestCheckForUpdate/latest_is_current", "TestPRCheckout_branchArg", "TestIssueList_tty_withFlags", "TestAliasSet_existing_alias", "Test_findEndCursor/more_pageInfo_blocks", "TestPRDiff_no_current_pr", "Test_listHeader/multiple_results", "TestRepoFork_outside/full_name_arg", "TestAliasList_empty", "TestPRStatus_currentBranch_defaultBranch_repoFlag", "TestPRList_filteringRemoveDuplicate", "Test_NewCmdApi", "Test_groupGraphQLVariables", "TestRepoFork_already_forked", "Test_CheckScopes/no_scopes_in_response", "Test_openUserFile", "TestIssueStatus_disabledIssues", "TestIssueList_withInvalidLimitFlag", "Test_fillPlaceholders", "TestGraphQLError", "Test_findNextPage/no_next_page_in_Link", "Test_listHeader/one_result_in_total_after_filters", "TestIssueCreate_nontty_error", "TestPRReview_blank_comment", "Test_repoFromURL/github.com_git_URL", "TestExpandAlias", "Test_repoFromURL/github.com_SSH_URL", "TestFuzzyAgo", "TestRepoClone/shorthand", "TestIssueView_tty_Preview/Closed_issue", "TestPRView_Preview/Open_PR_for_the_current_branch", "Test_httpRequest/POST_with_params", "TestPRStatus_currentBranch_defaultBranch", "Test_groupGraphQLVariables/variables_only", "TestPRList", "TestPRView_Preview/Merged_PR", "Test_RepoResolveMetadataIDs", "TestIssueView_tty_Preview/Open_issue_with_metadata", "Test_listHeader/no_matches_after_filters", "Test_NewCmdApi/with_request_body_from_file", "Test_groupGraphQLVariables/query_+_variables", "Test_apiRun/show_response_headers", "TestPRCreate_defaults_error_web", "TestFindLegacy/No_extension", "TestRepoView_nonmarkdown_readme", "TestIssueClose_alreadyClosed", "Test_httpRequest/GET_with_params", "Test_listURLWithQuery/spaces_in_values", "TestPRReady_alreadyReady", "Test_magicFieldValue/null", "Test_findNextPage/no_Link_header", "TestFindLegacy", "TestPRCreate", "TestIssueView_tty_Preview/Open_issue_without_metadata", "Test_apiRun/silent", "TestParseExtraArgs/only_target", "TestAliasSet_empty_aliases", "Test_groupGraphQLVariables/query_only", "TestFindLegacy/Dash_instead_of_underscore", "Test_printError", "Test_listHeader/one_result", "TestForOS/macOS", "TestAliasSet_gh_command", "TestIssueView_web_notFound", "TestPRCreate_cross_repo_same_branch", "Test_NewCmdApi/POST_pagination", "TestIssueView_nontty_Preview/Closed_issue", "TestPRStatus_currentBranch_Merged", "TestIssueStatus_blankSlate", "TestPRView_Preview/Closed_PR", "TestCompletion_fish", "TestAliasSet_init_alias_cfg", "Test_resolvedRemotes_triangularSetup", "TestFindNonLegacy", "TestPRStatus_detachedHead", "TestPRView_web_numberArgWithHash", "TestCheckForUpdate", "TestPRCreate_survey_autofill", "TestPRReady", "TestTruncate/Japanese", "Test_addPerPage/avoids_adding_per_page_if_already_in_query", "TestIssueReopen_alreadyOpen", "Test_NewCmdApi/with_headers", "TestIssueView_web", "Test_addQuery/nil", "TestConfigSetHost", "TestPRReady_closed", "TestAliasSet_existing_aliases", "TestExpandAlias_shell", "TestRepoFork_outside/url_arg", "TestPRCreate_alreadyExistsDifferentBase", "TestAliasSet_arg_processing", "TestPRCheckout_differentRepo_invalidBranchName", "TestPRList_filteringAssigneeLabels", "Test_findEndCursor/no_next_page", "TestDedent", "TestPRView_Preview/Draft_PR_by_branch", "TestPRList_withInvalidLimitFlag", "Test_determineTrackingBranch_hasMatch", "Test_resolvedRemotes_forkLookup", "TestPRView_Preview/Open_PR_without_metadata", "TestIssueList_web", "TestConfigSetHost_update", "TestWrite", "TestPRView_web_numberArg", "TestPRView_Preview/Open_PR_with_metadata_by_number", "TestPRDiff", "TestFindNonLegacy/Template_folder_in_docs", "TestPRCreate_metadata", "TestPRCheckout_differentRepo_existingBranch", "TestConfigGet_not_found", "TestRepoClone/clone_arguments", "TestRESTError", "Test_apiRun_inputFile/from_file", "TestWrite/nested_object", "TestPRView_Preview/Draft_PR", "Test_findEndCursor", "TestCompletion_powerShell", "TestExtractName", "TestBranchDeleteRemote/success", "Test_fillPlaceholders/no_changes", "TestForOS/Windows", "Test_httpRequest", "Test_fillPlaceholders/no_greedy_substitutes", "TestPrMerge_alreadyMerged", "TestIssueView_nontty_Preview/Open_issue_with_empty_body", "TestRepoFork_in_parent_survey_yes", "Test_indent", "Test_NewCmdApi/with_fields", "TestRemoteURLFormatting_no_config", "TestPRStatus_currentBranch_Closed", "Test_listURLWithQuery/all", "TestIssueCreate_web", "TestPRView_web_branchArg", "TestIssueReopen_issuesDisabled", "TestPRReview_bad_body", "TestPRStatus_currentBranch_Merged_defaultBranch", "TestPRReview_number_arg", "TestPRList_filteringAssignee", "Test_NewCmdApi/no_flags", "TestCheckForUpdate/latest_is_older", "TestFindLegacy/Template_in_root", "Test_apiRun_inputFile", "TestTruncate/Japanese_filled", "TestPrMerge", "TestPRStatus", "TestRepo_withoutUsername", "TestForOS/Linux", "TestPRReopen_alreadyMerged", "TestIssueList_nullAssigneeLabels", "TestCheckForUpdate/latest_is_newer", "TestIssueView_nontty_Preview/Open_issue_with_metadata", "TestIssueStateTitleWithColor/Open_state", "Test_apiRun_inputFile/stdin", "TestRepoClone/shorthand_with_directory", "Test_NewCmdApi/no_arguments", "Test_magicFieldValue/file", "TestPRView_web_currentBranch", "TestPrMerge_multipleMergeMethods", "TestIssueReopen", "TestBranchDeleteRemote", "Test_RepoCreate", "Test_addQuery/bool", "TestPRView_Preview/Open_PR_with_reviewers_by_number", "TestAliasList", "Test_addPerPage", "Test_addQuery", "Test_groupGraphQLVariables/empty", "TestPRCreate_survey_defaults_multicommit", "TestBranchDeleteRemote/error", "Test_listHeader", "Test_printError/Cobra_flag_error", "TestCompletion_zsh", "TestPrStateTitleWithColor/Format_OPEN_state_for_Draft_PR", "TestRepoCreate", "TestExtractContents", "TestPRList_filteringClosed", "Test_httpRequest/POST_with_body_and_type", "TestPRReview_interactive_blank_approve", "Test_indent/blank", "TestRepoCreate_orgWithTeam", "Test_repoFromURL/too_many_path_components", "Test_apiRun", "TestIssueView_disabledIssues", "TestRepoView_web_fullURL", "TestPRReview", "Test_httpRequest/POST_GraphQL", "TestFindNonLegacy/Template_folder_in_root", "TestPrMerge_deleteBranch", "Test_findNextPage", "TestRepoClone_hasParent", "TestPRList_filtering", "Test_resolvedRemotes_clonedFork", "TestRESTGetDelete", "Test_NewCmdApi/with_pagination", "TestConfigSet_update", "Test_repoFromURL/filesystem_path_with_scheme", "Test_CheckScopes", "TestFindNonLegacy/Legacy_templates_ignored", "TestPRCreate_alreadyExists", "TestCheckForUpdate/current_is_prerelease", "Test_apiRun/success_204", "Test_repoFromURL/github.com_URL", "Test_apiRun/REST_error", "TestTruncate/Korean_filled", "TestPRStatus_currentBranch_Closed_defaultBranch", "TestIssueView_tty_Preview/Open_issue_with_empty_body", "TestTruncate/Korean", "TestShellAlias_flag", "TestRepoView", "TestPRReview_url_arg", "TestConfigGetHost_unset", "Test_listHeader/no_results", "Test_addQuery/string", "Test_NewCmdApi/input_pagination", "TestPRCheckout_differentRepo_remoteExists", "TestPRCreate_ReportsUncommittedChanges", "TestParseExtraArgs/args_and_target", "TestPRCheckout_urlArg", "TestExtractName/Complete_front-matter", "Test_repoFromURL/github.com_HTTPS+SSH_URL", "TestPRCheckout_existingBranch", "TestIssueCreate_disabledIssues", "TestCompletion_unsupported", "TestIssueStateTitleWithColor", "TestPRCreate_survey_defaults_monocommit", "TestExtractContents/No_front-matter", "Test_magicFieldValue/file_error", "TestPRCheckout_differentRepo_currentBranch", "Test_listHeader/multiple_results_after_filters", "Test_apiRun/show_response_headers_even_when_silent", "TestPrStateTitleWithColor/Format_CLOSED_state", "Test_findNextPage/has_next_page", "TestPrMerge_rebase", "Test_parseFields", "TestRepoFork_outside", "TestPRStatus_currentBranch_showTheMostRecentPR", "TestRepoFork_in_parent_survey_no", "TestRepoClone/SSH_URL", "Test_repoFromURL", "Test_repoFromURL/www.github.com_URL", "TestWrite/blank", "TestPRStatus_fork", "TestPrMerge_deleteNonCurrentBranch", "Test_indent/empty", "TestPullRequest_ChecksStatus", "TestRepoFork_in_parent_yes", "TestExtractName/Incomplete_front-matter", "Test_addQuery/[]byte", "Test_addPerPage/adds_per_page", "TestReplaceExcessiveWhitespace", "TestConfigGet", "Test_addQuery/int", "Test_findEndCursor/unrelated_fields", "TestAliasDelete_nonexistent_command", "TestPRStatus_reviewsAndChecks", "Test_NewCmdApi/override_method", "Test_addPerPage/avoids_adding_per_page_if_already_in_params", "Test_listHeader/one_result_after_filters", "TestPRView_web_branchWithOwnerArg", "Test_determineTrackingBranch_respectTrackingConfig", "TestIssueClose_issuesDisabled", "TestShellAlias_bang", "Test_indent/indent", "TestAliasDelete", "Test_listURLWithQuery/blank", "TestParseExtraArgs", "TestExtractName/No_front-matter", "TestIssueView_web_numberArgWithHash", "TestFindLegacy/Template_in_.github_takes_precedence", "Test_determineTrackingBranch_empty", "TestPRCreate_defaults_error_interactive", "Test_NewCmdApi/GraphQL_pagination", "TestFindNonLegacy/Empty_template_directories", "TestRepoView_web_ownerRepo", "TestPRReopen", "TestRepoFork_outside_yes", "Test_ttyTablePrinter_truncate", "TestPrMerge_withRepoFlag", "Test_printError/DNS_error", "TestIssueView_nontty_Preview", "TestPRReview_interactive", "TestPrClose_alreadyClosed", "Test_printError/generic_error", "Test_fillPlaceholders/has_substitutes", "Test_CheckScopes/errored_response", "TestIssueList_disabledIssues", "TestRepoFork_reuseRemote", "Test_NewCmdApi/with_silenced_output", "Test_magicFieldValue/bool_true", "TestPRView_Preview/Open_PR_wth_empty_body_for_the_current_branch", "Test_CheckScopes/has_admin:org", "Test_listHeader/one_result_in_total", "TestRepoView_web", "TestRemoteURLFormatting_ssh_config", "Test_magicFieldValue/placeholder", "TestPRCreate_web", "TestPrStateTitleWithColor", "TestIssueCreate_metadata", "TestPRCheckout_differentRepo", "TestPRMerge_interactive", "TestPRView_web_urlArg", "TestPRCreate_withForking", "TestPRDiff_validation", "TestConfigGet_default", "Test_apiRun/success", "TestIssueList_tty", "Test_findEndCursor/blank", "TestPrMerge_noPrNumberGiven", "TestPrStateTitleWithColor/Format_OPEN_state", "TestIssueCreate", "TestFindLegacy/Non_legacy_templates_ignored", "TestIssueView_nontty_Preview/Open_issue_without_metadata", "Test_magicFieldValue/string", "TestWrite/error", "Test_apiRun/GraphQL_error", "TestFindNonLegacy/Multiple_templates_in_template_folder", "Test_magicFieldValue/bool_false", "TestIssueView_web_urlArg", "TestPRView_web_noResultsForBranch", "Test_CheckScopes/has_read:org", "TestTruncate/Chinese_filled", "TestParseExtraArgs/only_args", "TestPRReview_no_arg", "TestPRReopen_alreadyOpen", "TestRepoView_blanks", "Test_translateRemotes", "TestAliasSet_space_args", "TestParseExtraArgs/no_args", "Test_repoFromURL/github.com_URL_with_trailing_slash", "TestWrite/empty_object", "TestPrMerge_squash", "TestPRDiff_argument_not_found", "TestIssueList", "TestPRCheckout_maintainerCanModify", "Test_printError/unknown_Cobra_command_error", "TestExpandAlias_shell_extra_args", "TestWrite/string", "TestRepoFork_in_parent", "TestPRReview_interactive_no_body", "Test_findEndCursor/has_next_page", "TestTruncate/Chinese", "Test_apiRun_paginationGraphQL", "TestRepoFork_outside_survey_yes"], "failed_tests": ["github.com/cli/cli/git", "github.com/cli/cli/internal/config"], "skipped_tests": []}
{"passed_count": 381, "failed_count": 35, "skipped_count": 0, "passed_tests": ["TestIssueCreate_webTitleBody", "TestPRCreate_defaults_error_autofill", "TestConfigSet", "TestPrStateTitleWithColor/Format_MERGED_state", "Test_listURLWithQuery", "TestRepoClone/clone_arguments_with_directory", "TestRepoFork_outside_survey_no", "Test_determineTrackingBranch_noMatch", "TestRepoClone", "TestChangelogURL", "TestAliasSet_invalid_command", "Test_addQuery/append", "TestFindLegacy/Template_in_docs", "TestGistCreate_stdin", "Test_addQuery/append_query", "TestGistCreate", "TestGraphQL", "TestPRReview_validation", "TestPRStatus_blankSlate", "TestTruncate", "TestPRList_web", "Test_httpRequest/simple_GET", "Test_RepoMetadata", "Test_magicFieldValue", "TestCompletion_bash", "Test_repoFromURL/non-GitHub_hostname", "TestRepoCreate_org", "Test_apiRun_paginationREST", "Test_apiRun/failure", "TestPRView_Preview", "TestForOS", "TestIssueView_tty_Preview", "TestIssueStateTitleWithColor/Closed_state", "TestIssueClose", "Test_repoFromURL/filesystem_path", "TestPrClose", "TestIssueStatus", "TestPRView_Preview/Open_PR_with_metadata_by_branch", "TestPRCheckout_urlArg_differentBase", "TestConfigGetHost", "TestPRCheckout_sameRepo", "TestIssueList_nontty", "Test_CheckScopes/missing_read:org", "TestExtractContents/Has_front-matter", "TestFindNonLegacy/Template_folder_in_.github_takes_precedence", "Test_Remotes_FindByName", "TestPRReview_blank_request_changes", "TestRepoClone/HTTPS_URL", "TestCheckForUpdate/latest_is_current", "TestPRCheckout_branchArg", "TestIssueList_tty_withFlags", "TestAliasSet_existing_alias", "Test_findEndCursor/more_pageInfo_blocks", "TestPRDiff_no_current_pr", "Test_listHeader/multiple_results", "TestRepoFork_outside/full_name_arg", "TestAliasList_empty", "TestPRStatus_currentBranch_defaultBranch_repoFlag", "TestPRList_filteringRemoveDuplicate", "Test_NewCmdApi", "Test_groupGraphQLVariables", "TestRepoFork_already_forked", "Test_CheckScopes/no_scopes_in_response", "Test_openUserFile", "TestIssueStatus_disabledIssues", "TestIssueList_withInvalidLimitFlag", "Test_fillPlaceholders", "TestGraphQLError", "Test_findNextPage/no_next_page_in_Link", "Test_listHeader/one_result_in_total_after_filters", "TestIssueCreate_nontty_error", "TestPRReview_blank_comment", "Test_repoFromURL/github.com_git_URL", "TestExpandAlias", "Test_repoFromURL/github.com_SSH_URL", "TestFuzzyAgo", "TestRepoClone/shorthand", "TestIssueView_tty_Preview/Closed_issue", "TestPRView_Preview/Open_PR_for_the_current_branch", "Test_httpRequest/POST_with_params", "TestPRStatus_currentBranch_defaultBranch", "Test_groupGraphQLVariables/variables_only", "TestPRList", "TestPRView_Preview/Merged_PR", "Test_RepoResolveMetadataIDs", "TestIssueView_tty_Preview/Open_issue_with_metadata", "Test_listHeader/no_matches_after_filters", "Test_NewCmdApi/with_request_body_from_file", "Test_groupGraphQLVariables/query_+_variables", "Test_apiRun/show_response_headers", "TestPRCreate_defaults_error_web", "TestFindLegacy/No_extension", "TestRepoView_nonmarkdown_readme", "TestIssueClose_alreadyClosed", "Test_httpRequest/GET_with_params", "Test_listURLWithQuery/spaces_in_values", "TestPRReady_alreadyReady", "Test_magicFieldValue/null", "Test_findNextPage/no_Link_header", "TestFindLegacy", "TestPRCreate", "TestIssueView_tty_Preview/Open_issue_without_metadata", "Test_apiRun/silent", "TestParseExtraArgs/only_target", "TestAliasSet_empty_aliases", "Test_groupGraphQLVariables/query_only", "TestFindLegacy/Dash_instead_of_underscore", "Test_printError", "Test_listHeader/one_result", "TestForOS/macOS", "TestAliasSet_gh_command", "TestIssueView_web_notFound", "TestPRCreate_cross_repo_same_branch", "Test_NewCmdApi/POST_pagination", "TestIssueView_nontty_Preview/Closed_issue", "TestPRStatus_currentBranch_Merged", "TestIssueStatus_blankSlate", "TestPRView_Preview/Closed_PR", "TestCompletion_fish", "TestAliasSet_init_alias_cfg", "Test_resolvedRemotes_triangularSetup", "TestFindNonLegacy", "TestPRStatus_detachedHead", "TestPRView_web_numberArgWithHash", "TestCheckForUpdate", "TestPRCreate_survey_autofill", "TestPRReady", "TestTruncate/Japanese", "Test_addPerPage/avoids_adding_per_page_if_already_in_query", "TestIssueReopen_alreadyOpen", "Test_NewCmdApi/with_headers", "TestIssueView_web", "Test_addQuery/nil", "TestConfigSetHost", "TestPRReady_closed", "TestAliasSet_existing_aliases", "TestExpandAlias_shell", "TestRepoFork_outside/url_arg", "TestPRCreate_alreadyExistsDifferentBase", "TestAliasSet_arg_processing", "TestPRCheckout_differentRepo_invalidBranchName", "TestPRList_filteringAssigneeLabels", "Test_findEndCursor/no_next_page", "TestDedent", "TestPRView_Preview/Draft_PR_by_branch", "TestPRList_withInvalidLimitFlag", "Test_determineTrackingBranch_hasMatch", "Test_resolvedRemotes_forkLookup", "TestPRView_Preview/Open_PR_without_metadata", "TestIssueList_web", "TestConfigSetHost_update", "TestWrite", "TestPRView_web_numberArg", "TestPRView_Preview/Open_PR_with_metadata_by_number", "TestPRDiff", "TestFindNonLegacy/Template_folder_in_docs", "TestPRCreate_metadata", "TestPRCheckout_differentRepo_existingBranch", "TestConfigGet_not_found", "TestRepoClone/clone_arguments", "TestRESTError", "Test_apiRun_inputFile/from_file", "TestWrite/nested_object", "TestPRView_Preview/Draft_PR", "Test_findEndCursor", "TestCompletion_powerShell", "TestExtractName", "TestBranchDeleteRemote/success", "Test_fillPlaceholders/no_changes", "TestForOS/Windows", "Test_httpRequest", "Test_fillPlaceholders/no_greedy_substitutes", "TestPrMerge_alreadyMerged", "TestIssueView_nontty_Preview/Open_issue_with_empty_body", "TestRepoFork_in_parent_survey_yes", "Test_indent", "Test_NewCmdApi/with_fields", "TestRemoteURLFormatting_no_config", "TestPRStatus_currentBranch_Closed", "Test_listURLWithQuery/all", "TestIssueCreate_web", "TestPRView_web_branchArg", "TestIssueReopen_issuesDisabled", "TestPRReview_bad_body", "TestPRStatus_currentBranch_Merged_defaultBranch", "TestPRList_filteringAssignee", "Test_NewCmdApi/no_flags", "TestCheckForUpdate/latest_is_older", "TestFindLegacy/Template_in_root", "Test_apiRun_inputFile", "TestTruncate/Japanese_filled", "TestPRStatus", "TestRepo_withoutUsername", "TestForOS/Linux", "TestPRReopen_alreadyMerged", "TestIssueList_nullAssigneeLabels", "TestCheckForUpdate/latest_is_newer", "TestIssueView_nontty_Preview/Open_issue_with_metadata", "TestIssueStateTitleWithColor/Open_state", "Test_apiRun_inputFile/stdin", "TestRepoClone/shorthand_with_directory", "Test_NewCmdApi/no_arguments", "Test_magicFieldValue/file", "TestPRView_web_currentBranch", "TestPrMerge_multipleMergeMethods", "TestIssueReopen", "TestBranchDeleteRemote", "Test_RepoCreate", "Test_addQuery/bool", "TestPRView_Preview/Open_PR_with_reviewers_by_number", "TestAliasList", "Test_addPerPage", "Test_addQuery", "Test_groupGraphQLVariables/empty", "TestPRCreate_survey_defaults_multicommit", "TestBranchDeleteRemote/error", "Test_listHeader", "Test_printError/Cobra_flag_error", "TestCompletion_zsh", "TestPrStateTitleWithColor/Format_OPEN_state_for_Draft_PR", "TestRepoCreate", "TestExtractContents", "TestPRList_filteringClosed", "Test_httpRequest/POST_with_body_and_type", "Test_indent/blank", "TestRepoCreate_orgWithTeam", "Test_repoFromURL/too_many_path_components", "Test_apiRun", "TestIssueView_disabledIssues", "TestRepoView_web_fullURL", "TestPRReview", "Test_httpRequest/POST_GraphQL", "TestFindNonLegacy/Template_folder_in_root", "Test_findNextPage", "TestRepoClone_hasParent", "TestPRList_filtering", "Test_resolvedRemotes_clonedFork", "TestRESTGetDelete", "Test_NewCmdApi/with_pagination", "TestConfigSet_update", "Test_repoFromURL/filesystem_path_with_scheme", "Test_CheckScopes", "TestFindNonLegacy/Legacy_templates_ignored", "TestPRCreate_alreadyExists", "TestCheckForUpdate/current_is_prerelease", "Test_apiRun/success_204", "Test_repoFromURL/github.com_URL", "Test_apiRun/REST_error", "TestTruncate/Korean_filled", "TestPRStatus_currentBranch_Closed_defaultBranch", "TestIssueView_tty_Preview/Open_issue_with_empty_body", "TestTruncate/Korean", "TestShellAlias_flag", "TestRepoView", "TestConfigGetHost_unset", "Test_listHeader/no_results", "Test_addQuery/string", "Test_NewCmdApi/input_pagination", "TestPRCheckout_differentRepo_remoteExists", "TestPRCreate_ReportsUncommittedChanges", "TestPRCreate_survey_autofill_nontty", "TestPRCheckout_urlArg", "TestParseExtraArgs/args_and_target", "TestExtractName/Complete_front-matter", "TestPrMerge_multipleMergeMethods_nontty", "Test_repoFromURL/github.com_HTTPS+SSH_URL", "TestPRCheckout_existingBranch", "TestIssueCreate_disabledIssues", "TestCompletion_unsupported", "TestIssueStateTitleWithColor", "TestPRCreate_survey_defaults_monocommit", "TestExtractContents/No_front-matter", "Test_magicFieldValue/file_error", "TestPRCheckout_differentRepo_currentBranch", "Test_listHeader/multiple_results_after_filters", "Test_apiRun/show_response_headers_even_when_silent", "TestPrStateTitleWithColor/Format_CLOSED_state", "Test_findNextPage/has_next_page", "Test_parseFields", "TestRepoFork_outside", "TestPRStatus_currentBranch_showTheMostRecentPR", "TestRepoFork_in_parent_survey_no", "TestRepoClone/SSH_URL", "Test_repoFromURL", "Test_repoFromURL/www.github.com_URL", "TestWrite/blank", "TestPRStatus_fork", "Test_indent/empty", "TestPullRequest_ChecksStatus", "TestRepoFork_in_parent_yes", "TestExtractName/Incomplete_front-matter", "Test_addQuery/[]byte", "Test_addPerPage/adds_per_page", "TestReplaceExcessiveWhitespace", "TestConfigGet", "Test_addQuery/int", "Test_findEndCursor/unrelated_fields", "TestAliasDelete_nonexistent_command", "TestPRStatus_reviewsAndChecks", "Test_NewCmdApi/override_method", "Test_addPerPage/avoids_adding_per_page_if_already_in_params", "Test_listHeader/one_result_after_filters", "TestPRView_web_branchWithOwnerArg", "Test_determineTrackingBranch_respectTrackingConfig", "TestIssueClose_issuesDisabled", "TestShellAlias_bang", "Test_indent/indent", "TestAliasDelete", "Test_listURLWithQuery/blank", "TestParseExtraArgs", "TestExtractName/No_front-matter", "TestIssueView_web_numberArgWithHash", "TestFindLegacy/Template_in_.github_takes_precedence", "Test_determineTrackingBranch_empty", "TestPRCreate_defaults_error_interactive", "Test_NewCmdApi/GraphQL_pagination", "TestFindNonLegacy/Empty_template_directories", "TestRepoView_web_ownerRepo", "TestPRReopen", "TestRepoFork_outside_yes", "Test_ttyTablePrinter_truncate", "Test_printError/DNS_error", "TestIssueView_nontty_Preview", "TestPrClose_alreadyClosed", "Test_printError/generic_error", "Test_fillPlaceholders/has_substitutes", "Test_CheckScopes/errored_response", "TestIssueList_disabledIssues", "TestRepoFork_reuseRemote", "Test_NewCmdApi/with_silenced_output", "Test_magicFieldValue/bool_true", "TestPRView_Preview/Open_PR_wth_empty_body_for_the_current_branch", "Test_CheckScopes/has_admin:org", "Test_listHeader/one_result_in_total", "TestRepoView_web", "TestRemoteURLFormatting_ssh_config", "Test_magicFieldValue/placeholder", "TestPRCreate_web", "TestPrStateTitleWithColor", "TestIssueCreate_metadata", "TestPRCheckout_differentRepo", "TestPRView_web_urlArg", "TestPRCreate_withForking", "TestPRDiff_validation", "TestConfigGet_default", "Test_apiRun/success", "TestIssueList_tty", "Test_findEndCursor/blank", "TestPrStateTitleWithColor/Format_OPEN_state", "TestIssueCreate", "TestFindLegacy/Non_legacy_templates_ignored", "TestIssueView_nontty_Preview/Open_issue_without_metadata", "Test_magicFieldValue/string", "TestWrite/error", "Test_apiRun/GraphQL_error", "TestFindNonLegacy/Multiple_templates_in_template_folder", "Test_magicFieldValue/bool_false", "TestIssueView_web_urlArg", "TestPRView_web_noResultsForBranch", "Test_CheckScopes/has_read:org", "TestTruncate/Chinese_filled", "TestParseExtraArgs/only_args", "TestPRReopen_alreadyOpen", "TestRepoView_blanks", "Test_translateRemotes", "TestAliasSet_space_args", "TestParseExtraArgs/no_args", "Test_repoFromURL/github.com_URL_with_trailing_slash", "TestWrite/empty_object", "TestPRDiff_argument_not_found", "TestIssueList", "TestPRCheckout_maintainerCanModify", "Test_printError/unknown_Cobra_command_error", "TestExpandAlias_shell_extra_args", "TestWrite/string", "TestRepoFork_in_parent", "TestPRReview_interactive_no_body", "Test_findEndCursor/has_next_page", "TestTruncate/Chinese", "Test_apiRun_paginationGraphQL", "TestRepoFork_outside_survey_yes"], "failed_tests": ["TestPRView_Preview_nontty/Draft_PR_by_branch", "TestPRView_Preview_nontty/Merged_PR", "github.com/cli/cli/command", "TestPrMerge_withRepoFlag", "TestPrMerge_noPrNumberGiven", "TestPRView_Preview_nontty/Draft_PR", "TestPRReview_interactive", "TestPRList_nontty", "TestPrMerge_nontty", "TestPRCreate_nontty_insufficient_flags", "TestPRView_Preview_nontty/Open_PR_with_metadata_by_number", "TestPrMerge_squash", "TestPRView_Preview_nontty/Open_PR_wth_empty_body_for_the_current_branch", "TestPRReview_nontty_insufficient_flags", "TestPRReview_interactive_blank_approve", "TestPRReview_number_arg", "TestPRView_Preview_nontty", "github.com/cli/cli/git", "TestPrMerge_rebase", "github.com/cli/cli/internal/config", "TestPrMerge_nontty_insufficient_flags", "TestPrMerge_deleteBranch", "TestPrMerge", "TestPRCreate_nontty", "TestPRView_Preview_nontty/Open_PR_without_metadata", "TestPRView_Preview_nontty/Open_PR_for_the_current_branch", "TestPRReview_nontty", "TestPRView_Preview_nontty/Open_PR_with_metadata_by_branch", "TestPRCreate_nontty_web", "TestPRReview_no_arg", "TestPRReview_url_arg", "TestPRView_Preview_nontty/Open_PR_with_reviewers_by_number", "TestPRMerge_interactive", "TestPRView_Preview_nontty/Closed_PR", "TestPrMerge_deleteNonCurrentBranch"], "skipped_tests": []}
{"passed_count": 413, "failed_count": 2, "skipped_count": 0, "passed_tests": ["TestIssueCreate_webTitleBody", "TestPRCreate_defaults_error_autofill", "TestConfigSet", "TestPrStateTitleWithColor/Format_MERGED_state", "Test_listURLWithQuery", "TestRepoClone/clone_arguments_with_directory", "TestRepoFork_outside_survey_no", "Test_determineTrackingBranch_noMatch", "TestRepoClone", "TestChangelogURL", "TestAliasSet_invalid_command", "Test_addQuery/append", "TestFindLegacy/Template_in_docs", "TestGistCreate_stdin", "Test_addQuery/append_query", "TestGistCreate", "TestGraphQL", "TestPRReview_validation", "TestPRStatus_blankSlate", "TestTruncate", "TestPRList_web", "Test_httpRequest/simple_GET", "Test_RepoMetadata", "Test_magicFieldValue", "TestCompletion_bash", "Test_repoFromURL/non-GitHub_hostname", "TestRepoCreate_org", "Test_apiRun_paginationREST", "Test_apiRun/failure", "TestPRView_Preview", "TestForOS", "TestIssueView_tty_Preview", "TestIssueStateTitleWithColor/Closed_state", "TestIssueClose", "Test_repoFromURL/filesystem_path", "TestPrClose", "TestIssueStatus", "TestPRView_Preview/Open_PR_with_metadata_by_branch", "TestPRCheckout_urlArg_differentBase", "TestConfigGetHost", "TestPRCheckout_sameRepo", "TestIssueList_nontty", "Test_CheckScopes/missing_read:org", "TestExtractContents/Has_front-matter", "TestFindNonLegacy/Template_folder_in_.github_takes_precedence", "Test_Remotes_FindByName", "TestPRReview_blank_request_changes", "TestRepoClone/HTTPS_URL", "TestCheckForUpdate/latest_is_current", "TestPRCheckout_branchArg", "TestIssueList_tty_withFlags", "TestAliasSet_existing_alias", "Test_findEndCursor/more_pageInfo_blocks", "TestPRDiff_no_current_pr", "Test_listHeader/multiple_results", "TestRepoFork_outside/full_name_arg", "TestAliasList_empty", "TestPRStatus_currentBranch_defaultBranch_repoFlag", "TestPRList_filteringRemoveDuplicate", "Test_NewCmdApi", "Test_groupGraphQLVariables", "TestRepoFork_already_forked", "Test_CheckScopes/no_scopes_in_response", "Test_openUserFile", "TestIssueStatus_disabledIssues", "TestPRView_Preview_nontty/Open_PR_with_metadata_by_number", "TestIssueList_withInvalidLimitFlag", "Test_fillPlaceholders", "TestGraphQLError", "Test_findNextPage/no_next_page_in_Link", "Test_listHeader/one_result_in_total_after_filters", "TestIssueCreate_nontty_error", "TestPRReview_blank_comment", "TestPRView_Preview_nontty", "Test_repoFromURL/github.com_git_URL", "TestExpandAlias", "Test_repoFromURL/github.com_SSH_URL", "TestFuzzyAgo", "TestRepoClone/shorthand", "TestIssueView_tty_Preview/Closed_issue", "TestPRView_Preview/Open_PR_for_the_current_branch", "Test_httpRequest/POST_with_params", "TestPRStatus_currentBranch_defaultBranch", "Test_groupGraphQLVariables/variables_only", "TestPRList", "TestPRView_Preview/Merged_PR", "Test_RepoResolveMetadataIDs", "TestIssueView_tty_Preview/Open_issue_with_metadata", "Test_listHeader/no_matches_after_filters", "Test_NewCmdApi/with_request_body_from_file", "Test_groupGraphQLVariables/query_+_variables", "Test_apiRun/show_response_headers", "TestPRCreate_defaults_error_web", "TestFindLegacy/No_extension", "TestRepoView_nonmarkdown_readme", "TestIssueClose_alreadyClosed", "Test_httpRequest/GET_with_params", "Test_listURLWithQuery/spaces_in_values", "TestPRReady_alreadyReady", "Test_magicFieldValue/null", "Test_findNextPage/no_Link_header", "TestFindLegacy", "TestPRCreate", "TestPRView_Preview_nontty/Open_PR_wth_empty_body_for_the_current_branch", "TestIssueView_tty_Preview/Open_issue_without_metadata", "Test_apiRun/silent", "TestParseExtraArgs/only_target", "TestAliasSet_empty_aliases", "Test_groupGraphQLVariables/query_only", "TestFindLegacy/Dash_instead_of_underscore", "Test_printError", "Test_listHeader/one_result", "TestForOS/macOS", "TestPRView_Preview_nontty/Open_PR_with_metadata_by_branch", "TestAliasSet_gh_command", "TestIssueView_web_notFound", "TestPRCreate_cross_repo_same_branch", "Test_NewCmdApi/POST_pagination", "TestIssueView_nontty_Preview/Closed_issue", "TestPRStatus_currentBranch_Merged", "TestIssueStatus_blankSlate", "TestPRView_Preview/Closed_PR", "TestCompletion_fish", "TestAliasSet_init_alias_cfg", "Test_resolvedRemotes_triangularSetup", "TestFindNonLegacy", "TestPRStatus_detachedHead", "TestPRView_web_numberArgWithHash", "TestCheckForUpdate", "TestPRCreate_survey_autofill", "TestPRReady", "TestTruncate/Japanese", "Test_addPerPage/avoids_adding_per_page_if_already_in_query", "TestIssueReopen_alreadyOpen", "Test_NewCmdApi/with_headers", "TestPRCreate_nontty_web", "TestIssueView_web", "Test_addQuery/nil", "TestConfigSetHost", "TestPRReady_closed", "TestAliasSet_existing_aliases", "TestExpandAlias_shell", "TestRepoFork_outside/url_arg", "TestPRCreate_alreadyExistsDifferentBase", "TestAliasSet_arg_processing", "TestPRCheckout_differentRepo_invalidBranchName", "TestPRList_filteringAssigneeLabels", "Test_findEndCursor/no_next_page", "TestDedent", "TestPRView_Preview/Draft_PR_by_branch", "TestPRList_withInvalidLimitFlag", "Test_determineTrackingBranch_hasMatch", "Test_resolvedRemotes_forkLookup", "TestPRView_Preview/Open_PR_without_metadata", "TestIssueList_web", "TestConfigSetHost_update", "TestWrite", "TestPRView_web_numberArg", "TestPRView_Preview/Open_PR_with_metadata_by_number", "TestPRDiff", "TestFindNonLegacy/Template_folder_in_docs", "TestPRCreate_metadata", "TestPRCheckout_differentRepo_existingBranch", "TestPRView_Preview_nontty/Draft_PR", "TestConfigGet_not_found", "TestRepoClone/clone_arguments", "TestRESTError", "Test_apiRun_inputFile/from_file", "TestPRCreate_nontty_insufficient_flags", "TestWrite/nested_object", "TestPRView_Preview/Draft_PR", "Test_findEndCursor", "TestCompletion_powerShell", "TestExtractName", "TestBranchDeleteRemote/success", "Test_fillPlaceholders/no_changes", "TestForOS/Windows", "Test_httpRequest", "Test_fillPlaceholders/no_greedy_substitutes", "TestPrMerge_alreadyMerged", "TestIssueView_nontty_Preview/Open_issue_with_empty_body", "TestRepoFork_in_parent_survey_yes", "Test_indent", "Test_NewCmdApi/with_fields", "TestRemoteURLFormatting_no_config", "TestPRStatus_currentBranch_Closed", "Test_listURLWithQuery/all", "TestIssueCreate_web", "TestPRView_web_branchArg", "TestIssueReopen_issuesDisabled", "TestPRReview_bad_body", "TestPRList_nontty", "TestPRStatus_currentBranch_Merged_defaultBranch", "TestPRReview_number_arg", "TestPRList_filteringAssignee", "Test_NewCmdApi/no_flags", "TestCheckForUpdate/latest_is_older", "TestFindLegacy/Template_in_root", "Test_apiRun_inputFile", "TestTruncate/Japanese_filled", "TestPrMerge", "TestPRStatus", "TestRepo_withoutUsername", "TestForOS/Linux", "TestPRReopen_alreadyMerged", "TestIssueList_nullAssigneeLabels", "TestCheckForUpdate/latest_is_newer", "TestIssueView_nontty_Preview/Open_issue_with_metadata", "TestIssueStateTitleWithColor/Open_state", "Test_apiRun_inputFile/stdin", "TestRepoClone/shorthand_with_directory", "Test_NewCmdApi/no_arguments", "Test_magicFieldValue/file", "TestPRView_web_currentBranch", "TestPrMerge_multipleMergeMethods", "TestIssueReopen", "TestBranchDeleteRemote", "Test_RepoCreate", "Test_addQuery/bool", "TestPRView_Preview/Open_PR_with_reviewers_by_number", "TestAliasList", "Test_addPerPage", "Test_addQuery", "Test_groupGraphQLVariables/empty", "TestPRCreate_survey_defaults_multicommit", "TestBranchDeleteRemote/error", "Test_listHeader", "Test_printError/Cobra_flag_error", "TestPRView_Preview_nontty/Open_PR_with_reviewers_by_number", "TestCompletion_zsh", "TestPrStateTitleWithColor/Format_OPEN_state_for_Draft_PR", "TestRepoCreate", "TestExtractContents", "TestPRList_filteringClosed", "Test_httpRequest/POST_with_body_and_type", "TestPRReview_interactive_blank_approve", "Test_indent/blank", "TestRepoCreate_orgWithTeam", "Test_repoFromURL/too_many_path_components", "Test_apiRun", "TestIssueView_disabledIssues", "TestRepoView_web_fullURL", "TestPRReview", "Test_httpRequest/POST_GraphQL", "TestFindNonLegacy/Template_folder_in_root", "TestPrMerge_deleteBranch", "Test_findNextPage", "TestRepoClone_hasParent", "TestPRList_filtering", "Test_resolvedRemotes_clonedFork", "TestRESTGetDelete", "Test_NewCmdApi/with_pagination", "TestConfigSet_update", "Test_repoFromURL/filesystem_path_with_scheme", "Test_CheckScopes", "TestFindNonLegacy/Legacy_templates_ignored", "TestPRCreate_alreadyExists", "TestCheckForUpdate/current_is_prerelease", "Test_apiRun/success_204", "Test_repoFromURL/github.com_URL", "Test_apiRun/REST_error", "TestPRReview_nontty_insufficient_flags", "TestTruncate/Korean_filled", "TestPRStatus_currentBranch_Closed_defaultBranch", "TestIssueView_tty_Preview/Open_issue_with_empty_body", "TestTruncate/Korean", "TestPRCreate_nontty", "TestPRView_Preview_nontty/Open_PR_for_the_current_branch", "TestShellAlias_flag", "TestRepoView", "TestPRReview_url_arg", "TestConfigGetHost_unset", "Test_listHeader/no_results", "Test_addQuery/string", "Test_NewCmdApi/input_pagination", "TestPRCheckout_differentRepo_remoteExists", "TestPRCreate_ReportsUncommittedChanges", "TestPRCreate_survey_autofill_nontty", "TestPRCheckout_urlArg", "TestParseExtraArgs/args_and_target", "TestExtractName/Complete_front-matter", "TestPrMerge_multipleMergeMethods_nontty", "Test_repoFromURL/github.com_HTTPS+SSH_URL", "TestPRCheckout_existingBranch", "TestIssueCreate_disabledIssues", "TestCompletion_unsupported", "TestIssueStateTitleWithColor", "TestPRCreate_survey_defaults_monocommit", "TestExtractContents/No_front-matter", "Test_magicFieldValue/file_error", "TestPRCheckout_differentRepo_currentBranch", "Test_listHeader/multiple_results_after_filters", "Test_apiRun/show_response_headers_even_when_silent", "TestPrStateTitleWithColor/Format_CLOSED_state", "Test_findNextPage/has_next_page", "TestPrMerge_rebase", "Test_parseFields", "TestRepoFork_outside", "TestPRStatus_currentBranch_showTheMostRecentPR", "TestRepoFork_in_parent_survey_no", "TestRepoClone/SSH_URL", "Test_repoFromURL", "Test_repoFromURL/www.github.com_URL", "TestWrite/blank", "TestPRStatus_fork", "TestPrMerge_deleteNonCurrentBranch", "Test_indent/empty", "TestPullRequest_ChecksStatus", "TestRepoFork_in_parent_yes", "TestExtractName/Incomplete_front-matter", "Test_addQuery/[]byte", "Test_addPerPage/adds_per_page", "TestReplaceExcessiveWhitespace", "TestConfigGet", "Test_addQuery/int", "Test_findEndCursor/unrelated_fields", "TestAliasDelete_nonexistent_command", "TestPRStatus_reviewsAndChecks", "Test_NewCmdApi/override_method", "Test_addPerPage/avoids_adding_per_page_if_already_in_params", "Test_listHeader/one_result_after_filters", "TestPRView_web_branchWithOwnerArg", "Test_determineTrackingBranch_respectTrackingConfig", "TestIssueClose_issuesDisabled", "TestShellAlias_bang", "Test_indent/indent", "TestAliasDelete", "Test_listURLWithQuery/blank", "TestParseExtraArgs", "TestExtractName/No_front-matter", "TestPRReview_nontty", "TestIssueView_web_numberArgWithHash", "TestFindLegacy/Template_in_.github_takes_precedence", "Test_determineTrackingBranch_empty", "TestPRCreate_defaults_error_interactive", "Test_NewCmdApi/GraphQL_pagination", "TestFindNonLegacy/Empty_template_directories", "TestRepoView_web_ownerRepo", "TestPRReopen", "TestRepoFork_outside_yes", "Test_ttyTablePrinter_truncate", "TestPrMerge_withRepoFlag", "Test_printError/DNS_error", "TestIssueView_nontty_Preview", "TestPRReview_interactive", "TestPrClose_alreadyClosed", "Test_printError/generic_error", "Test_fillPlaceholders/has_substitutes", "Test_CheckScopes/errored_response", "TestIssueList_disabledIssues", "TestRepoFork_reuseRemote", "Test_NewCmdApi/with_silenced_output", "Test_magicFieldValue/bool_true", "TestPRView_Preview/Open_PR_wth_empty_body_for_the_current_branch", "Test_CheckScopes/has_admin:org", "Test_listHeader/one_result_in_total", "TestRepoView_web", "TestPrMerge_nontty_insufficient_flags", "TestRemoteURLFormatting_ssh_config", "Test_magicFieldValue/placeholder", "TestPRCreate_web", "TestPrStateTitleWithColor", "TestIssueCreate_metadata", "TestPRCheckout_differentRepo", "TestPRMerge_interactive", "TestPRView_web_urlArg", "TestPRCreate_withForking", "TestPRDiff_validation", "TestConfigGet_default", "Test_apiRun/success", "TestIssueList_tty", "Test_findEndCursor/blank", "TestPrMerge_noPrNumberGiven", "TestPrMerge_nontty", "TestPrStateTitleWithColor/Format_OPEN_state", "TestIssueCreate", "TestFindLegacy/Non_legacy_templates_ignored", "TestIssueView_nontty_Preview/Open_issue_without_metadata", "Test_magicFieldValue/string", "TestWrite/error", "Test_apiRun/GraphQL_error", "TestFindNonLegacy/Multiple_templates_in_template_folder", "Test_magicFieldValue/bool_false", "TestIssueView_web_urlArg", "TestPRView_web_noResultsForBranch", "Test_CheckScopes/has_read:org", "TestTruncate/Chinese_filled", "TestPRView_Preview_nontty/Open_PR_without_metadata", "TestParseExtraArgs/only_args", "TestPRReview_no_arg", "TestPRReopen_alreadyOpen", "TestRepoView_blanks", "Test_translateRemotes", "TestAliasSet_space_args", "TestPRView_Preview_nontty/Draft_PR_by_branch", "TestPRView_Preview_nontty/Merged_PR", "TestParseExtraArgs/no_args", "Test_repoFromURL/github.com_URL_with_trailing_slash", "TestWrite/empty_object", "TestPrMerge_squash", "TestPRDiff_argument_not_found", "TestIssueList", "TestPRCheckout_maintainerCanModify", "Test_printError/unknown_Cobra_command_error", "TestExpandAlias_shell_extra_args", "TestWrite/string", "TestRepoFork_in_parent", "TestPRReview_interactive_no_body", "Test_findEndCursor/has_next_page", "TestPRView_Preview_nontty/Closed_PR", "TestTruncate/Chinese", "Test_apiRun_paginationGraphQL", "TestRepoFork_outside_survey_yes"], "failed_tests": ["github.com/cli/cli/git", "github.com/cli/cli/internal/config"], "skipped_tests": []}