feat(ui): sidebar kontainer + panel detail (ListContainers, navigasi j/k, klik pilih, refresh r)
CI / test (push) Successful in 21s
CI / test (push) Successful in 21s
This commit is contained in:
1 parent
18055979da
commit
fe781591e3
4 files changed
+336
-42
No files matched your search
+34
-4
@@ -8,6 +8,7 @@
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
@@ -18,6 +19,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/creack/pty"
|
||||
|
||||
"gitea.oxpoe.qzz.io/oxpoe/tia-love/internal/docker"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -210,12 +213,39 @@ func TestDoctorCommand(t *testing.T) {
|
||||
|
||||
func TestMouseAndNavigateKeys(t *testing.T) {
|
||||
u := startTUI(t)
|
||||
u.waitContains("belum ada klik", 5*time.Second)
|
||||
// klik kiri di tengah layar (SGR 1006: ESC [ < 0 ; x ; y M)
|
||||
u.send("\x1b[<0;60;10M\x1b[<0;60;10m")
|
||||
u.waitContains("klik #1", 3*time.Second)
|
||||
u.waitContains("Kontainer", 5*time.Second)
|
||||
u.send("j")
|
||||
u.send("k")
|
||||
u.send("\x1b[<0;10;3M\x1b[<0;10;3m") // klik kiri di area sidebar
|
||||
u.send("r") // muat ulang
|
||||
u.send("q")
|
||||
if code := u.waitExit(5 * time.Second); code != 0 {
|
||||
t.Fatalf("exit code %d, mau 0", code)
|
||||
}
|
||||
}
|
||||
|
||||
// TestClickSelectsContainer — lokal/CI-with-docker saja: klik baris sidebar
|
||||
// harus memindahkan penanda pilihan (▶) ke kontainer.
|
||||
func TestClickSelectsContainer(t *testing.T) {
|
||||
if _, err := os.Stat("/var/run/docker.sock"); err != nil {
|
||||
t.Skip("docker socket tidak ada")
|
||||
}
|
||||
cl, err := docker.New()
|
||||
if err != nil {
|
||||
t.Skipf("docker: %v", err)
|
||||
}
|
||||
defer cl.Close()
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
items, err := cl.ListContainers(ctx)
|
||||
if err != nil || len(items) == 0 {
|
||||
t.Skipf("tidak ada kontainer (err=%v, n=%d)", err, len(items))
|
||||
}
|
||||
|
||||
u := startTUI(t)
|
||||
u.waitContains("Kontainer (", 5*time.Second)
|
||||
u.send("\x1b[<0;10;4M\x1b[<0;10;4m") // klik baris item pertama sidebar
|
||||
u.waitContains("▶", 3*time.Second)
|
||||
u.send("q")
|
||||
if code := u.waitExit(5 * time.Second); code != 0 {
|
||||
t.Fatalf("exit code %d, mau 0", code)
|
||||
|
||||
Reference in new issue
Block a user