惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Engineering at Meta
Engineering at Meta
腾讯CDC
宝玉的分享
宝玉的分享
H
Help Net Security
I
InfoQ
博客园 - Franky
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
博客园_首页
美团技术团队
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
The Cloudflare Blog
博客园 - 司徒正美
Vercel News
Vercel News
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
月光博客
月光博客

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
test: outline cron advanced controls · openclaw/openclaw@...
shakkernerd · 2026-05-12 · via Recent Commits to openclaw:main

@@ -568,29 +568,59 @@ describe("cron view", () => {

568568

container,

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"]);

594624595625

const checkboxLabel = getElement(container, ".cron-checkbox", HTMLLabelElement);

596626

const firstElement = checkboxLabel.firstElementChild;

@@ -625,10 +655,15 @@ describe("cron view", () => {

625655

),

626656

container,

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

});

633668634669

it("renders inline validation errors, disabled submit, and required aria bindings", () => {