Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed) #575
pr.yml
on: pull_request
policy
59s
Matrix: e2e_shards
Matrix: general_tests
Canary Dry Run
3m 23s
Matrix: verify_serialized_server
Annotations
57 errors and 1 warning
|
Verify serialized server suites (1/5)
Process completed with exit code 1.
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > schedules an infra retry for a setup failure caused by a transient sandbox provider worker restart:
server/src/__tests__/heartbeat-process-recovery.test.ts#L3368
AssertionError: Target cannot be null or undefined.
❯ src/__tests__/heartbeat-process-recovery.test.ts:3368:18
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a second heartbeat service instance also suppresses new-run dispatch once shutdown begins:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:2070:28
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a sub-interval drain timeout never oversleeps past the deadline:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:2025:21
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: the wait is bounded by the drain timeout:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:1987:21
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a run still running at the drain deadline is interrupted and retried:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:1951:36
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: new-run dispatch is quiesced before the drain wait begins:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:1932:21
|
|
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a run that finishes within the drain window is not interrupted:
server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41
❯ src/__tests__/heartbeat-process-recovery.test.ts:1888:36
|
|
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar operator-hidden entries > hides operator-hidden company pages:
ui/src/components/CompanySettingsSidebar.test.tsx#L628
AssertionError: expected 'PaperclipProfileEnvironmentsAccessHea…' to contain 'General'
Expected: "General"
Received: "PaperclipProfileEnvironmentsAccessHeartbeatsExperimentalPluginsAdapters"
❯ src/components/CompanySettingsSidebar.test.tsx:628:35
|
|
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar operator-hidden entries > skips operator-hidden pages and their queries:
ui/src/components/CompanySettingsSidebar.test.tsx#L595
AssertionError: expected 'PaperclipProfileEnvironmentsAccessExp…' to contain 'General'
Expected: "General"
Received: "PaperclipProfileEnvironmentsAccessExportImportExperimentalAdapters"
❯ src/components/CompanySettingsSidebar.test.tsx:595:35
|
|
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > degrades closed: gated entries hidden while capabilities are unavailable:
ui/src/components/CompanySettingsSidebar.test.tsx#L503
AssertionError: expected 'PaperclipProfileEnvironmentsAccessHea…' to contain 'Company Settings'
Expected: "Company Settings"
Received: "PaperclipProfileEnvironmentsAccessHeartbeatsExportImportExperimentalPluginsAdapters"
❯ src/components/CompanySettingsSidebar.test.tsx:503:35
|
|
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > renders instance plugin links while filtering sandbox-provider-only plugins:
ui/src/components/CompanySettingsSidebar.test.tsx#L419
AssertionError: expected [ …(4) ] to deeply equal [ …(2) ]
- Expected
+ Received
[
"/company/settings/instance/plugins/linear",
"/company/settings/instance/plugins/hybrid",
+ "/company/settings/instance/plugins/linear",
+ "/company/settings/instance/plugins/hybrid",
]
❯ src/components/CompanySettingsSidebar.test.tsx:419:66
|
|
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > renders one unified settings list without company or instance headers:
ui/src/components/CompanySettingsSidebar.test.tsx#L238
AssertionError: expected Set{ '/company/settings', …(1) } to deeply equal Set{ '/company/settings' }
- Expected
+ Received
Set {
"/company/settings",
+ "/company/settings/instance/general",
}
❯ src/components/CompanySettingsSidebar.test.tsx:238:8
|
|
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > shows the Login button for an agent with no own environment under the managed-sandbox-only policy:
ui/src/components/AgentConfigForm.render.test.tsx#L1380
AssertionError: expected undefined to be truthy
- Expected:
true
+ Received:
undefined
❯ src/components/AgentConfigForm.render.test.tsx:1380:52
|
|
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > labels the platform-managed instance default by name, without the driver key:
ui/src/components/AgentConfigForm.render.test.tsx#L836
AssertionError: expected 'Default: LocalPaperclip Computer' to contain 'Default: Paperclip Computer'
Expected: "Default: Paperclip Computer"
Received: "Default: LocalPaperclip Computer"
❯ src/components/AgentConfigForm.render.test.tsx:836:35
|
|
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > applies a stored token first and starts a replacement login with the captured version:
ui/src/pages/NewAgent.test.tsx#L379
Error: Test timed out in 5000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
❯ src/pages/NewAgent.test.tsx:379:3
|
|
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > stores the secret and adds the fixed binding through the create request, with no token in the DOM:
ui/src/pages/NewAgent.test.tsx#L338
Error: Test timed out in 5000ms.
If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout".
❯ src/pages/NewAgent.test.tsx:338:3
|
|
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > shows Log in for a Claude sandbox before Create agent:
ui/src/pages/NewAgent.test.tsx#L329
AssertionError: expected undefined to be truthy
- Expected:
true
+ Received:
undefined
❯ src/pages/NewAgent.test.tsx:329:25
|
|
e2e shard (3/3)
Process completed with exit code 1.
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > the mission step, reached with a company that already exists > does not write a second mission when Enter is pressed twice:
ui/src/components/OnboardingWizard.step.test.tsx#L432
AssertionError: expected "vi.fn()" to be called 1 times, but got 0 times
❯ src/components/OnboardingWizard.step.test.tsx:432:35
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > the mission step, reached with a company that already exists > saves the mission it asked for:
ui/src/components/OnboardingWizard.step.test.tsx#L393
AssertionError: expected "vi.fn()" to be called with arguments: [ 'company-1', ObjectContaining{…} ]
Number of calls: 0
❯ src/components/OnboardingWizard.step.test.tsx:393:35
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > re-decides the company when the route names a different one:
ui/src/components/OnboardingWizard.step.test.tsx#L312
AssertionError: expected 'other' to be 'agent' // Object.is equality
Expected: "agent"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:312:27
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > does not move an open wizard when the dialog is re-opened with a new step:
ui/src/components/OnboardingWizard.step.test.tsx#L303
AssertionError: expected 'other' to be 'mission' // Object.is equality
Expected: "mission"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:303:27
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > does not move an open wizard when a later refetch finds a mission:
ui/src/components/OnboardingWizard.step.test.tsx#L273
AssertionError: expected 'other' to be 'agent' // Object.is equality
Expected: "agent"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:273:27
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens on the agent step when the goals lookup fails outright:
ui/src/components/OnboardingWizard.step.test.tsx#L261
AssertionError: expected 'other' to be 'agent' // Object.is equality
Expected: "agent"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:261:27
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens on the agent step without waiting for the goals lookup:
ui/src/components/OnboardingWizard.step.test.tsx#L252
AssertionError: expected 'other' to be 'agent' // Object.is equality
Expected: "agent"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:252:27
|
|
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens a company that already has its mission on the agent step:
ui/src/components/OnboardingWizard.step.test.tsx#L233
AssertionError: expected 'other' to be 'agent' // Object.is equality
Expected: "agent"
Received: "other"
❯ src/components/OnboardingWizard.step.test.tsx:233:27
|
|
[@paperclipai/ui] src/pages/IssueDetail.test.tsx > IssueDetail > shows the plan decomposition panel when the experimental flag is enabled:
ui/src/pages/IssueDetail.test.tsx#L2209
AssertionError: expected "vi.fn()" to not be called at all, but actually been called 1 times
Received:
1st vi.fn() call:
Array [
<IssueProperties
checkingMonitorNow={false}
childIssues={Array []}
documentDeepLink={null}
hasActiveRun={false}
issue={
Object {
"ancestors": Array [],
"assigneeAdapterOverrides": null,
"assigneeAgentId": null,
"assigneeUserId": null,
"billingCode": null,
"cancelledAt": null,
"checkoutRunId": null,
"companyId": "company-1",
"completedAt": null,
"createdAt": 2026-04-21T00:00:00.000Z,
"createdByAgentId": null,
"createdByUserId": null,
"currentExecutionWorkspace": null,
"description": "Loads after the initial pending query.",
"documentSummaries": Array [],
"executionAgentNameKey": null,
"executionLockedAt": null,
"executionPolicy": null,
"executionRunId": null,
"executionState": null,
"executionWorkspaceId": null,
"executionWorkspacePreference": null,
"executionWorkspaceSettings": null,
"goalId": "goal-1",
"hiddenAt": null,
"id": "issue-1",
"identifier": "PAP-1",
"issueNumber": 1,
"labelIds": Array [],
"labels": Array [],
"originFingerprint": "default",
"originId": null,
"originKind": "manual",
"originRunId": null,
"parentId": null,
"priority": "medium",
"projectId": null,
"projectWorkspaceId": null,
"requestDepth": 0,
"startedAt": null,
"status": "todo",
"title": "Issue detail smoke",
"updatedAt": 2026-04-21T00:00:00.000Z,
}
}
onAddSubIssue={[Function anonymous]}
onCheckMonitorNow={[Function onCheckMonitorNow]}
onUpdate={[Function anonymous]}
/>,
]
Number of calls: 1
❯ src/pages/IssueDetail.test.tsx:2209:31
|
|
[@paperclipai/ui] src/pages/InviteLanding.test.tsx > InviteLandingPage > refreshes the companies cache with the joined company before redirecting a fresh authenticated invitee:
ui/src/pages/InviteLanding.test.tsx#L646
AssertionError: the given combination of arguments (undefined and string) is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a string
❯ src/pages/InviteLanding.test.tsx:646:60
|
|
General tests (workspaces-b)
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (workspaces-b)
Process completed with exit code 1.
|
|
[@paperclipai/adapter-utils] src/acpx-engine/execute.test.ts > shared ACPX engine runtime behavior > carries the auth classification on the thrown error for a fallback-eligible run:
packages/adapter-utils/src/acpx-engine/execute.test.ts#L2004
AssertionError: expected null to be an instance of AcpxSessionInitError
❯ src/acpx-engine/execute.test.ts:2004:20
|
|
[@paperclipai/adapter-utils] src/acpx-engine/execute.test.ts > shared ACPX engine runtime behavior > throws AcpxSessionInitError (so the adapter can fall back) when session init fails and lane fallback is allowed:
packages/adapter-utils/src/acpx-engine/execute.test.ts#L1764
AssertionError: expected null to be an instance of AcpxSessionInitError
❯ src/acpx-engine/execute.test.ts:1764:20
|
|
[@paperclipai/adapter-utils] src/execution-target-sandbox.test.ts > sandbox adapter execution targets > applies the remote sandbox fallback when adapter timeoutSec is unset:
packages/adapter-utils/src/execution-target-sandbox.test.ts#L1523
Error: Calling the suite function inside test function is not allowed. It can be only called at the top level or inside another suite function.
❯ src/execution-target-sandbox.test.ts:1523:3
|
|
General tests (server (1/5))
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (server (1/5))
The operation was canceled.
|
|
General tests (server (2/5))
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (server (2/5))
The operation was canceled.
|
|
Verify serialized server suites (2/5)
Canceling since a higher priority waiting request for pr-334 exists
|
|
Verify serialized server suites (2/5)
The operation was canceled.
|
|
Verify serialized server suites (4/5)
Canceling since a higher priority waiting request for pr-334 exists
|
|
Verify serialized server suites (4/5)
The operation was canceled.
|
|
Verify serialized server suites (3/5)
Canceling since a higher priority waiting request for pr-334 exists
|
|
Verify serialized server suites (3/5)
The operation was canceled.
|
|
General tests (server (5/5))
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (server (5/5))
The operation was canceled.
|
|
General tests (server (3/5))
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (server (3/5))
The operation was canceled.
|
|
General tests (server (4/5))
Canceling since a higher priority waiting request for pr-334 exists
|
|
General tests (server (4/5))
The operation was canceled.
|
|
e2e shard (1/3)
Canceling since a higher priority waiting request for pr-334 exists
|
|
e2e shard (1/3)
The operation was canceled.
|
|
e2e shard (2/3)
Canceling since a higher priority waiting request for pr-334 exists
|
|
e2e shard (2/3)
The operation was canceled.
|
|
verify
Process completed with exit code 1.
|
|
e2e
Process completed with exit code 1.
|
|
PR
Canceling since a higher priority waiting request for pr-334 exists
|
|
e2e shard (1/3)
No files were found with the provided path: tests/e2e/playwright-report/
tests/e2e/test-results/. No artifacts will be uploaded.
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
playwright-report-1
|
43.2 KB |
sha256:68b92d172a25fe88f0d88f4666ed35d279c08101269a5d3fefc798b7ac9078b0
|
|
|
playwright-report-2
|
545 KB |
sha256:724bb04de9aac55edf29d584f71938c1cf0ff812ed12012108d8081e431f2785
|
|
|
pr-lockfile
Expired
|
159 KB |
sha256:aea52da71f42c622b803d51468af64a1ac35810aaa52e2b9561391932b4b61ca
|
|