From 615b954c044be138d8fb5c8e1b56375c55def1da Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 13 May 2026 07:27:50 +0200 Subject: [PATCH] feat: add data-testid to Cn* components for journeydoc capture specs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds stable data-testid selectors to the high-traffic Cn* shell components so the journeydoc capture spec (ADR-030) on every Tier-4 Conduction app can target them without per-app instrumentation. The decidesk journeydoc pilot (ConductionNL/decidesk#195) found that most app chrome is rendered by @conduction/nextcloud-vue components, so doing this once in the lib helps every app at once. Purely additive — zero behaviour or styling impact, per the journeydoc-instrument convention. Testids follow the "cn--" naming convention from the journeydoc-instrument SKILL.md guide. Components instrumented (by surface): - Shell: CnAppRoot, CnAppNav, CnAppLoading, CnDependencyMissing - Pages: CnPageRenderer, CnPageHeader, CnIndexPage, CnDetailPage, CnDashboardPage, CnSettingsPage, CnSettingsSection, CnFormPage, CnLogsPage, CnFilesPage, CnMapPage, CnWikiPage, CnChatPage - Lists: CnDataTable (table + rows + empty) - Sidebar: CnObjectSidebar (root + each built-in tab + registry tabs + consumer tabs) - Modals: CnFormDialog, CnDeleteDialog, CnCopyDialog, CnAdvancedFormDialog, CnTabbedFormDialog, CnMassDelete/Copy/Export/Import, CnSuggestFeatureModal, CnAiHistoryDialog - Actions: CnActionsBar (+ primary CTA + overflow menu), CnContextMenu, CnRowActions (per-item testid slugged from label), CnUserActionMenu - Filter: CnFilterBar, CnPagination - AI: CnAiCompanion, CnAiChatPanel, CnAiFloatingButton, CnAiInput, CnAiMessageList - Banners: CnLockedBanner --- src/components/CnActionsBar/CnActionsBar.vue | 6 +++-- .../CnAdvancedFormDialog.vue | 12 ++++++++-- .../CnAiCompanion/CnAiChatPanel.vue | 4 +++- .../CnAiCompanion/CnAiCompanion.vue | 2 +- .../CnAiCompanion/CnAiFloatingButton.vue | 1 + src/components/CnAiCompanion/CnAiInput.vue | 4 +++- .../CnAiCompanion/CnAiMessageList.vue | 2 +- src/components/CnAppLoading/CnAppLoading.vue | 2 +- src/components/CnAppNav/CnAppNav.vue | 7 ++++-- src/components/CnAppRoot/CnAppRoot.vue | 4 ++-- src/components/CnChatPage/CnChatPage.vue | 2 +- .../CnContextMenu/CnContextMenu.vue | 18 +++++++++++++++ src/components/CnCopyDialog/CnCopyDialog.vue | 12 ++++++++-- .../CnDashboardPage/CnDashboardPage.vue | 4 ++-- src/components/CnDataTable/CnDataTable.vue | 10 +++++---- .../CnDeleteDialog/CnDeleteDialog.vue | 12 ++++++++-- .../CnDependencyMissing.vue | 2 +- src/components/CnDetailPage/CnDetailPage.vue | 4 ++-- src/components/CnFilesPage/CnFilesPage.vue | 2 +- src/components/CnFilterBar/CnFilterBar.vue | 4 ++-- src/components/CnFormDialog/CnFormDialog.vue | 12 ++++++++-- src/components/CnFormPage/CnFormPage.vue | 2 +- src/components/CnIndexPage/CnIndexPage.vue | 2 +- .../CnLockedBanner/CnLockedBanner.vue | 3 ++- src/components/CnLogsPage/CnLogsPage.vue | 2 +- src/components/CnMapPage/CnMapPage.vue | 2 +- .../CnMassCopyDialog/CnMassCopyDialog.vue | 12 ++++++++-- .../CnMassDeleteDialog/CnMassDeleteDialog.vue | 12 ++++++++-- .../CnMassExportDialog/CnMassExportDialog.vue | 12 ++++++++-- .../CnMassImportDialog/CnMassImportDialog.vue | 12 ++++++++-- .../CnObjectSidebar/CnObjectSidebar.vue | 22 +++++++++++++------ src/components/CnPageHeader/CnPageHeader.vue | 6 ++--- .../CnPageRenderer/CnPageRenderer.vue | 2 ++ src/components/CnPagination/CnPagination.vue | 2 +- src/components/CnRowActions/CnRowActions.vue | 20 ++++++++++++++++- .../CnSettingsPage/CnSettingsPage.vue | 6 +++-- .../CnSettingsSection/CnSettingsSection.vue | 1 + .../CnSuggestFeatureModal.vue | 2 +- .../CnTabbedFormDialog/CnTabbedFormDialog.vue | 12 ++++++++-- .../CnUserActionMenu/CnUserActionMenu.vue | 2 +- src/components/CnWikiPage/CnWikiPage.vue | 2 +- src/dialogs/CnAiHistoryDialog.vue | 12 ++++++++-- 42 files changed, 208 insertions(+), 66 deletions(-) diff --git a/src/components/CnActionsBar/CnActionsBar.vue b/src/components/CnActionsBar/CnActionsBar.vue index 8e4c23b4c..158ee5c0e 100644 --- a/src/components/CnActionsBar/CnActionsBar.vue +++ b/src/components/CnActionsBar/CnActionsBar.vue @@ -1,5 +1,5 @@