Add VHS e2e tests and output recordings

Includes test tapes for navigation, branch operations, stash operations,
help panel, commits, and cursor navigation. Resolved stash conflicts by
keeping simpler test versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 11:01:11 -05:00
parent 99a3970f17
commit 2657545018
77 changed files with 22900 additions and 112 deletions
+996
View File
@@ -0,0 +1,996 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
Initialized empty Git repository in /tmp/lazygitclj-e2e-stash/.git/
[main (root-commit) 3647220] Initial commit
3 files changed, 3 insertions(+)
create mode 100644 README.md
create mode 100644 file1.txt
create mode 100644 file2.txt
Switched to a new branch 'feature-branch'
[feature-branch 4cb8019] Add feature
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Switched to branch 'main'
Test repo created at /tmp/lazygitclj-e2e-stash
Starting lazygitclj...
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
╔═ 2 Files (2) ═══╗
║ Staged: ║
║ M > ile1.txt ║
║ ║
║ Unstaged: ║
║ ?? new-file.txt ║
╚═════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (0 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (0) ╮
│ No stashes │
╰──────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╔═ 2 Files (1) ═════╗
║ ║
║ ║
║ Unstaged: ║
║ ?? > new-file.txt ║
╚═══════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (2 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╔═ 2 Files (1) ═════╗
║ ║
║ ║
║ Unstaged: ║
║ ?? > new-file.txt ║
╚═══════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (2 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (2 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (2 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Applied stash@{0}
╭─ 2 Files (2) ───╮
│ Staged: │
│ M ile1.txt │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (4 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Applied stash@{0}
╭─ 2 Files (2) ───╮
│ Staged: │
│ M ile1.txt │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (4 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Popped stash@{0}
╭─ 2 Files (2) ───╮
│ Staged: │
│ M ile1.txt │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (5 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Popped stash@{0}
╭─ 2 Files (2) ───╮
│ Staged: │
│ M ile1.txt │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (5 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Popped stash@{0}
╔═ 2 Files (2) ═══╗
║ Staged: ║
║ M > ile1.txt ║
║ ║
║ Unstaged: ║
║ ?? new-file.txt ║
╚═════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (5 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Popped stash@{0}
╔═ 2 Files (2) ═══╗
║ Staged: ║
║ M > ile1.txt ║
║ ║
║ Unstaged: ║
║ ?? new-file.txt ║
╚═════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (5 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
╔═ 2 Files (2) ═══╗
║ Staged: ║
║ M > ile1.txt ║
║ ║
║ Unstaged: ║
║ ?? new-file.txt ║
╚═════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (6 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
╔═ 2 Files (2) ═══╗
║ Staged: ║
║ M > ile1.txt ║
║ ║
║ Unstaged: ║
║ ?? new-file.txt ║
╚═════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (6 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (1) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╔═ 2 Files (1) ═════╗
║ ║
║ ║
║ Unstaged: ║
║ ?? > new-file.txt ║
╚═══════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (7 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (2) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
│ stash@{1} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╔═ 2 Files (1) ═════╗
║ ║
║ ║
║ Unstaged: ║
║ ?? > new-file.txt ║
╚═══════════════════╝
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (7 seconds ago) │
╰────────────────────────────────────────╯
╭─ 5 Stash (2) ───────────────────────────╮
│ stash@{0} 3647220 Initial commit (main) │
│ stash@{1} 3647220 Initial commit (main) │
╰─────────────────────────────────────────╯
q:quit ?:help h/l:switch space:stage/unstage a:all c:commit s:stash p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (7 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (2) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
║ stash@{1} 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Stashed all changes
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (7 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (2) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
║ stash@{1} 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Dropped stash@{0}
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (8 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
lazygitclj main (3647220)
Dropped stash@{0}
╭─ 2 Files (1) ───╮
│ │
│ │
│ Unstaged: │
│ ?? new-file.txt │
╰─────────────────╯
╭─ 3 Local (2) ────╮
│ feature-branch │
│ * main │
╰──────────────────╯
╭─ 4 Commits (1) ────────────────────────╮
│ 3647220 Initial commit (8 seconds ago) │
╰────────────────────────────────────────╯
╔═ 5 Stash (1) ═════════════════════════════╗
║ stash@{0} > 3647220 Initial commit (main) ║
╚═══════════════════════════════════════════╝
q:quit ?:help h/l:switch space:apply g:pop d:drop p:pull P:push
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
Initialized empty Git repository in /tmp/lazygitclj-e2e-stash/.git/
[main (root-commit) 3647220] Initial commit
3 files changed, 3 insertions(+)
create mode 100644 README.md
create mode 100644 file1.txt
create mode 100644 file2.txt
Switched to a new branch 'feature-branch'
[feature-branch 4cb8019] Add feature
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Switched to branch 'main'
Test repo created at /tmp/lazygitclj-e2e-stash
Starting lazygitclj...
Goodbye!
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
Initialized empty Git repository in /tmp/lazygitclj-e2e-stash/.git/
[main (root-commit) 3647220] Initial commit
3 files changed, 3 insertions(+)
create mode 100644 README.md
create mode 100644 file1.txt
create mode 100644 file2.txt
Switched to a new branch 'feature-branch'
[feature-branch 4cb8019] Add feature
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Switched to branch 'main'
Test repo created at /tmp/lazygitclj-e2e-stash
Starting lazygitclj...
Goodbye!
>
────────────────────────────────────────────────────────────────────────────────