diff --git a/ui/src/components/select-picker.test.ts b/ui/src/components/select-picker.test.ts
new file mode 100644
index 000000000000..5cf016f39a86
--- /dev/null
+++ b/ui/src/components/select-picker.test.ts
@@ -0,0 +1,23 @@
+// The shared picker keeps a 138px readable-label floor (phone-width ellipsis
+// fix) but must never exceed its host container: cron/channel grid cells
+// legitimately shrink below 138px and an unconditional floor overflows them.
+import { render } from "lit";
+import { describe, expect, it } from "vitest";
+import { renderPicker } from "./select-picker.ts";
+
+describe("renderPicker", () => {
+ it("caps the readable-label floor at the host container width", () => {
+ const host = document.createElement("div");
+ render(
+ renderPicker({
+ label: "Unit",
+ value: "minutes",
+ options: [{ value: "minutes", label: "minutes" }],
+ onChange: () => {},
+ }),
+ host,
+ );
+ const select = host.querySelector("wa-select");
+ expect(select?.getAttribute("style")).toContain("min-width:min(138px,100%)");
+ });
+});
diff --git a/ui/src/components/select-picker.ts b/ui/src/components/select-picker.ts
index 2f28a17dc53d..19766a803e02 100644
--- a/ui/src/components/select-picker.ts
+++ b/ui/src/components/select-picker.ts
@@ -24,8 +24,9 @@ export type PickerParams