diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 981f705e2..4060f1368 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -231,5 +231,6 @@ var tests = []*components.IntegrationTest{ worktree.ForceRemoveWorktree, worktree.Rebase, worktree.RemoveWorktreeFromBranch, + worktree.RetainedWindowFocus, worktree.WorktreeInRepo, } diff --git a/pkg/integration/tests/worktree/retained_window_focus.go b/pkg/integration/tests/worktree/retained_window_focus.go new file mode 100644 index 000000000..d518d6d1a --- /dev/null +++ b/pkg/integration/tests/worktree/retained_window_focus.go @@ -0,0 +1,45 @@ +package worktree + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var RetainedWindowFocus = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Verify that the focused context in each window is retained when switching worktrees", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.NewBranch("mybranch") + shell.CreateFileAndAdd("README.md", "hello world") + shell.Commit("initial commit") + shell.EmptyCommit("commit 2") + shell.EmptyCommit("commit 3") + shell.AddWorktree("mybranch", "../linked-worktree", "newbranch") + shell.AddFileInWorktree("../linked-worktree") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + // focus the remotes tab i.e. the second tab in the branches window + t.Views().Remotes(). + Focus() + + t.Views().Worktrees(). + Focus(). + Lines( + Contains("repo (main)").IsSelected(), + Contains("linked-worktree"), + ). + NavigateToLine(Contains("linked-worktree")). + Press(keys.Universal.Select). + Lines( + Contains("linked-worktree").IsSelected(), + Contains("repo (main)"), + ). + // navigate back to the branches window + Press(keys.Universal.NextBlock) + + t.Views().Remotes(). + IsFocused() + }, +})