@taskforcehq/taskforce 0.3.311 → 0.3.313
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -2
- package/dist/TaskforceCore.js +1 -1
- package/dist/components/features/InitiativesModule.js +1 -1
- package/dist/components/features/TaskSettings.js +1 -1
- package/dist/components/views/StandaloneLayout.js +3 -6
- package/dist/components/views/standalone/modals/AccountHubModal.d.ts +1 -2
- package/dist/components/views/standalone/modals/AccountHubModal.js +2 -3
- package/dist/components/views/standalone/modals/HelpModal.js +15 -2
- package/dist/hooks/useFilterSort.js +1 -1
- package/dist/hooks/useTaskforce.js +2 -2
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
- package/dist/ui/assets/{AgentsModule-D8u9P5dZ.js → AgentsModule-BULqIo8e.js} +1 -1
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CsUauFA2.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-DbQvDHFz.js → ContextAttachmentManager-DoMe2OpY.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-BmTkN1A8.js → DocumentWorkspace-DumBWhvb.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-BXHTM-Nh.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
- package/dist/ui/assets/{InitiativesModule-D33RyXx0.js → InitiativesModule-3X9UNzHh.js} +1 -1
- package/dist/ui/assets/{PlansPage-D0RXlT9_.js → PlansPage-C3A3EYaV.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-Vsg67lpR.js → TaskContextUpload-C8G7pWkX.js} +1 -1
- package/dist/ui/assets/{TaskSettings-DshLw7_d.js → TaskSettings-DM1o9Wla.js} +2 -2
- package/dist/ui/assets/{WorkflowsModule-CLM-1BnF.js → WorkflowsModule-CW0crzvD.js} +1 -1
- package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
- package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
- package/dist/ui/assets/{index-DOR9PRqt.css → index-DcK_8tuE.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +12 -4
- package/scripts/postinstall.js +4 -3
- package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
- package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
- package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
- package/dist/TaskforceCore.filter-persistence.test.js +0 -402
- package/dist/TaskforceCore.routing.test.d.ts +0 -1
- package/dist/TaskforceCore.routing.test.js +0 -311
- package/dist/TaskforceCore.test.d.ts +0 -1
- package/dist/TaskforceCore.test.js +0 -7910
- package/dist/TaskforceWidget.test.d.ts +0 -1
- package/dist/TaskforceWidget.test.js +0 -92
- package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
- package/dist/UnsavedChangesRelaxed.test.js +0 -16
- package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
- package/dist/__tests__/localizationCatalogs.test.js +0 -54
- package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
- package/dist/__tests__/workflowSimulation.test.js +0 -113
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
- package/dist/annotatedAttachments/payload.test.d.ts +0 -1
- package/dist/annotatedAttachments/payload.test.js +0 -67
- package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
- package/dist/compat/workspaceSyncCompat.test.js +0 -124
- package/dist/components/features/AgentsModule.test.d.ts +0 -1
- package/dist/components/features/AgentsModule.test.js +0 -601
- package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
- package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
- package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
- package/dist/components/features/DocumentWorkspace.test.js +0 -1439
- package/dist/components/features/TaskSettings.test.d.ts +0 -1
- package/dist/components/features/TaskSettings.test.js +0 -1674
- package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
- package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
- package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
- package/dist/components/task/TaskActionHeader.test.js +0 -91
- package/dist/components/task/TaskCard.test.d.ts +0 -1
- package/dist/components/task/TaskCard.test.js +0 -513
- package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
- package/dist/components/task/TaskContextUpload.test.js +0 -506
- package/dist/components/task/TaskForm.test.d.ts +0 -1
- package/dist/components/task/TaskForm.test.js +0 -946
- package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
- package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
- package/dist/components/task/TaskKanban.test.d.ts +0 -1
- package/dist/components/task/TaskKanban.test.js +0 -99
- package/dist/components/task/TaskList.test.d.ts +0 -1
- package/dist/components/task/TaskList.test.js +0 -473
- package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
- package/dist/components/task/TaskStatusActions.test.js +0 -54
- package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
- package/dist/components/task/taskKanbanDropRules.test.js +0 -114
- package/dist/components/ui/LevelSelector.test.d.ts +0 -1
- package/dist/components/ui/LevelSelector.test.js +0 -55
- package/dist/components/ui/Markdown.test.d.ts +0 -1
- package/dist/components/ui/Markdown.test.js +0 -38
- package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
- package/dist/components/ui/MultiSelectFilter.test.js +0 -74
- package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
- package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
- package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
- package/dist/components/ui/TopNoticeLayer.test.js +0 -25
- package/dist/components/views/AppShellHeader.test.d.ts +0 -1
- package/dist/components/views/AppShellHeader.test.js +0 -42
- package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
- package/dist/components/views/PlanComparisonPage.test.js +0 -758
- package/dist/components/views/PlansPage.test.d.ts +0 -1
- package/dist/components/views/PlansPage.test.js +0 -710
- package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
- package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
- package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
- package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
- package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
- package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
- package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
- package/dist/components/views/panels/FilterToolbar.test.js +0 -47
- package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
- package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
- package/dist/components/views/planningScope.test.d.ts +0 -1
- package/dist/components/views/planningScope.test.js +0 -60
- package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
- package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -72
- package/dist/components/views/standalone/modals/HelpModal.test.d.ts +0 -1
- package/dist/components/views/standalone/modals/HelpModal.test.js +0 -23
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
- package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
- package/dist/components/views/teamManagementAccess.test.js +0 -44
- package/dist/config/deployment.test.d.ts +0 -1
- package/dist/config/deployment.test.js +0 -90
- package/dist/config/envSchema.test.d.ts +0 -1
- package/dist/config/envSchema.test.js +0 -125
- package/dist/core/AiProfileService.test.d.ts +0 -1
- package/dist/core/AiProfileService.test.js +0 -184
- package/dist/core/AiProfiles.test.d.ts +0 -1
- package/dist/core/AiProfiles.test.js +0 -1873
- package/dist/core/AuthTokenService.test.d.ts +0 -1
- package/dist/core/AuthTokenService.test.js +0 -78
- package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
- package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
- package/dist/core/CompletedAt.test.d.ts +0 -1
- package/dist/core/CompletedAt.test.js +0 -44
- package/dist/core/CreatedBy.test.d.ts +0 -1
- package/dist/core/CreatedBy.test.js +0 -188
- package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
- package/dist/core/DeletedTaskTrash.test.js +0 -104
- package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
- package/dist/core/EntitlementsPolicy.test.js +0 -280
- package/dist/core/GlobalSettingsService.test.d.ts +0 -1
- package/dist/core/GlobalSettingsService.test.js +0 -45
- package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
- package/dist/core/JsonBackupRuntime.test.js +0 -155
- package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
- package/dist/core/PlanFeatureCatalog.test.js +0 -139
- package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
- package/dist/core/PlanVersionPolicy.test.js +0 -236
- package/dist/core/PlanningEntities.test.d.ts +0 -1
- package/dist/core/PlanningEntities.test.js +0 -509
- package/dist/core/ScheduleFields.test.d.ts +0 -1
- package/dist/core/ScheduleFields.test.js +0 -193
- package/dist/core/SetupState.test.d.ts +0 -1
- package/dist/core/SetupState.test.js +0 -113
- package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
- package/dist/core/SignupMonetizationSettings.test.js +0 -515
- package/dist/core/Stats.test.d.ts +0 -1
- package/dist/core/Stats.test.js +0 -36
- package/dist/core/SystemAdmin.test.d.ts +0 -1
- package/dist/core/SystemAdmin.test.js +0 -1106
- package/dist/core/TaskActivitySync.test.d.ts +0 -1
- package/dist/core/TaskActivitySync.test.js +0 -90
- package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
- package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
- package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
- package/dist/core/TaskAuditTimeline.test.js +0 -319
- package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
- package/dist/core/TaskTaxonomyValidation.test.js +0 -440
- package/dist/core/Taskforce.ids.test.d.ts +0 -1
- package/dist/core/Taskforce.ids.test.js +0 -611
- package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
- package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
- package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
- package/dist/core/Taskforce.mcpAuth.test.js +0 -450
- package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
- package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
- package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
- package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
- package/dist/core/WorkspaceDelete.test.d.ts +0 -1
- package/dist/core/WorkspaceDelete.test.js +0 -159
- package/dist/core/WorkspacePermissions.test.d.ts +0 -1
- package/dist/core/WorkspacePermissions.test.js +0 -270
- package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
- package/dist/core/WorkspacePlanMode.test.js +0 -383
- package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
- package/dist/core/WorkspaceSyncSettings.test.js +0 -65
- package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
- package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
- package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
- package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
- package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
- package/dist/hooks/authGuardPolicy.test.js +0 -76
- package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
- package/dist/hooks/bootstrapTimeouts.test.js +0 -12
- package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
- package/dist/hooks/sync/controlPlane.test.js +0 -121
- package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
- package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
- package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
- package/dist/hooks/sync/orchestratorShared.test.js +0 -98
- package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
- package/dist/hooks/sync/pullLifecycle.test.js +0 -80
- package/dist/hooks/sync/recovery.test.d.ts +0 -1
- package/dist/hooks/sync/recovery.test.js +0 -292
- package/dist/hooks/sync/transfers.test.d.ts +0 -1
- package/dist/hooks/sync/transfers.test.js +0 -928
- package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
- package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
- package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
- package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
- package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
- package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
- package/dist/hooks/useFilterSort.test.d.ts +0 -1
- package/dist/hooks/useFilterSort.test.js +0 -419
- package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
- package/dist/hooks/useRealtimeSync.test.js +0 -311
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
- package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
- package/dist/hooks/useTaskData.test.d.ts +0 -1
- package/dist/hooks/useTaskData.test.js +0 -291
- package/dist/hooks/useTaskMutations.test.d.ts +0 -1
- package/dist/hooks/useTaskMutations.test.js +0 -256
- package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.contract.test.js +0 -7
- package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
- package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
- package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
- package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
- package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
- package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
- package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
- package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
- package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
- package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
- package/dist/localization/localizationCatalogs.test.d.ts +0 -1
- package/dist/localization/localizationCatalogs.test.js +0 -37
- package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
- package/dist/mcp/aiProfileBootstrap.test.js +0 -68
- package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
- package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
- package/dist/mcp/clientIntegrations.test.d.ts +0 -1
- package/dist/mcp/clientIntegrations.test.js +0 -219
- package/dist/mcp/optionResolution.test.d.ts +0 -1
- package/dist/mcp/optionResolution.test.js +0 -43
- package/dist/mcp/runtime.test.d.ts +0 -1
- package/dist/mcp/runtime.test.js +0 -5211
- package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
- package/dist/mcp/structuredCommentValidation.test.js +0 -31
- package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
- package/dist/mcp/structuredDocValidation.test.js +0 -35
- package/dist/mcp/toolRegistry.test.d.ts +0 -1
- package/dist/mcp/toolRegistry.test.js +0 -34
- package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
- package/dist/migrations/billingSchemaParity.test.js +0 -160
- package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
- package/dist/migrations/taskSchemaMigrations.test.js +0 -225
- package/dist/qaOpen.test.d.ts +0 -1
- package/dist/qaOpen.test.js +0 -56
- package/dist/releaseVersion.test.d.ts +0 -1
- package/dist/releaseVersion.test.js +0 -32
- package/dist/runtime/appGates.test.d.ts +0 -1
- package/dist/runtime/appGates.test.js +0 -42
- package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
- package/dist/server/aiProfileAvatarAssets.test.js +0 -213
- package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
- package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
- package/dist/server/auth.test.d.ts +0 -1
- package/dist/server/auth.test.js +0 -131
- package/dist/server/buildInfo.test.d.ts +0 -1
- package/dist/server/buildInfo.test.js +0 -29
- package/dist/server/cors.test.d.ts +0 -1
- package/dist/server/cors.test.js +0 -77
- package/dist/server/documentReviewRoutes.test.d.ts +0 -1
- package/dist/server/documentReviewRoutes.test.js +0 -190
- package/dist/server/email.test.d.ts +0 -1
- package/dist/server/email.test.js +0 -113
- package/dist/server/index.cookieProxy.test.d.ts +0 -1
- package/dist/server/index.cookieProxy.test.js +0 -67
- package/dist/server/index.rateLimit.test.d.ts +0 -1
- package/dist/server/index.rateLimit.test.js +0 -22
- package/dist/server/index.test.d.ts +0 -1
- package/dist/server/index.test.js +0 -283
- package/dist/server/rateLimit.test.d.ts +0 -1
- package/dist/server/rateLimit.test.js +0 -107
- package/dist/server/realtimeSync.auth.test.d.ts +0 -1
- package/dist/server/realtimeSync.auth.test.js +0 -62
- package/dist/server/realtimeSync.replay.test.d.ts +0 -1
- package/dist/server/realtimeSync.replay.test.js +0 -192
- package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
- package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
- package/dist/server/routes/billing.test.d.ts +0 -1
- package/dist/server/routes/billing.test.js +0 -3515
- package/dist/server/routes/shared.test.d.ts +0 -1
- package/dist/server/routes/shared.test.js +0 -32
- package/dist/server/routes/sync.integration.test.d.ts +0 -1
- package/dist/server/routes/sync.integration.test.js +0 -2932
- package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
- package/dist/server/routes/syncAuxRoutes.test.js +0 -158
- package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
- package/dist/server/routes/syncRouteGuards.test.js +0 -94
- package/dist/server/routes.test.d.ts +0 -1
- package/dist/server/routes.test.js +0 -15612
- package/dist/server/runtimeMode.test.d.ts +0 -1
- package/dist/server/runtimeMode.test.js +0 -26
- package/dist/server/securityHeaders.test.d.ts +0 -1
- package/dist/server/securityHeaders.test.js +0 -70
- package/dist/services/templateEngine.test.d.ts +0 -1
- package/dist/services/templateEngine.test.js +0 -150
- package/dist/services/templates.test.d.ts +0 -1
- package/dist/services/templates.test.js +0 -45
- package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
- package/dist/services/workflowDocumentFixtures.test.js +0 -78
- package/dist/services/workflowExportMatrix.test.d.ts +0 -1
- package/dist/services/workflowExportMatrix.test.js +0 -113
- package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
- package/dist/services/workflowExportSnapshots.test.js +0 -30
- package/dist/services/workflowGeneration.test.d.ts +0 -1
- package/dist/services/workflowGeneration.test.js +0 -12
- package/dist/services/workflowSimulation.test.d.ts +0 -1
- package/dist/services/workflowSimulation.test.js +0 -113
- package/dist/services/workflowV2Policy.test.d.ts +0 -1
- package/dist/services/workflowV2Policy.test.js +0 -80
- package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
- package/dist/shared/customTaxonomyLibrary.test.js +0 -20
- package/dist/shared/passwordPolicy.test.d.ts +0 -1
- package/dist/shared/passwordPolicy.test.js +0 -34
- package/dist/shared/runtimeContract.test.d.ts +0 -1
- package/dist/shared/runtimeContract.test.js +0 -23
- package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
- package/dist/shared/taxonomyLibrary.test.js +0 -26
- package/dist/shared/taxonomyState.test.d.ts +0 -1
- package/dist/shared/taxonomyState.test.js +0 -71
- package/dist/soak/preflight.cli.d.ts +0 -1
- package/dist/soak/preflight.cli.js +0 -28
- package/dist/soak/preflight.d.ts +0 -26
- package/dist/soak/preflight.js +0 -113
- package/dist/soak/preflight.test.d.ts +0 -1
- package/dist/soak/preflight.test.js +0 -39
- package/dist/storage/objectStorageClient.test.d.ts +0 -1
- package/dist/storage/objectStorageClient.test.js +0 -82
- package/dist/storage/objectStorageConfig.test.d.ts +0 -1
- package/dist/storage/objectStorageConfig.test.js +0 -50
- package/dist/storage/postgresAdapter.test.d.ts +0 -1
- package/dist/storage/postgresAdapter.test.js +0 -29
- package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
- package/dist/storage/workspaceAssetStore.test.js +0 -588
- package/dist/sync/cloudSyncApi.test.d.ts +0 -1
- package/dist/sync/cloudSyncApi.test.js +0 -111
- package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
- package/dist/sync/collaborationSyncPayload.test.js +0 -125
- package/dist/sync/contentSyncPayload.test.d.ts +0 -1
- package/dist/sync/contentSyncPayload.test.js +0 -143
- package/dist/sync/encryptionService.test.d.ts +0 -1
- package/dist/sync/encryptionService.test.js +0 -52
- package/dist/sync/planningSyncPayload.test.d.ts +0 -1
- package/dist/sync/planningSyncPayload.test.js +0 -92
- package/dist/sync/realtimeFeature.test.d.ts +0 -1
- package/dist/sync/realtimeFeature.test.js +0 -30
- package/dist/sync/realtimeReconcile.test.d.ts +0 -1
- package/dist/sync/realtimeReconcile.test.js +0 -43
- package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
- package/dist/sync/syncApplyHandlers.test.js +0 -626
- package/dist/sync/syncService.test.d.ts +0 -1
- package/dist/sync/syncService.test.js +0 -903
- package/dist/sync/taskSyncPayload.test.d.ts +0 -1
- package/dist/sync/taskSyncPayload.test.js +0 -54
- package/dist/sync/workspacePullFeed.test.d.ts +0 -1
- package/dist/sync/workspacePullFeed.test.js +0 -438
- package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
- package/dist/sync/workspaceSyncModel.test.js +0 -1442
- package/dist/test/setup.d.ts +0 -1
- package/dist/test/setup.js +0 -15
- package/dist/ui/assets/documentReferences-BPWp6ce0.js +0 -1
- package/dist/ui/assets/index-zvbo2Jse.js +0 -5
- package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
- package/dist/utils/accountProfileSummaryCache.test.js +0 -63
- package/dist/utils/annotatedAttachments.test.d.ts +0 -1
- package/dist/utils/annotatedAttachments.test.js +0 -108
- package/dist/utils/assignees.test.d.ts +0 -1
- package/dist/utils/assignees.test.js +0 -25
- package/dist/utils/avatarUpload.test.d.ts +0 -1
- package/dist/utils/avatarUpload.test.js +0 -40
- package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
- package/dist/utils/canonicalAssetKind.test.js +0 -24
- package/dist/utils/coalescedRefresh.test.d.ts +0 -1
- package/dist/utils/coalescedRefresh.test.js +0 -30
- package/dist/utils/constants.icons.test.d.ts +0 -1
- package/dist/utils/constants.icons.test.js +0 -41
- package/dist/utils/planParser.test.d.ts +0 -1
- package/dist/utils/planParser.test.js +0 -183
- package/dist/utils/planningReferences.test.d.ts +0 -1
- package/dist/utils/planningReferences.test.js +0 -17
- package/dist/utils/supportContact.test.d.ts +0 -1
- package/dist/utils/supportContact.test.js +0 -19
- package/dist/utils/syncEventDetails.test.d.ts +0 -1
- package/dist/utils/syncEventDetails.test.js +0 -23
- package/dist/utils/syncEventPresentation.test.d.ts +0 -1
- package/dist/utils/syncEventPresentation.test.js +0 -64
- package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
- package/dist/utils/syncStatusPresentation.test.js +0 -164
- package/dist/utils/taskActivity.test.d.ts +0 -1
- package/dist/utils/taskActivity.test.js +0 -218
- package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
- package/dist/utils/taskDraftDefaults.test.js +0 -34
- package/dist/utils/taskDragZones.test.d.ts +0 -1
- package/dist/utils/taskDragZones.test.js +0 -14
- package/dist/utils/taskNormalization.test.d.ts +0 -1
- package/dist/utils/taskNormalization.test.js +0 -158
- package/dist/utils/taskSearch.test.d.ts +0 -1
- package/dist/utils/taskSearch.test.js +0 -69
- package/dist/utils/taskUtils.test.d.ts +0 -1
- package/dist/utils/taskUtils.test.js +0 -19
- package/dist/utils/taskforceApiClient.test.d.ts +0 -1
- package/dist/utils/taskforceApiClient.test.js +0 -44
- package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
- package/dist/utils/taxonomyFormDefaults.test.js +0 -63
- package/dist/utils/uiNotice.test.d.ts +0 -1
- package/dist/utils/uiNotice.test.js +0 -18
- package/dist/utils/workspaceIdentity.test.d.ts +0 -1
- package/dist/utils/workspaceIdentity.test.js +0 -61
- package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
- package/dist/utils/workspaceLifecycle.test.js +0 -64
- package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
- package/dist/utils/workspaceSyncPresentation.test.js +0 -71
- package/scripts/bootstrap-playwright-auth.mjs +0 -155
- package/scripts/check-cloud-mcp.mjs +0 -83
- package/scripts/check-compat-boundaries.mjs +0 -41
- package/scripts/check-env.ts +0 -31
- package/scripts/check-localization-strings.mjs +0 -49
- package/scripts/check-runtime-boundaries.mjs +0 -44
- package/scripts/debug-global.mjs +0 -34
- package/scripts/debug-login.mjs +0 -32
- package/scripts/debug-server.mjs +0 -36
- package/scripts/deploy-prod.sh +0 -41
- package/scripts/deploy-staging.sh +0 -23
- package/scripts/export-sqlite-to-postgres.mjs +0 -123
- package/scripts/generate-env-example.ts +0 -8
- package/scripts/mcp-stdio-adapter.mjs +0 -160
- package/scripts/migrate-task-data-assets.mjs +0 -408
- package/scripts/playwright-auth.sh +0 -19
- package/scripts/qa-open-lib.mjs +0 -175
- package/scripts/qa-open-lib.mjs.d.ts +0 -49
- package/scripts/qa-open.mjs +0 -352
- package/scripts/release-version-lib.mjs +0 -88
- package/scripts/release-version.mjs +0 -72
- package/scripts/run-billing-performance-smoke.sh +0 -24
- package/scripts/run-dev-proxy.sh +0 -51
- package/scripts/run-e2e-realtime.sh +0 -30
- package/scripts/run-smoke.sh +0 -35
- package/scripts/run-soak.sh +0 -41
- package/scripts/test-global.js +0 -143
- package/scripts/update-homebrew-formula.sh +0 -108
- package/scripts/with-esbuild.sh +0 -11
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
-
import { LevelSelector } from './LevelSelector';
|
|
5
|
-
describe('LevelSelector Component', () => {
|
|
6
|
-
const defaultProps = {
|
|
7
|
-
label: 'Priority',
|
|
8
|
-
options: [
|
|
9
|
-
{ value: 'low', label: 'Low' },
|
|
10
|
-
{ value: 'medium', label: 'Medium' },
|
|
11
|
-
{ value: 'high', label: 'High' }
|
|
12
|
-
],
|
|
13
|
-
value: 'medium',
|
|
14
|
-
onChange: vi.fn(),
|
|
15
|
-
type: 'priority'
|
|
16
|
-
};
|
|
17
|
-
const renderComponent = (props = {}) => {
|
|
18
|
-
return render(_jsx(LevelSelector, { ...defaultProps, ...props }));
|
|
19
|
-
};
|
|
20
|
-
it('1.7 Renders label and options', () => {
|
|
21
|
-
renderComponent();
|
|
22
|
-
expect(screen.getByText('Priority')).toBeInTheDocument();
|
|
23
|
-
// Should have 3 options
|
|
24
|
-
const options = screen.getAllByRole('button');
|
|
25
|
-
// Might be more buttons if there are help/manage links?
|
|
26
|
-
// LevelSelector usually just renders label + buttons.
|
|
27
|
-
// Let's filter by title.
|
|
28
|
-
expect(screen.getByTitle('Low')).toBeInTheDocument();
|
|
29
|
-
expect(screen.getByTitle('Medium')).toBeInTheDocument();
|
|
30
|
-
expect(screen.getByTitle('High')).toBeInTheDocument();
|
|
31
|
-
});
|
|
32
|
-
it('1.8 Highlights selected option', () => {
|
|
33
|
-
const { container } = renderComponent({ value: 'high' });
|
|
34
|
-
const highBtn = screen.getByTitle('High');
|
|
35
|
-
// Check for active class or style.
|
|
36
|
-
// Class names might be hashed, but `levelOptionFilled` or `active` concept.
|
|
37
|
-
// Let's check if it has the specific class for high priority or just check style.
|
|
38
|
-
// The implementation adds classes like `_levelOption_priority_high`.
|
|
39
|
-
// Let's assume it works if we can find it.
|
|
40
|
-
// Better: verify click triggers change.
|
|
41
|
-
fireEvent.click(highBtn);
|
|
42
|
-
// It's already high, but clicking again should still fire or be no-op?
|
|
43
|
-
// Let's click Low.
|
|
44
|
-
const lowBtn = screen.getByTitle('Low');
|
|
45
|
-
fireEvent.click(lowBtn);
|
|
46
|
-
expect(defaultProps.onChange).toHaveBeenCalledWith('low');
|
|
47
|
-
});
|
|
48
|
-
it('1.9 Visual check (snapshot-like)', () => {
|
|
49
|
-
// Select Low, so High should be dim
|
|
50
|
-
const { container } = renderComponent({ value: 'low' });
|
|
51
|
-
const highBtn = screen.getByTitle('High');
|
|
52
|
-
// Unselected options usually have lower opacity or transparent bg
|
|
53
|
-
expect(highBtn).toHaveStyle({ opacity: '0.15' });
|
|
54
|
-
});
|
|
55
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { fireEvent, render, screen } from '@testing-library/react';
|
|
3
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
-
import { Markdown } from './Markdown';
|
|
5
|
-
describe('Markdown Component', () => {
|
|
6
|
-
it('1.10 Renders basic text', () => {
|
|
7
|
-
render(_jsx(Markdown, { children: "Hello World" }));
|
|
8
|
-
expect(screen.getByText('Hello World')).toBeInTheDocument();
|
|
9
|
-
});
|
|
10
|
-
it('1.11 Renders inline code', () => {
|
|
11
|
-
render(_jsx(Markdown, { children: "`code`" }));
|
|
12
|
-
const code = screen.getByText('code');
|
|
13
|
-
expect(code.tagName).toBe('CODE');
|
|
14
|
-
});
|
|
15
|
-
it('1.12 Renders links', () => {
|
|
16
|
-
render(_jsx(Markdown, { children: "[Link](https://example.com)" }));
|
|
17
|
-
const link = screen.getByRole('link', { name: 'Link' });
|
|
18
|
-
expect(link).toHaveAttribute('href', 'https://example.com');
|
|
19
|
-
});
|
|
20
|
-
it('1.13 Renders GFM checkbox', () => {
|
|
21
|
-
render(_jsx(Markdown, { children: "- [ ] Task" }));
|
|
22
|
-
const checkbox = screen.getByRole('checkbox');
|
|
23
|
-
expect(checkbox).toBeInTheDocument();
|
|
24
|
-
expect(checkbox).not.toBeChecked();
|
|
25
|
-
});
|
|
26
|
-
it('1.14 Renders GFM checked checkbox', () => {
|
|
27
|
-
render(_jsx(Markdown, { children: "- [x] Done" }));
|
|
28
|
-
const checkbox = screen.getByRole('checkbox');
|
|
29
|
-
expect(checkbox).toBeChecked();
|
|
30
|
-
});
|
|
31
|
-
it('1.15 Linkifies task IDs when callback is provided', () => {
|
|
32
|
-
const onTaskIdClick = vi.fn();
|
|
33
|
-
render(_jsx(Markdown, { onTaskIdClick: onTaskIdClick, children: "See task-1771422284342-ummpvmvb7 for details" }));
|
|
34
|
-
const button = screen.getByRole('button', { name: 'task-1771422284342-ummpvmvb7' });
|
|
35
|
-
fireEvent.click(button);
|
|
36
|
-
expect(onTaskIdClick).toHaveBeenCalledWith('task-1771422284342-ummpvmvb7');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
5
|
-
import { MultiSelectFilter } from './MultiSelectFilter';
|
|
6
|
-
describe('MultiSelectFilter Component', () => {
|
|
7
|
-
const defaultProps = {
|
|
8
|
-
label: 'Category',
|
|
9
|
-
options: [
|
|
10
|
-
{ value: 'General', label: 'General' },
|
|
11
|
-
{ value: 'Backend', label: 'Backend' },
|
|
12
|
-
{ value: 'Frontend', label: 'Frontend' }
|
|
13
|
-
],
|
|
14
|
-
selected: ['General', 'Backend', 'Frontend'], // All selected initially
|
|
15
|
-
onChange: vi.fn(),
|
|
16
|
-
type: 'category'
|
|
17
|
-
};
|
|
18
|
-
const renderComponent = (props = {}) => {
|
|
19
|
-
return render(_jsx(MultiSelectFilter, { ...defaultProps, ...props }));
|
|
20
|
-
};
|
|
21
|
-
it('1.1 Renders correctly with label', () => {
|
|
22
|
-
renderComponent();
|
|
23
|
-
// Should show "All Categories" since all are selected and label is "Category"
|
|
24
|
-
expect(screen.getByText('All Categories')).toBeInTheDocument();
|
|
25
|
-
});
|
|
26
|
-
it('1.2 Opens dropdown on click', async () => {
|
|
27
|
-
const user = userEvent.setup();
|
|
28
|
-
renderComponent();
|
|
29
|
-
const button = screen.getByRole('button');
|
|
30
|
-
await user.click(button);
|
|
31
|
-
// Dropdown content should appear
|
|
32
|
-
expect(screen.getByText('Toggle All')).toBeInTheDocument();
|
|
33
|
-
expect(screen.getByText('General')).toBeInTheDocument();
|
|
34
|
-
expect(screen.getByText('Backend')).toBeInTheDocument();
|
|
35
|
-
});
|
|
36
|
-
it('1.3 Toggle selection', async () => {
|
|
37
|
-
const user = userEvent.setup();
|
|
38
|
-
renderComponent();
|
|
39
|
-
await user.click(screen.getByRole('button')); // Open
|
|
40
|
-
// Click the option div or checkbox? Implementation has onClick on div.
|
|
41
|
-
const backendOption = screen.getByText('Backend');
|
|
42
|
-
await user.click(backendOption);
|
|
43
|
-
// Should call onChange with new array (removing Backend)
|
|
44
|
-
expect(defaultProps.onChange).toHaveBeenCalledWith(['General', 'Frontend']);
|
|
45
|
-
});
|
|
46
|
-
it('1.4 Toggle All', async () => {
|
|
47
|
-
const user = userEvent.setup();
|
|
48
|
-
// Case: Some selected -> Click Toggle All -> Select All
|
|
49
|
-
renderComponent({ selected: ['General'] });
|
|
50
|
-
await user.click(screen.getByRole('button'));
|
|
51
|
-
const toggleAll = screen.getByText('Toggle All');
|
|
52
|
-
await user.click(toggleAll);
|
|
53
|
-
// Should select all
|
|
54
|
-
expect(defaultProps.onChange).toHaveBeenCalledWith(['General', 'Backend', 'Frontend']);
|
|
55
|
-
});
|
|
56
|
-
it('1.5 Shows count when partially selected', () => {
|
|
57
|
-
renderComponent({ selected: ['General', 'Backend'] }); // 2 out of 3
|
|
58
|
-
// Should show "2" or "2 selected" or similar. Implementation check:
|
|
59
|
-
// Text is `selected.length === options.length ? 'All' : selected.length === 0 ? 'None' : pluralize(selected.length, 'Category', 'Categories')`
|
|
60
|
-
// pluralize: `${count} ${count === 1 ? singular : plural}`. But wait, `pluralize` usually returns string "2 Categories".
|
|
61
|
-
// Let's check implementation if needed, but "2 Categories" is expected.
|
|
62
|
-
expect(screen.getByText('2 Categories')).toBeInTheDocument();
|
|
63
|
-
});
|
|
64
|
-
it('1.6 Closes on outside click', async () => {
|
|
65
|
-
const user = userEvent.setup();
|
|
66
|
-
renderComponent();
|
|
67
|
-
await user.click(screen.getByRole('button'));
|
|
68
|
-
expect(screen.getByText('Toggle All')).toBeVisible();
|
|
69
|
-
await user.click(document.body);
|
|
70
|
-
// Expect dropdown to be gone/hidden.
|
|
71
|
-
// Note: checking visibility might require checking if element is removed from DOM.
|
|
72
|
-
expect(screen.queryByText('Toggle All')).not.toBeInTheDocument();
|
|
73
|
-
});
|
|
74
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
4
|
-
import { TaxonomyDropdown } from './TaxonomyDropdown';
|
|
5
|
-
describe('TaxonomyDropdown', () => {
|
|
6
|
-
const mockOptions = [
|
|
7
|
-
{ value: 'frontend', label: 'Frontend', icon: 'Code', color: 'blue-500' },
|
|
8
|
-
{ value: 'backend', label: 'Backend', icon: 'Server', color: 'green-500' },
|
|
9
|
-
{ value: 'database', label: 'Database', icon: 'Database', color: 'purple-500' }
|
|
10
|
-
];
|
|
11
|
-
it('renders with placeholder when no value selected', () => {
|
|
12
|
-
render(_jsx(TaxonomyDropdown, { value: "", options: mockOptions, onChange: vi.fn(), placeholder: "Select category..." }));
|
|
13
|
-
expect(screen.getByText('Select category...')).toBeInTheDocument();
|
|
14
|
-
});
|
|
15
|
-
it('displays selected option correctly', () => {
|
|
16
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
17
|
-
expect(screen.getByText('Frontend')).toBeInTheDocument();
|
|
18
|
-
});
|
|
19
|
-
it('opens dropdown when clicked', () => {
|
|
20
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
21
|
-
const button = screen.getByRole('combobox');
|
|
22
|
-
fireEvent.click(button);
|
|
23
|
-
// All options should be visible
|
|
24
|
-
expect(screen.getAllByText('Frontend')).toHaveLength(2); // One in button, one in dropdown
|
|
25
|
-
expect(screen.getByText('Backend')).toBeInTheDocument();
|
|
26
|
-
expect(screen.getByText('Database')).toBeInTheDocument();
|
|
27
|
-
});
|
|
28
|
-
it('calls onChange when option is selected', () => {
|
|
29
|
-
const handleChange = vi.fn();
|
|
30
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: handleChange }));
|
|
31
|
-
// Open dropdown
|
|
32
|
-
const button = screen.getByRole('combobox');
|
|
33
|
-
fireEvent.click(button);
|
|
34
|
-
// Click Backend option
|
|
35
|
-
const backendOption = screen.getAllByText('Backend')[0];
|
|
36
|
-
fireEvent.click(backendOption);
|
|
37
|
-
expect(handleChange).toHaveBeenCalledWith('backend');
|
|
38
|
-
});
|
|
39
|
-
it('closes dropdown after selection', () => {
|
|
40
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
41
|
-
// Open dropdown
|
|
42
|
-
const button = screen.getByRole('combobox');
|
|
43
|
-
fireEvent.click(button);
|
|
44
|
-
// Select an option
|
|
45
|
-
const backendOption = screen.getAllByText('Backend')[0];
|
|
46
|
-
fireEvent.click(backendOption);
|
|
47
|
-
// Dropdown should be closed (only selected value visible in button)
|
|
48
|
-
expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
|
49
|
-
});
|
|
50
|
-
it('opens dropdown with Enter key', () => {
|
|
51
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
52
|
-
const button = screen.getByRole('combobox');
|
|
53
|
-
fireEvent.keyDown(button, { key: 'Enter' });
|
|
54
|
-
expect(screen.getByRole('listbox')).toBeInTheDocument();
|
|
55
|
-
});
|
|
56
|
-
it('opens dropdown with Space key', () => {
|
|
57
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
58
|
-
const button = screen.getByRole('combobox');
|
|
59
|
-
fireEvent.keyDown(button, { key: ' ' });
|
|
60
|
-
expect(screen.getByRole('listbox')).toBeInTheDocument();
|
|
61
|
-
});
|
|
62
|
-
it('closes dropdown with Escape key', () => {
|
|
63
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
64
|
-
const button = screen.getByRole('combobox');
|
|
65
|
-
// Open dropdown
|
|
66
|
-
fireEvent.click(button);
|
|
67
|
-
expect(screen.getByRole('listbox')).toBeInTheDocument();
|
|
68
|
-
// Close with Escape
|
|
69
|
-
fireEvent.keyDown(button, { key: 'Escape' });
|
|
70
|
-
expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
|
71
|
-
});
|
|
72
|
-
it('navigates options with Arrow keys', () => {
|
|
73
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
74
|
-
const button = screen.getByRole('combobox');
|
|
75
|
-
// Open dropdown
|
|
76
|
-
fireEvent.keyDown(button, { key: 'Enter' });
|
|
77
|
-
// Navigate down
|
|
78
|
-
fireEvent.keyDown(button, { key: 'ArrowDown' });
|
|
79
|
-
// The second option should be highlighted (visual check via class)
|
|
80
|
-
const options = screen.getAllByRole('option');
|
|
81
|
-
// Frontend is at index 0, after ArrowDown, Backend at index 1 should be highlighted
|
|
82
|
-
// Additional arrow navigation tests can be added
|
|
83
|
-
});
|
|
84
|
-
it('selects option with Enter key when highlighted', () => {
|
|
85
|
-
const handleChange = vi.fn();
|
|
86
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: handleChange }));
|
|
87
|
-
const button = screen.getByRole('combobox');
|
|
88
|
-
// Open dropdown
|
|
89
|
-
fireEvent.keyDown(button, { key: 'Enter' });
|
|
90
|
-
// Navigate to next option
|
|
91
|
-
fireEvent.keyDown(button, { key: 'ArrowDown' });
|
|
92
|
-
// Select with Enter
|
|
93
|
-
fireEvent.keyDown(button, { key: 'Enter' });
|
|
94
|
-
expect(handleChange).toHaveBeenCalled();
|
|
95
|
-
});
|
|
96
|
-
it('is disabled when disabled prop is true', () => {
|
|
97
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn(), disabled: true }));
|
|
98
|
-
const button = screen.getByRole('combobox');
|
|
99
|
-
expect(button).toBeDisabled();
|
|
100
|
-
// Should not open when clicked
|
|
101
|
-
fireEvent.click(button);
|
|
102
|
-
expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
|
103
|
-
});
|
|
104
|
-
it('has proper ARIA attributes', () => {
|
|
105
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
106
|
-
const button = screen.getByRole('combobox');
|
|
107
|
-
expect(button).toHaveAttribute('aria-haspopup', 'listbox');
|
|
108
|
-
expect(button).toHaveAttribute('aria-expanded', 'false');
|
|
109
|
-
// Open dropdown
|
|
110
|
-
fireEvent.click(button);
|
|
111
|
-
expect(button).toHaveAttribute('aria-expanded', 'true');
|
|
112
|
-
const listbox = screen.getByRole('listbox');
|
|
113
|
-
expect(listbox).toBeInTheDocument();
|
|
114
|
-
const options = screen.getAllByRole('option');
|
|
115
|
-
expect(options).toHaveLength(3);
|
|
116
|
-
});
|
|
117
|
-
it('displays icons for each option', () => {
|
|
118
|
-
render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
|
|
119
|
-
// Open dropdown
|
|
120
|
-
const button = screen.getByRole('combobox');
|
|
121
|
-
fireEvent.click(button);
|
|
122
|
-
// Check that all options are rendered
|
|
123
|
-
const options = screen.getAllByRole('option');
|
|
124
|
-
expect(options).toHaveLength(3);
|
|
125
|
-
// Each option should display its label
|
|
126
|
-
expect(screen.getAllByText('Frontend').length).toBeGreaterThanOrEqual(1);
|
|
127
|
-
expect(screen.getByText('Backend')).toBeInTheDocument();
|
|
128
|
-
expect(screen.getByText('Database')).toBeInTheDocument();
|
|
129
|
-
});
|
|
130
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
4
|
-
import { TopNoticeLayer } from './TopNoticeLayer';
|
|
5
|
-
describe('TopNoticeLayer', () => {
|
|
6
|
-
it('renders nothing when no notice is provided', () => {
|
|
7
|
-
const { container } = render(_jsx(TopNoticeLayer, { notice: null }));
|
|
8
|
-
expect(container.firstChild).toBeNull();
|
|
9
|
-
});
|
|
10
|
-
it('renders success notices as status role', () => {
|
|
11
|
-
render(_jsx(TopNoticeLayer, { notice: { message: 'Saved', tone: 'success' } }));
|
|
12
|
-
expect(screen.getByRole('status')).toHaveTextContent('Saved');
|
|
13
|
-
});
|
|
14
|
-
it('renders error notices as alert role', () => {
|
|
15
|
-
render(_jsx(TopNoticeLayer, { notice: { message: 'Failed', tone: 'error' } }));
|
|
16
|
-
expect(screen.getByRole('alert')).toHaveTextContent('Failed');
|
|
17
|
-
});
|
|
18
|
-
it('calls dismiss handler', async () => {
|
|
19
|
-
const onDismiss = vi.fn();
|
|
20
|
-
render(_jsx(TopNoticeLayer, { notice: { message: 'Saved', tone: 'info' }, onDismiss: onDismiss }));
|
|
21
|
-
const button = screen.getByRole('button', { name: 'Dismiss notice' });
|
|
22
|
-
button.click();
|
|
23
|
-
expect(onDismiss).toHaveBeenCalledTimes(1);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
5
|
-
import { AppShellHeader } from './AppShellHeader';
|
|
6
|
-
import logoDark from '../../assets/branding/logos/logo_dark.svg';
|
|
7
|
-
describe('AppShellHeader', () => {
|
|
8
|
-
it('shows HQ suffix in cloud runtime', () => {
|
|
9
|
-
render(_jsx(AppShellHeader, { runtimeMode: "cloud" }));
|
|
10
|
-
expect(screen.getByText('TaskForce')).toBeInTheDocument();
|
|
11
|
-
expect(screen.getByText('HQ')).toBeInTheDocument();
|
|
12
|
-
});
|
|
13
|
-
it('does not show HQ suffix in local runtime', () => {
|
|
14
|
-
render(_jsx(AppShellHeader, { runtimeMode: "local" }));
|
|
15
|
-
expect(screen.getByText('TaskForce')).toBeInTheDocument();
|
|
16
|
-
expect(screen.queryByText('HQ')).not.toBeInTheDocument();
|
|
17
|
-
});
|
|
18
|
-
it('uses the dark logo for light-family themes', () => {
|
|
19
|
-
render(_jsx(AppShellHeader, { runtimeMode: "local", theme: "dawn" }));
|
|
20
|
-
expect(screen.getByAltText('Taskforce Logo')).toHaveAttribute('src', logoDark);
|
|
21
|
-
});
|
|
22
|
-
it('calls the brand click handler from the logo button', async () => {
|
|
23
|
-
const onBrandClick = vi.fn();
|
|
24
|
-
render(_jsx(AppShellHeader, { runtimeMode: "local", onBrandClick: onBrandClick }));
|
|
25
|
-
await userEvent.click(screen.getByRole('button', { name: 'Go to Kanban' }));
|
|
26
|
-
expect(onBrandClick).toHaveBeenCalledTimes(1);
|
|
27
|
-
});
|
|
28
|
-
it('copies the workspace id from the project badge', async () => {
|
|
29
|
-
const writeText = vi.fn().mockResolvedValue(undefined);
|
|
30
|
-
Object.defineProperty(navigator, 'clipboard', {
|
|
31
|
-
configurable: true,
|
|
32
|
-
value: { writeText }
|
|
33
|
-
});
|
|
34
|
-
render(_jsx(AppShellHeader, { runtimeMode: "local", projectName: "Roadmap", currentWorkspaceId: "workspace-alpha" }));
|
|
35
|
-
await userEvent.click(screen.getByRole('button', { name: 'Roadmap' }));
|
|
36
|
-
expect(writeText).toHaveBeenCalledWith('workspace-alpha');
|
|
37
|
-
});
|
|
38
|
-
it('hides a stale project label while cloud runtime is still on the default workspace', () => {
|
|
39
|
-
render(_jsx(AppShellHeader, { runtimeMode: "cloud", projectName: "Old Workspace", currentWorkspaceId: "default" }));
|
|
40
|
-
expect(screen.queryByText('Old Workspace')).not.toBeInTheDocument();
|
|
41
|
-
});
|
|
42
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|