From 64b55db39fd17c723e492c65335de34812af6488 Mon Sep 17 00:00:00 2001 From: Neil Dcruze Date: Fri, 27 Feb 2026 11:25:33 -0500 Subject: [PATCH] Add --query flag to kernel browsers list And related test --- cmd/browsers.go | 7 +++++++ cmd/browsers_test.go | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/cmd/browsers.go b/cmd/browsers.go index 4d041ab..6cc7b8d 100644 --- a/cmd/browsers.go +++ b/cmd/browsers.go @@ -228,6 +228,7 @@ type BrowsersListInput struct { Status string Limit int Offset int + Query string } func (b BrowsersCmd) List(ctx context.Context, in BrowsersListInput) error { @@ -257,6 +258,9 @@ func (b BrowsersCmd) List(ctx context.Context, in BrowsersListInput) error { if in.Offset > 0 { params.Offset = kernel.Opt(int64(in.Offset)) } + if in.Query != "" { + params.Query = kernel.Opt(in.Query) + } page, err := b.browsers.List(ctx, params) if err != nil { @@ -2139,6 +2143,7 @@ func init() { browsersListCmd.Flags().String("status", "", "Filter by status: 'active' (default), 'deleted', or 'all'") browsersListCmd.Flags().Int("limit", 0, "Maximum number of results to return (default 20, max 100)") browsersListCmd.Flags().Int("offset", 0, "Number of results to skip (for pagination)") + browsersListCmd.Flags().String("query", "", "Search browsers by session ID, profile ID, or proxy ID") // get flags browsersGetCmd.Flags().StringP("output", "o", "", "Output format: json for raw API response") @@ -2418,12 +2423,14 @@ func runBrowsersList(cmd *cobra.Command, args []string) error { status, _ := cmd.Flags().GetString("status") limit, _ := cmd.Flags().GetInt("limit") offset, _ := cmd.Flags().GetInt("offset") + query, _ := cmd.Flags().GetString("query") return b.List(cmd.Context(), BrowsersListInput{ Output: out, IncludeDeleted: includeDeleted, Status: status, Limit: limit, Offset: offset, + Query: query, }) } diff --git a/cmd/browsers_test.go b/cmd/browsers_test.go index 0a1b13a..1099caf 100644 --- a/cmd/browsers_test.go +++ b/cmd/browsers_test.go @@ -193,6 +193,26 @@ func TestBrowsersList_PrintsErrorOnFailure(t *testing.T) { assert.Contains(t, err.Error(), "list failed") } +func TestBrowsersList_WithQuery_PassesParam(t *testing.T) { + setupStdoutCapture(t) + + var captured kernel.BrowserListParams + fake := &FakeBrowsersService{ + ListFunc: func(ctx context.Context, query kernel.BrowserListParams, opts ...option.RequestOption) (*pagination.OffsetPagination[kernel.BrowserListResponse], error) { + captured = query + return &pagination.OffsetPagination[kernel.BrowserListResponse]{Items: []kernel.BrowserListResponse{ + {SessionID: "sess-matched"}, + }}, nil + }, + } + b := BrowsersCmd{browsers: fake} + err := b.List(context.Background(), BrowsersListInput{Query: "sess-matched"}) + + assert.NoError(t, err) + assert.True(t, captured.Query.Valid()) + assert.Equal(t, "sess-matched", captured.Query.Value) +} + func TestBrowsersCreate_PrintsResponse(t *testing.T) { setupStdoutCapture(t)