






















@@ -568,29 +568,59 @@ describe("cron view", () => {
568568container,
569569);
570570571-expect(container.textContent).toContain("Advanced");
572-expect(container.textContent).toContain("Exact timing (no stagger)");
573-expect(container.textContent).toContain("Stagger window");
574-expect(container.textContent).toContain("Light context");
575-expect(container.textContent).toContain("Model");
576-expect(container.textContent).toContain("Thinking");
577-expect(container.textContent).toContain("Best effort delivery");
578-579-const staggerGroup = container.querySelector(".cron-stagger-group");
580-expect(staggerGroup?.textContent).toContain("Stagger window");
581-expect(staggerGroup?.textContent).toContain("Stagger unit");
582-expect(container.textContent).toContain(
583-"Optional. Leave blank to use the gateway default timeout behavior for this run.",
571+expect(
572+Array.from(container.querySelectorAll(".cron-summary-label")).map((label) =>
573+label.textContent?.trim(),
574+),
575+).toEqual(["Enabled", "Jobs", "Next wake"]);
576+expect(
577+Array.from(container.querySelectorAll(".cron-form-section__title")).map((label) =>
578+label.textContent?.trim(),
579+),
580+).toEqual(["Basics", "Schedule", "Execution", "Delivery"]);
581+582+const advanced = getElement(container, ".cron-advanced", HTMLElement);
583+expect(advanced.querySelector(".cron-advanced__summary")?.textContent?.trim()).toBe("Advanced");
584+expect(advanced.querySelector(".cron-help")?.textContent?.trim()).toBe(
585+"Optional overrides for delivery guarantees, schedule jitter, and model controls.",
584586);
585-expect(container.textContent).toContain("Need jitter? Use Advanced");
587+expect(
588+Array.from(advanced.querySelectorAll(".field-checkbox__label")).map((label) =>
589+label.textContent?.trim(),
590+),
591+).toEqual([
592+"Delete after run",
593+"Clear agent override",
594+"Exact timing (no stagger)",
595+"Light context",
596+"Best effort delivery",
597+]);
586598587-expect(container.textContent).toContain("Enabled");
588-expect(container.textContent).toContain("Jobs");
589-expect(container.textContent).toContain("Next wake");
590-expect(container.textContent).toContain("Basics");
591-expect(container.textContent).toContain("Schedule");
592-expect(container.textContent).toContain("Execution");
593-expect(container.textContent).toContain("Delivery");
599+const staggerGroup = getElement(container, ".cron-stagger-group", HTMLElement);
600+expect(
601+Array.from(staggerGroup.querySelectorAll(".field > span")).map((label) =>
602+label.textContent?.trim(),
603+),
604+).toEqual(["Stagger window", "Stagger unit"]);
605+const timeoutInput = getElement(container, "#cron-timeout-seconds", HTMLInputElement);
606+expect(timeoutInput.closest("label")?.querySelector(".cron-help")?.textContent?.trim()).toBe(
607+"Optional. Leave blank to use the gateway default timeout behavior for this run.",
608+);
609+const scheduleSection = Array.from(container.querySelectorAll(".cron-form-section")).find(
610+(section) =>
611+section.querySelector(".cron-form-section__title")?.textContent?.trim() === "Schedule",
612+);
613+expect(scheduleSection?.querySelector(".cron-help.cron-span-2")?.textContent?.trim()).toBe(
614+"Need jitter? Use Advanced \u2192 Stagger window / Stagger unit.",
615+);
616+expect(
617+["#cron-payload-model", "#cron-payload-thinking"].map((selector) =>
618+getElement(container, selector, HTMLInputElement)
619+.closest("label")
620+?.querySelector("span")
621+?.textContent?.trim(),
622+),
623+).toEqual(["Model", "Thinking"]);
594624595625const checkboxLabel = getElement(container, ".cron-checkbox", HTMLLabelElement);
596626const firstElement = checkboxLabel.firstElementChild;
@@ -625,10 +655,15 @@ describe("cron view", () => {
625655),
626656container,
627657);
628-expect(container.textContent).not.toContain("Exact timing (no stagger)");
629-expect(container.textContent).not.toContain("Stagger window");
630-expect(container.textContent).not.toContain("Model");
631-expect(container.textContent).not.toContain("Best effort delivery");
658+const everyAdvanced = getElement(container, ".cron-advanced", HTMLElement);
659+expect(everyAdvanced.querySelector("#cron-stagger-amount")).toBeNull();
660+expect(everyAdvanced.querySelector("#cron-payload-model")).toBeNull();
661+expect(everyAdvanced.querySelector("#cron-payload-thinking")).toBeNull();
662+expect(
663+Array.from(everyAdvanced.querySelectorAll(".field-checkbox__label")).map((label) =>
664+label.textContent?.trim(),
665+),
666+).not.toContain("Best effort delivery");
632667});
633668634669it("renders inline validation errors, disabled submit, and required aria bindings", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。