68f536bf4c
539 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| e09425ba81 |
test(canvas/chat): add AttachmentViews coverage (16 cases)
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 11s
Harness Replays / detect-changes (pull_request) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 12s
E2E API Smoke Test / detect-changes (pull_request) Successful in 22s
CI / Detect changes (pull_request) Successful in 23s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 24s
qa-review / approved (pull_request) Failing after 13s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 22s
gate-check-v3 / gate-check (pull_request) Failing after 22s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 24s
sop-tier-check / tier-check (pull_request) Successful in 16s
Harness Replays / Harness Replays (pull_request) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
CI / Platform (Go) (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 5s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 8s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 7s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m36s
CI / Canvas (Next.js) (pull_request) Successful in 10m14s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Successful in 3s
PendingAttachmentPill: renders name, formatted size (B/KB/MB), aria-label, exactly one button, calls onRemove on click. AttachmentChip: renders name and download glyph, renders size when provided, omits size span when size is undefined, title attribute for tooltip, calls onDownload(attachment) on click, tone=user applies blue-400 class, tone=agent omits blue-400 class, exactly one button. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 5b2298e56f |
test(canvas/ui): add StatusBadge coverage (11 cases)
Some checks failed
publish-runtime-autobump / bump-and-tag (pull_request) Has been skipped
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 15s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
Harness Replays / detect-changes (pull_request) Successful in 19s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 17s
CI / Detect changes (pull_request) Successful in 41s
qa-review / approved (pull_request) Failing after 14s
security-review / approved (pull_request) Failing after 15s
E2E API Smoke Test / detect-changes (pull_request) Successful in 41s
gate-check-v3 / gate-check (pull_request) Successful in 20s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 43s
Harness Replays / Harness Replays (pull_request) Successful in 7s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 46s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 38s
sop-tier-check / tier-check (pull_request) Successful in 13s
publish-runtime-autobump / pr-validate (pull_request) Successful in 47s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 10s
CI / Platform (Go) (pull_request) Successful in 9s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 7s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 1m57s
CI / Python Lint & Test (pull_request) Successful in 7m17s
CI / Canvas (Next.js) (pull_request) Successful in 9m18s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 10m20s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Successful in 10s
Covers StatusBadge — secret key connection status indicator: - ✓ / ✗ / ○ icon per status - aria-label per status - className per status (--valid, --invalid, --unverified) - role="status" set correctly - Exactly one status element rendered 🤖 Generated with [Claude Code](https://claude.com/claude-code) |
|||
| 6916ae32c3 |
test(canvas/mobile): add palette-context coverage (9 cases)
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 20s
CI / Detect changes (pull_request) Successful in 43s
E2E API Smoke Test / detect-changes (pull_request) Successful in 36s
Harness Replays / detect-changes (pull_request) Successful in 11s
publish-runtime-autobump / bump-and-tag (pull_request) Has been skipped
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 37s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 34s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
qa-review / approved (pull_request) Failing after 15s
gate-check-v3 / gate-check (pull_request) Successful in 24s
security-review / approved (pull_request) Failing after 17s
sop-tier-check / tier-check (pull_request) Successful in 19s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 40s
publish-runtime-autobump / pr-validate (pull_request) Successful in 56s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 8s
Harness Replays / Harness Replays (pull_request) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 3m7s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Failing after 5m48s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6m51s
CI / Python Lint & Test (pull_request) Successful in 8m5s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 9m3s
CI / Platform (Go) (pull_request) Failing after 15m15s
CI / Canvas (Next.js) (pull_request) Successful in 15m39s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 6s
audit-force-merge / audit (pull_request) Has been skipped
Covers MobileAccentProvider + usePalette hook: - Renders children - usePalette(dark=false) → MOL_LIGHT - usePalette(dark=true) → MOL_DARK - accent=null returns base palette unchanged - accent=base.accent returns base palette unchanged (identity guard) - accent=#custom → accent + online overridden - MOL_LIGHT/MOL_DARK singletons never mutated The pure functions (getPalette, normalizeStatus, tierCode) are already covered by palette.test.ts — only the React context/hook is new here. 🤖 Generated with [Claude Code](https://claude.com/claude-code) |
|||
| 0c5eec5081 |
test(canvas): add EmptyState component tests (22 cases)
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 8s
Harness Replays / detect-changes (pull_request) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 13s
qa-review / approved (pull_request) Failing after 12s
security-review / approved (pull_request) Failing after 13s
Harness Replays / Harness Replays (pull_request) Successful in 4s
sop-tier-check / tier-check (pull_request) Successful in 11s
gate-check-v3 / gate-check (pull_request) Failing after 17s
E2E API Smoke Test / detect-changes (pull_request) Successful in 23s
CI / Detect changes (pull_request) Successful in 23s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 23s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 22s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 21s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 3s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 2s
CI / Platform (Go) (pull_request) Successful in 2s
CI / Python Lint & Test (pull_request) Successful in 2s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 2s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 3s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m28s
CI / Canvas (Next.js) (pull_request) Successful in 12m6s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Successful in 6s
audit-force-merge / audit (pull_request) Has been skipped
Adds 22-case coverage for EmptyState — the full-canvas welcome card:
- Loading state (GET /templates pending)
- Template grid renders with correct name, tier badge, description, skill count, model
- Template button calls deploy on click
- "Deploying..." label on the deploying template button
- Buttons disabled while any deploy is in-flight
- "Create blank" button POSTs /workspaces with correct payload
- "Creating..." label while POST is pending
- selectNode + setPanelTab("chat") called after 500ms on success
- Error banner with role=alert on POST failure
- Fetch failure / empty templates → only "create blank" button shown
Uses vi.hoisted + vi.mock to fully isolate api.get, api.post, useTemplateDeploy,
useCanvasStore, and all child components.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
|||
| fe21795dcc |
test(canvas): add TracesTab tests (36 cases)
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 16s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 21s
sop-tier-check / tier-check (pull_request) Successful in 21s
Harness Replays / detect-changes (pull_request) Successful in 26s
CI / Detect changes (pull_request) Successful in 47s
Harness Replays / Harness Replays (pull_request) Successful in 5s
E2E API Smoke Test / detect-changes (pull_request) Successful in 44s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 39s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 40s
CI / Platform (Go) (pull_request) Successful in 7s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 44s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
CI / Python Lint & Test (pull_request) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 5s
audit-force-merge / audit (pull_request) Successful in 8s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m20s
CI / Canvas (Next.js) (pull_request) Failing after 7m56s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Cover loading/error/empty states, trace list rendering, expand/collapse with aria-expanded/aria-controls, status dot colors (bg-bad/bg-good), latency formatting (ms vs seconds), token count, cost display, input/output rendering (object and string), refresh, and formatTime relative timestamps. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 369360bc99 |
test(canvas): add ScheduleTab tests (49 cases)
Add 49 test cases covering schedule list, status dot colors, toggle/edit/delete/run-now, create/edit forms, form validation, auto-refresh (10s interval), cronToHuman/relativeTime formatting, and error states. Also fix ScheduleTab: (1) set error state on GET failure so the banner is visible, (2) move error banner outside the form block so non-form errors are shown to the user. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 8c61a1acba |
test(canvas): add ChannelsTab tests (40 cases)
Cover channel list, toggle, delete, discover, form validation, schema-driven inputs (password/textarea/text), platform switching, allowed_users, auto-refresh, and error states. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 1f895ced2b |
test(canvas): add EventsTab tests (18 cases)
Covers: loading/empty/event-list states, event_type color mapping, expand/collapse with aria-expanded/aria-controls, refresh button, error state from API rejection, auto-refresh interval via setInterval mock, and unmount cleanup. Key patterns: - vi.hoisted() for module-level api mock (vi.mock hoisting) - vi.useRealTimers() for non-timing tests; spyOn(setInterval/clearInterval) for auto-refresh tests to avoid Vitest fake-timer infinite loops - fireEvent.click + native .click() via act() for expand/collapse - Re-query DOM after state flush to avoid stale element references Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| dbc11023b7 |
test(ExternalConnectModal): 18 cases — modal render, tabs, token stamping, copy
Adds first test coverage for canvas/ExternalConnectModal. Tests: renders null
when info absent, dialog open/close, default tab selection (Universal MCP vs
Python), tab switching and visibility (Hermes/Codex conditional), auth token
stamping for Python/MCP/curl snippets, clipboard.writeText API call,
close button callback, security warning, Fields tab with (missing) fallback.
Radix Dialog tested by rendering with open=true. Clipboard API mocked via
Object.defineProperty in beforeEach. renderAndFlush uses act(()=>{}) to
synchronously flush Radix portal rendering so dialog queries work without
waitFor (which times out under vi.useFakeTimers).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
|||
| a5d4bea96b |
test(canvas): add MemoryTab tests (36 cases) (#493)
Some checks failed
Block internal-flavored paths / Block forbidden paths (push) Successful in 7s
Harness Replays / detect-changes (push) Successful in 10s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 8s
publish-workspace-server-image / build-and-push (push) Failing after 10s
E2E API Smoke Test / detect-changes (push) Successful in 18s
Harness Replays / Harness Replays (push) Successful in 4s
CI / Detect changes (push) Successful in 19s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 18s
Handlers Postgres Integration / detect-changes (push) Successful in 19s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 18s
CI / Platform (Go) (push) Successful in 3s
CI / Shellcheck (E2E scripts) (push) Successful in 3s
CI / Python Lint & Test (push) Successful in 4s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 5s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 4s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 4s
publish-canvas-image / Build & push canvas image (push) Failing after 26s
main-red-watchdog / watchdog (push) Successful in 35s
CI / Canvas (Next.js) (push) Failing after 3m40s
CI / Canvas Deploy Reminder (push) Has been skipped
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
Co-authored-by: hongming-pc2 <hongming-pc2@moleculesai.app> Co-committed-by: hongming-pc2 <hongming-pc2@moleculesai.app> |
|||
| f99b0fdf94 |
test(OrgCancelButton): 17 test cases for cancel-deployment pill (#485)
Some checks failed
Handlers Postgres Integration / detect-changes (push) Successful in 33s
Block internal-flavored paths / Block forbidden paths (push) Successful in 14s
CI / Detect changes (push) Successful in 35s
E2E API Smoke Test / detect-changes (push) Successful in 34s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 32s
Harness Replays / detect-changes (push) Successful in 14s
publish-workspace-server-image / build-and-push (push) Failing after 15s
publish-canvas-image / Build & push canvas image (push) Failing after 36s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 9s
CI / Platform (Go) (push) Successful in 5s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 25s
CI / Shellcheck (E2E scripts) (push) Successful in 4s
CI / Python Lint & Test (push) Successful in 5s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 8s
Harness Replays / Harness Replays (push) Successful in 6s
Sweep stale Cloudflare Tunnels / Sweep CF tunnels (push) Failing after 13s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 6s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 6s
CI / Canvas (Next.js) (push) Successful in 7m55s
CI / Canvas Deploy Reminder (push) Successful in 1s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 7m48s
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 2s
Staging SaaS smoke (every 30 min) / Staging SaaS smoke (push) Failing after 4m52s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 5m5s
Co-authored-by: hongming-pc2 <hongming-pc2@moleculesai.app> Co-committed-by: hongming-pc2 <hongming-pc2@moleculesai.app> |
|||
| 9ca86bee85 |
fix(canvas/test): consistent fake-timer state — fix ApprovalBanner test flakiness (#479)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 11s
Harness Replays / detect-changes (push) Successful in 15s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 10s
Harness Replays / Harness Replays (push) Successful in 5s
publish-canvas-image / Build & push canvas image (push) Failing after 39s
CI / Detect changes (push) Successful in 52s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 50s
Handlers Postgres Integration / detect-changes (push) Successful in 53s
E2E API Smoke Test / detect-changes (push) Successful in 55s
CI / Platform (Go) (push) Successful in 7s
CI / Shellcheck (E2E scripts) (push) Successful in 6s
CI / Python Lint & Test (push) Successful in 6s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 58s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 10s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 7s
main-red-watchdog / watchdog (push) Successful in 1m29s
CI / Canvas (Next.js) (push) Has been cancelled
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
publish-workspace-server-image / build-and-push (push) Successful in 5m37s
Co-authored-by: Molecule AI App-FE <app-fe@agents.moleculesai.app> Co-committed-by: Molecule AI App-FE <app-fe@agents.moleculesai.app> |
|||
| d7e163d2a8 |
Merge branch 'main' into fix/canvas-purchase-success-modal-test-timing
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 4s
Harness Replays / detect-changes (pull_request) Successful in 7s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Successful in 9s
CI / Detect changes (pull_request) Successful in 13s
E2E API Smoke Test / detect-changes (pull_request) Successful in 14s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 15s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 15s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 15s
CI / Platform (Go) (pull_request) Successful in 3s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 4s
CI / Python Lint & Test (pull_request) Successful in 4s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 6s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 5s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 4s
Harness Replays / Harness Replays (pull_request) Bypass — harness failure on rebase is environmental (detect-changes passed, harness ran but failed; harness passes on main. SOP tier:low allows bypass per internal#308 §2.)
audit-force-merge / audit (pull_request) Successful in 6s
CI / Canvas (Next.js) (pull_request) Failing after 4m48s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8m31s
|
|||
| 05e6443e2c |
test(canvas): add WorkspaceNode component test coverage (51 cases) (#480)
Some checks failed
Block internal-flavored paths / Block forbidden paths (push) Successful in 10s
Harness Replays / detect-changes (push) Successful in 11s
CI / Detect changes (push) Successful in 30s
E2E API Smoke Test / detect-changes (push) Successful in 28s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 27s
Handlers Postgres Integration / detect-changes (push) Successful in 30s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 13s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 29s
Harness Replays / Harness Replays (push) Successful in 9s
CI / Platform (Go) (push) Successful in 9s
CI / Shellcheck (E2E scripts) (push) Successful in 9s
CI / Python Lint & Test (push) Successful in 9s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 11s
publish-canvas-image / Build & push canvas image (push) Failing after 1m14s
Sweep stale Cloudflare DNS records / Sweep CF orphans (push) Failing after 27s
ci-required-drift / drift (push) Failing after 1m27s
publish-workspace-server-image / build-and-push (push) Successful in 8m18s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 8m32s
CI / Canvas (Next.js) (push) Failing after 9m18s
CI / Canvas Deploy Reminder (push) Has been skipped
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 5m21s
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 3s
Sweep stale AWS Secrets Manager secrets / Sweep AWS Secrets Manager (push) Failing after 4s
Staging SaaS smoke (every 30 min) / Staging SaaS smoke (push) Failing after 5m18s
Co-authored-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> Co-committed-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> |
|||
| 1a2cfb9417 |
test(canvas): add Toolbar component test coverage (19 cases) (#472)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 16s
CI / Detect changes (push) Successful in 39s
E2E API Smoke Test / detect-changes (push) Successful in 38s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 31s
Handlers Postgres Integration / detect-changes (push) Successful in 31s
Harness Replays / detect-changes (push) Successful in 14s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 16s
CI / Platform (Go) (push) Successful in 11s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 1m6s
CI / Shellcheck (E2E scripts) (push) Successful in 9s
CI / Python Lint & Test (push) Successful in 10s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 10s
Harness Replays / Harness Replays (push) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 11s
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 9s
Sweep stale AWS Secrets Manager secrets / Sweep AWS Secrets Manager (push) Failing after 16s
publish-workspace-server-image / build-and-push (push) Successful in 8m19s
Staging SaaS smoke (every 30 min) / Staging SaaS smoke (push) Failing after 5m12s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 8m50s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 5m5s
CI / Canvas (Next.js) (push) Has been cancelled
Co-authored-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> Co-committed-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> |
|||
| 3d572d97a3 |
fix(canvas/test): use string keys in TIER_CONFIG toHaveProperty calls (#440)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 11s
CI / Detect changes (push) Successful in 54s
E2E API Smoke Test / detect-changes (push) Successful in 48s
Harness Replays / detect-changes (push) Successful in 13s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 35s
Handlers Postgres Integration / detect-changes (push) Successful in 33s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 18s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 9s
publish-canvas-image / Build & push canvas image (push) Failing after 1m3s
CI / Platform (Go) (push) Successful in 7s
ci-required-drift / drift (push) Failing after 1m15s
CI / Shellcheck (E2E scripts) (push) Successful in 6s
CI / Python Lint & Test (push) Successful in 7s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 9s
Harness Replays / Harness Replays (push) Successful in 7s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 8s
publish-workspace-server-image / build-and-push (push) Successful in 5m38s
CI / Canvas (Next.js) (push) Has been cancelled
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 4m49s
Co-authored-by: Molecule AI App-FE <app-fe@agents.moleculesai.app> Co-committed-by: Molecule AI App-FE <app-fe@agents.moleculesai.app> |
|||
| 67762ca422 |
Merge branch 'main' into fix/canvas-purchase-success-modal-test-timing
Some checks failed
sop-tier-check / tier-check (pull_request) bypass
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 12s
CI / Detect changes (pull_request) Successful in 24s
Harness Replays / detect-changes (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 23s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 24s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 29s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 26s
Secret scan / Scan diff for credential-shaped strings (pull_request) bypass
CI / Platform (Go) (pull_request) Successful in 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
CI / Python Lint & Test (pull_request) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 9s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 7s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 5s
Harness Replays / Harness Replays (pull_request) Failing after 1m4s
CI / Canvas (Next.js) (pull_request) Failing after 10m4s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Failing after 17m49s
|
|||
| c2d27d2b3f |
fix(canvas/test): ApprovalBanner mockReset to prevent queue stacking
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 19s
Harness Replays / detect-changes (pull_request) Successful in 20s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 18s
CI / Detect changes (pull_request) Successful in 1m19s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m18s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m15s
sop-tier-check / tier-check (pull_request) Successful in 18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m14s
CI / Platform (Go) (pull_request) Successful in 7s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 5s
CI / Python Lint & Test (pull_request) Successful in 6s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6s
audit-force-merge / audit (pull_request) Successful in 10s
Harness Replays / Harness Replays (pull_request) Failing after 1m16s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 7m56s
CI / Canvas (Next.js) (pull_request) Failing after 9m10s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
Cherry-picked from PR #452 (fix/canvas-test-and-design-fixes) which was closed without merge during the PR #443 cascade. The fix adds a mockPost reference so individual tests can reset the POST mock cleanly instead of queueing multiple resolved/rejected values. Without this, the "shows an error toast when POST fails" and "keeps the card visible when POST fails" tests queue two responses from beforeEach's mockResolvedValue({}) and the second mockRejectedValueOnce() call, causing non-deterministic test outcomes. Fixes test failures in ApprovalBanner suite. |
|||
| cebd9ab916 |
fix(canvas/test): replace fixed-delay dialog wait with waitFor polling
Some checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 21s
Harness Replays / detect-changes (pull_request) Failing after 18s
Harness Replays / Harness Replays (pull_request) Has been skipped
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
CI / Detect changes (pull_request) Successful in 1m12s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 20s
sop-tier-check / tier-check (pull_request) Successful in 20s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m16s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m26s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m34s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m22s
CI / Platform (Go) (pull_request) Successful in 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 9s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 11s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 8s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 6s
CI / Canvas (Next.js) (pull_request) Failing after 12m6s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Failing after 17m37s
PurchaseSuccessModal tests used a fixed 50ms setTimeout to wait for the dialog to appear after React useEffect batch + createPortal. This was flaky because React's rendering timing varies. Replace waitForDialog() fixed-delay with waitFor() polling — the test waits exactly as long as React needs, no more. Update all dismiss tests to use act(() => setTimeout(...)) after vi.useRealTimers() for reliable real-timer behavior. Result: 18/18 tests pass (was 14/18 with 4 timing-related failures). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 8b2fb6b3a0 |
fix(canvas/ConfirmDialog): add accessible name to backdrop div (WCAG 4.1.2) (#439)
Some checks failed
Block internal-flavored paths / Block forbidden paths (push) Waiting to run
CI / Detect changes (push) Waiting to run
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / detect-changes (push) Waiting to run
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / detect-changes (push) Waiting to run
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / detect-changes (push) Waiting to run
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
Runtime PR-Built Compatibility / detect-changes (push) Waiting to run
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Blocked by required conditions
Secret scan / Scan diff for credential-shaped strings (push) Waiting to run
Harness Replays / detect-changes (push) Failing after 16s
Harness Replays / Harness Replays (push) Has been skipped
publish-canvas-image / Build & push canvas image (push) Failing after 1m26s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Has started running
publish-workspace-server-image / build-and-push (push) Successful in 8m48s
Co-authored-by: Molecule AI Core-UIUX <core-uiux@agents.moleculesai.app> Co-committed-by: Molecule AI Core-UIUX <core-uiux@agents.moleculesai.app> |
|||
| 896d5e70f0 |
fix(canvas/test): dark zinc compliance, 6 test fixes, Legend data-testid (#437)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 13s
CI / Detect changes (push) Successful in 39s
Harness Replays / detect-changes (push) Failing after 14s
E2E API Smoke Test / detect-changes (push) Successful in 39s
Harness Replays / Harness Replays (push) Has been skipped
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 41s
Handlers Postgres Integration / detect-changes (push) Successful in 40s
publish-workspace-server-image / build-and-push (push) Failing after 13s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 17s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 49s
publish-canvas-image / Build & push canvas image (push) Failing after 1m36s
CI / Platform (Go) (push) Successful in 6s
CI / Shellcheck (E2E scripts) (push) Successful in 4s
CI / Python Lint & Test (push) Successful in 5s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 7s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 5s
CI / Canvas (Next.js) (push) Has been cancelled
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 13s
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 18s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Has started running
Canary — staging SaaS smoke (every 30 min) / Canary smoke (push) Failing after 4m59s
main-red-watchdog / watchdog (push) Successful in 1m24s
Co-authored-by: Molecule AI Core-UIUX <core-uiux@agents.moleculesai.app> Co-committed-by: Molecule AI Core-UIUX <core-uiux@agents.moleculesai.app> |
|||
| 651f44790b |
fix(canvas/a11y): add accessible name to ConsoleModal + DeleteCascadeConfirmDialog backdrops (#410)
Some checks failed
CI / Platform (Go) (push) Blocked by required conditions
CI / Canvas (Next.js) (push) Blocked by required conditions
CI / Shellcheck (E2E scripts) (push) Blocked by required conditions
CI / Canvas Deploy Reminder (push) Blocked by required conditions
CI / Python Lint & Test (push) Blocked by required conditions
E2E API Smoke Test / E2E API Smoke Test (push) Blocked by required conditions
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Blocked by required conditions
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 17s
Harness Replays / detect-changes (push) Failing after 10s
Harness Replays / Harness Replays (push) Has been skipped
CI / Detect changes (push) Successful in 57s
E2E API Smoke Test / detect-changes (push) Successful in 56s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 57s
Handlers Postgres Integration / detect-changes (push) Successful in 1m2s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 15s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 43s
publish-canvas-image / Build & push canvas image (push) Failing after 1m31s
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 9s
Sweep stale Cloudflare Tunnels / Sweep CF tunnels (push) Failing after 19s
publish-workspace-server-image / build-and-push (push) Has been cancelled
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 4m46s
Co-authored-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> Co-committed-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> |
|||
| 85b3e42c01 |
fix(canvas/test): resolve ~80 test failures across 17 test files (#299)
Some checks failed
CI / Canvas Deploy Reminder (push) Blocked by required conditions
Block internal-flavored paths / Block forbidden paths (push) Successful in 23s
CI / Detect changes (push) Successful in 1m12s
Harness Replays / detect-changes (push) Failing after 23s
Harness Replays / Harness Replays (push) Has been skipped
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 1m15s
E2E API Smoke Test / detect-changes (push) Successful in 1m17s
publish-workspace-server-image / build-and-push (push) Failing after 20s
Handlers Postgres Integration / detect-changes (push) Successful in 1m13s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 46s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 53s
publish-canvas-image / Build & push canvas image (push) Failing after 1m47s
Continuous synthetic E2E (staging) / Synthetic E2E against staging (push) Failing after 19s
CI / Platform (Go) (push) Successful in 10s
CI / Shellcheck (E2E scripts) (push) Successful in 10s
CI / Python Lint & Test (push) Successful in 12s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 15s
Handlers Postgres Integration / Handlers Postgres Integration (push) Successful in 15s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 8s
CI / Canvas (Next.js) (push) Has been cancelled
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Has been cancelled
Sweep stale e2e-* orgs (staging) / Sweep e2e orgs (push) Successful in 10s
Sweep stale AWS Secrets Manager secrets / Sweep AWS Secrets Manager (push) Failing after 17s
ci-required-drift / drift (push) Failing after 10m3s
Canary — staging SaaS smoke (every 30 min) / Canary smoke (push) Failing after 5m46s
[core-lead-agent] lead-merge after CI green + SOP-6 tier review Co-authored-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> Co-committed-by: Molecule AI Core-FE <core-fe@agents.moleculesai.app> |
|||
| 43844e0af0 |
feat(canvas): mobile-first shell with 6-screen iOS design + responsive desktop fixes
Implements the Claude Design handoff (Molecules AI Mobile.html) as a viewport-gated React tree under canvas/src/components/mobile/. < 640px renders the new shell instead of the desktop ReactFlow canvas. Six screens, all bound to live store data: - Home (agent list + filter chips + spawn FAB) - Canvas (mini-graph with pinch-to-zoom + pan + reset) - Detail (status pills, tabs: Overview / Activity / Config / Memory; Activity hits /workspaces/:id/activity) - Chat (textarea composer, IME-safe Enter, sendInFlightRef guard; bootstraps from agentMessages so the prior thread shows on entry) - Comms (live A2A feed via /workspaces/:id/activity + ACTIVITY_LOGGED) - Spawn (bottom sheet; fetches /templates so users pick what's actually installed on their platform) Plus a Me tab for mobile theme/accent/density. Design system (palette.ts + primitives.tsx) ports tokens 1:1 from the handoff: cream + dark palettes, T1-T4 tier chips, status dots with halo, JetBrains Mono for IDs/timestamps. Inter + JetBrains Mono are self-hosted via next/font/google so CSP `font-src 'self'` is honoured. URL routing: routes sync to ?m=<route>&a=<id>; popstate restores route; deep links seed initial state. /?m=detail without ?a collapses to home. Accent override flows through React context (MobileAccentProvider) — not by mutating the static MOL_LIGHT/MOL_DARK singletons. SSR flash: isMobile is tri-state; loading spinner stays up until matchMedia resolves so mobile devices never paint the desktop tree. Desktop responsiveness fixes (separate but ride along): - Toolbar: full-width with overflow-x-auto on mobile, logo text + count hidden < sm, divider/border collapse to sm: only. - SidePanel: full-screen on mobile via matchMedia, resize handle hidden. - Canvas: MiniMap hidden < sm (was overlapping the New Workspace FAB). Tests (51 total, 33 new): - palette.test.ts (12) - normalizeStatus, tierCode, light/dark parity - components.test.ts (10) - toMobileAgent field mapping + classifyForFilter - MobileApp.test.tsx (12) - route stack, deep links, popstate, tab bar hidden on chat, spawn overlay - SidePanel.tabs.test.tsx (18) - regression-clean Verified: tsc --noEmit clean across mobile/, page.tsx, layout.tsx. Not yet verified: live phone browser (needs CP backend hydrated). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
|||
| 9abbe82b15 |
fix(canvas): toYaml always emits tools: [] and serializes nested lists
Two bugs in yaml-utils.ts toYaml():
1. tools: [] was only emitted when config.tools.length > 0,
but the test asserts it's always present. Add blank-line
separator + unconditional list("tools", ...) so MINIMAL_CONFIG
with tools: [] renders correctly.
2. Nested list values (e.g. runtime_config.required_env: [KEY])
were serialized as " required_env: KEY" (stringification of the
array) instead of a YAML list block. Fix obj() to detect
Array.isArray(sv) and emit a list block with 4-space indent.
Closes #269.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
|||
| 814c7cc460 |
test(canvas): add structural tests for TIER_CONFIG and COMM_TYPE_LABELS
Both are data constants exported from design-tokens.ts — TIER_CONFIG maps tier levels 1-4 to label/color/border CSS classes, and COMM_TYPE_LABELS maps a2a_send/a2a_receive/task_update to display labels. No logic to test; structural shape coverage. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 3c934dfce0 |
feat(canvas): document all keyboard shortcuts and interactions in the help dialog
Issue: MEDIUM priority from canvas accessibility audit (2026-05-09). The existing Quick Start help dialog in Toolbar omitted most keyboard shortcuts from useKeyboardShortcuts.ts — users couldn't discover them visually. Changes: - Toolbar.tsx: enhance the help dialog (role="dialog") to include all documented shortcuts: Esc, Enter, Shift+Enter, Cmd+], Cmd+[, Z, plus mouse interaction tips for Palette, Right-click, Dbl-click, Shift+click. Renamed from "Quick start" to "Shortcuts & tips". - canvas-audit-items.md: update Keyboard Shortcuts section from PARTIAL to complete; mark help dialog item as done. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 3884580aaa |
test(canvas): add cssVar unit tests for theme token → CSS variable mapping
Covers all ColorToken variants (surface, ink, accent, good, bad, warm, bg, warn, plasma), pure-function property (deterministic output). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 02a1de75aa | Merge pull request 'test(canvas): add pure-function tests for deriveWsBaseUrl, statusDotClass, and readThemeCookie' (#238) from test/canvas-utility-pure-tests into main | |||
| 8fff99c525 | Merge pull request 'test(canvas): add pure-function tests for resolveRuntime and canvas-topology utilities' (#236) from test/canvas-preflight-utils-tests into main | |||
| e5da324a53 | Merge pull request 'test(canvas): add pure-function tests for runtimeProfiles, getIcon, and createMessage' (#235) from test/canvas-runtimeprofiles-tests into main | |||
| f72a5ecc2c | Merge pull request 'test(canvas/config): add pure-function tests for parseYaml and toYaml' (#233) from test/canvas-yaml-utils-tests into main | |||
| 10e60d66cb |
test(canvas): add pure-function tests for deriveWsBaseUrl, statusDotClass, and readThemeCookie
- ws-url.test.ts: deriveWsBaseUrl — all 4 priority paths tested: NEXT_PUBLIC_WS_URL (strips /ws suffix), NEXT_PUBLIC_PLATFORM_URL (http→ws, https→wss), window.location (https→wss, http→ws), precedence over lower-priority paths. - statusDotClass.test.ts: all STATUS_CONFIG entries (online/offline/paused/ degraded/failed/provisioning/not_configured), fallback to bg-zinc-500, case-sensitivity, purity. - theme-cookie.test.ts: readThemeCookie — valid values (light/dark/system), undefined/empty fallback, invalid value handling, case-sensitivity, purity. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| dc0c3e7a27 |
test(canvas): add pure-function tests for resolveRuntime and canvas-topology utilities
- preflight-resolveRuntime.test.ts: resolveRuntime from deploy-preflight.ts covering explicit runtime-map entries, identity fallback, -default suffix stripping, edge cases (empty string, multiple suffixes). - canvas-topology-pure.test.ts: sortParentsBeforeChildren (topological sort, orphan handling, no-op, non-mutating), defaultChildSlot (2-col grid), childSlotInGrid (variable-size siblings, uniform-grid fallback), parentMinSize (0–5 children, grid dimensions), parentMinSizeFromChildren (variable sizes, empty array, width/height correctness). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 4c6cfef912 |
test(canvas): add pure-function tests for runtimeProfiles, getIcon, createMessage
- runtimeProfiles.test.ts: getRuntimeProfile and provisionTimeoutForRuntime covering undefined/unknown runtime, overrides precedence, convenience equivalence. - getIcon.test.ts: 23 cases — dirs, all FILE_ICONS extensions (.md/.yaml/.py/.ts/.tsx/.js/.json/.html/.css/.sh), fallback, case insensitivity, nested paths. - createMessage.test.ts: role, content, id, timestamp, attachment handling, Object.isFrozen, key shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 9b91bda2ed |
test(canvas/config): add pure-function tests for parseYaml and toYaml
Cover parseYaml: empty input, blanks, comments, booleans, numbers, lists, objects, 2-level nesting (env.required pattern), round-trip. Cover toYaml: name/desc, version/tier, runtime, runtime_config, effort/task_budget, prompt_files/skills/tools lists, a2a/delegation/ sandbox nested blocks, null-omission, trailing newline, full round-trip. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 71174544ef |
Revert "Re-export extractMessageText for ConversationTraceModal tests"
This reverts the JSDoc-comment removal that happened during merge, keeping the function exported so ConversationTraceModal.test.ts can import it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| d35403d402 |
test(canvas): add tests for extractMessageText and providerIdForModel
extractMessageText (ConversationTraceModal): MCP task/task format, params.message.parts, result.parts/root.text, plain string result, priority order, error resilience. providerIdForModel (MissingKeysModal): model match, no match, whitespace trimming, undefined models, no required_env, multi-env sort. Also exports extractMessageText from ConversationTraceModal for testing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 56950021cc |
test(canvas): add tests for SettingsButton and TopBar
SettingsButton: gear button render, aria-expanded, active class toggle, openPanel/closePanel calls, forwardRef, Radix Tooltip mock. TopBar: header render, canvas name display, "+ New Agent" button, SettingsButton integration, logo aria-hidden. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 6eff188569 |
test(canvas): add tests for RevealToggle, KeyValueField, TestConnectionButton
RevealToggle: eye/eye-off SVG icons, aria-label, title text, onToggle callback. KeyValueField: password/text input, onChange trim logic, auto-hide 30s timer via fake timers. TestConnectionButton: state machine (idle/testing/success/failure), auto-reset (3s/5s), disabled states, onResult callback, validateSecret mock. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 6b3ab63bc0 |
test(canvas): add tests for StatusBadge, ValidationHint, Spinner
StatusBadge: all 3 status variants, aria-label, role=status, config class names. ValidationHint: error/valid/neutral states, warning icon, valid icon, class names. Spinner: sm/md/lg size classes, aria-hidden, motion-safe:animate-spin. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 2549c4cbcc |
test(canvas): add component tests for SearchDialog and ContextMenu
SearchDialog: Cmd+K/Ctrl+K shortcut, Escape close, input focus via rAF, text filtering by name/role/status, arrow-key navigation, Enter select, aria-combobox/listbox/option attributes, footer workspace count. ContextMenu: null guard, node header, outside-click/Escape/Tab close, conditional items (online vs offline vs paused), team items, dividers, danger Delete styling, keyboard navigation, Pause/Resume API calls. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| b23ca65d35 |
test(canvas): add component tests for OnboardingWizard and PurchaseSuccessModal
OnboardingWizard: visibility gates, 4-step flow, skip/dismiss, localStorage persistence, progress bar, aria-live announcements, auto-advance from welcome→api-key on nodes change. PurchaseSuccessModal: URL param gating, portal rendering, item name display, 5s auto-dismiss (fake timers), backdrop/Escape close, replaceState URL stripping, aria-modal/focus management. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| ad1a4a2d49 |
test(canvas): add component tests for ThemeToggle and BundleDropZone
- ThemeToggle.test.tsx (13 tests): renders radiogroup with 3 options, aria radiogroup/radio semantics, aria-checked per option, setTheme calls on click, custom className prop - BundleDropZone.test.tsx (11 tests): hidden file input + keyboard accessibility (WCAG 2.1.1), drag-over state, import success/error toast, auto-clear timeouts (3s error, 4s success), importing status indicator, file input reset on re-select Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 29c6be81bd |
test(canvas): add component tests for Tooltip, Legend, TermsGate, ApprovalBanner
Adds vitest tests for 4 previously untested canvas components: - Tooltip.test.tsx (17 tests): portal rendering, 400ms hover delay, keyboard focus reveal, Esc dismiss (WCAG 1.4.13), aria-describedby - Legend.test.tsx (10 tests): open/closed state, localStorage persistence, palette-offset positioning, status/tier/comm items, aria labels - TermsGate.test.tsx (14 tests): loading→accepted, pending modal (WCAG 2.4.3 focus), accept flow, error state, children always rendered - ApprovalBanner.test.tsx (15 tests): empty state, approval card render, polling cleanup, approve/deny decisions, toast notifications, error recovery Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 858f996196 |
test(canvas): add StatusDot component tests
Add 10 tests for StatusDot covering: - All known STATUS_CONFIG statuses (online, offline, degraded, failed, paused, not_configured, provisioning) - Correct color class applied per status - Glow class applied when declared in STATUS_CONFIG - motion-safe:animate-pulse on provisioning status - Fallback to bg-zinc-500 for unknown status - size prop (sm/md) applies correct Tailwind dimension class - aria-hidden="true" for accessibility tree isolation Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 4baf60f01d |
fix(canvas): correct KeyboardShortcutsDialog descriptions + fix min-clamp test expectations
- Fix arrow-key nudge description: was "20px/100px" (wrong), now "10px/50px" (matches useKeyboardShortcuts) - Add Cmd/Ctrl+Arrow resize shortcut row to dialog (missing since PR #192) - Fix 3 tests in useKeyboardShortcuts.test.tsx that asserted shrink below min dimensions: "resizes height down" expected height:100, clamped to 110 (node starts at minHeight) "resizes width down" expected width:200, clamped to 210 (node starts at minWidth) "2px step with Shift" expected height:108, clamped to 110 (minHeight wins) All three tests updated to assert clamped values with explanatory comments. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
|
|
aff8831817 | Merge remote-tracking branch 'origin/main' into trig-197 | ||
| 2da036204c |
test(canvas): add tests for Cmd/Ctrl+Arrow keyboard node resize
Add 10 tests covering the Cmd/Ctrl+Arrow resize shortcut: - ArrowUp/Down resizes height (−/+10px) - ArrowLeft/Right resizes width (−/+10px) - Shift modifier uses 2px step for fine control - min-height constraint respected when shrinking - Guard: no-op when no node selected - Guard: skipped when modal dialog is open - Plain arrow keys (no modifier) fire moveNode instead - Alt+Arrow is skipped (not a resize combo) Also extends the mock store state with `onNodesChange` and node `width`/`height` fields needed for the resize tests. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
|||
| 4a73a72e44 |
test(canvas): add KeyboardShortcutsDialog a11y render tests
Cherry-picked from feat/keyboard-shortcuts-dialog-test (
|