




























@@ -652,14 +652,38 @@ describe("cron view", () => {
652652container,
653653);
654654655-expect(container.textContent).toContain("Name is required.");
656-expect(container.textContent).toContain("Cron expression is required.");
657-expect(container.textContent).toContain("Agent message is required.");
658-expect(container.textContent).toContain("Can't add job yet");
659-expect(container.textContent).toContain("Fix 3 fields to continue.");
655+expect(container.querySelector("#cron-error-name")?.textContent?.trim()).toBe(
656+"Name is required.",
657+);
658+expect(container.querySelector("#cron-error-cronExpr")?.textContent?.trim()).toBe(
659+"Cron expression is required.",
660+);
661+expect(container.querySelector("#cron-error-payloadText")?.textContent?.trim()).toBe(
662+"Agent message is required.",
663+);
664+665+const validationStatus = getElement(container, ".cron-form-status", HTMLElement);
666+expect(validationStatus.querySelector(".cron-form-status__title")?.textContent?.trim()).toBe(
667+"Can't add job yet",
668+);
669+expect(validationStatus.querySelector(".cron-help")?.textContent?.trim()).toBe(
670+"Fill the required fields below to enable submit.",
671+);
672+expect(
673+Array.from(validationStatus.querySelectorAll(".cron-form-status__link")).map((button) =>
674+button.textContent?.trim(),
675+),
676+).toEqual([
677+"Name: Name is required.",
678+"Expression: Cron expression is required.",
679+"Assistant task prompt: Agent message is required.",
680+]);
660681661682const saveButton = getButtonByAnyText(container, ["Add job", "Save changes"]);
662683expect(saveButton.disabled).toBe(true);
684+expect(container.querySelector(".cron-submit-reason")?.textContent?.trim()).toBe(
685+"Fix 3 fields to continue.",
686+);
663687664688render(
665689renderCron(
@@ -682,17 +706,21 @@ describe("cron view", () => {
682706container,
683707);
684708685-expect(container.textContent).toContain("* Required");
709+expect(container.querySelector(".cron-required-legend")?.textContent?.trim()).toBe(
710+"* Required",
711+);
686712687713const nameInput = container.querySelector("#cron-name");
688714expect(nameInput?.getAttribute("aria-invalid")).toBe("true");
689715expect(nameInput?.getAttribute("aria-describedby")).toBe("cron-error-name");
690-expect(container.querySelector("#cron-error-name")?.textContent).toContain("Name is required.");
716+expect(container.querySelector("#cron-error-name")?.textContent?.trim()).toBe(
717+"Name is required.",
718+);
691719692720const everyInput = container.querySelector("#cron-every-amount");
693721expect(everyInput?.getAttribute("aria-invalid")).toBe("true");
694722expect(everyInput?.getAttribute("aria-describedby")).toBe("cron-error-everyAmount");
695-expect(container.querySelector("#cron-error-everyAmount")?.textContent).toContain(
723+expect(container.querySelector("#cron-error-everyAmount")?.textContent?.trim()).toBe(
696724"Interval must be greater than 0.",
697725);
698726});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。