Skip to content

Angular 21: standalone components, Vitest and angular19 CI - #1524

Merged
renemadsen merged 4 commits into
angular19from
ng21/migrate
Oct 18, 2026
Merged

renemadsen merged 4 commits into
angular19from
ng21/migrate

Conversation

@renemadsen

Copy link
Copy Markdown
Member

Part of the Angular 21 upgrade. The frontend's angular19 branch is now on Angular 21 with standalone components and Vitest (microting/eform-angular-frontend#8155).

  • CI: PR CI checks out the frontend at the branch the PR targets. Corepack is enabled before every yarn install, because the frontend's angular19 pins Yarn 4. A new angular-unit-test job runs the plugin's specs with ng test.
  • Standalone: every component now imports exactly what its template uses. NgModule declarations are removed. MatDialogModule stays in the feature modules. ngx-charts components come in through NgxChartsModule.
  • IDs: the repeated IDs actionMenu, dashboardItem and dashboardViewItem are now indexed, with the Playwright and WDIO selectors updated to match.
  • Tests: 22 spec files (81 tests) are migrated from Jest to Vitest. The download specs now capture the real file output through a small testing/capture-downloads.ts helper, because vi.mock of module exports doesn't work under Angular's test builder.

Verified locally with ng build and ng test against frontend angular19, together with the other migrated plugins. Code reviewed. Not yet clicked through in a browser.

🤖 Generated with Claude Code

renemadsen and others added 3 commits October 18, 2026 08:00
PR CI checks out the frontend (and sibling plugins) at the branch the PR
targets instead of always stable. Corepack is enabled before every yarn
install, since the frontend's angular19 branch pins yarn@4; the Docker
build uses yarn for the frontend build as well. Dead WDIO config copies
are dropped (the frontend no longer has WDIO).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ngular 21

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 18, 2026 06:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broad standalone-component and test-runner migration still needs browser validation and final human review.

No open issues 🎉

What changed in this PR

Updates the Insight Dashboard plugin for the frontend’s Angular 21 migration, covering standalone components, Vitest, and CI integration.

Changes:

  • Moves template dependencies into standalone components and simplifies the feature module.
  • Migrates specs to Vitest with shared providers and download capture.
  • Adds unit-test CI jobs, enables Corepack, and updates selectors for indexed IDs.
File Description
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​testing/​common-providers.ts Adds shared test providers.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​testing/​capture-downloads.ts Captures downloads for assertions.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​layouts/​insight-dashboard-pn-layout.component.ts Imports standalone router outlet.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​insight-dashboard-pn.module.ts Replaces declarations with standalone imports.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​helpers/​tsv-export.helper.spec.ts Imports Vitest APIs.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configurations-page/​survey-configurations-page.component.ts Adds standalone template dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configurations-page/​survey-configurations-page.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configurations-page/​survey-configurations-page.component.html Indexes action-menu IDs.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-new/​survey-configuration-new.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-new/​survey-configuration-new.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-edit/​survey-configuration-edit.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-edit/​survey-configuration-edit.component.spec.ts Migrates setup and supplies dialog data.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-delete/​survey-configuration-delete.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-delete/​survey-configuration-delete.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-activate/​survey-configuration-status.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​surveys/​survey-configuration-activate/​survey-configuration-status.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​insight-dashboard-settings/​insight-dashboard-settings.component.ts Adds standalone settings dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-view/​dashboard-view.component.ts Imports standalone view dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-view/​dashboard-view.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-view/​dashboard-view.component.html Indexes dashboard-view item IDs.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-raw-data-view/​dashboard-raw-data-view.component.ts Adds standalone table dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-raw-data-view/​dashboard-raw-data-view.component.spec.ts Migrates mocks and download assertions.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-interviews-view/​dashboard-interviews-view.component.ts Adds standalone table dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-interviews-view/​dashboard-interviews-view.component.spec.ts Migrates mocks and download assertions.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-chart-view/​dashboard-chart-view.component.ts Imports chart and template dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-chart-view/​dashboard-chart-view.component.spec.ts Migrates standalone chart test setup.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-chart-data-view/​dashboard-chart-data-view.component.ts Adds standalone template dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-chart-data-view/​dashboard-chart-data-view.component.spec.ts Migrates setup and download assertions.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-block-view/​dashboard-block-view.component.ts Imports standalone child views.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​view/​dashboard-block-view/​dashboard-block-view.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-item-edit/​dashboard-item-edit.component.ts Imports standalone editor dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-item-edit/​dashboard-item-edit.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-interviews-edit/​dashboard-interviews-edit.component.ts Imports standalone grid.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-interviews-edit/​dashboard-interviews-edit.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-edit/​dashboard-edit.component.ts Imports editor and drag-and-drop dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-edit/​dashboard-edit.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-edit/​dashboard-edit.component.html Indexes dashboard-item IDs.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-edit-header/​dashboard-edit-header.component.ts Imports form and date-picker dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-edit-header/​dashboard-edit-header.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-delete/​dashboard-delete.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-delete/​dashboard-delete.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-copy/​dashboard-copy.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-copy/​dashboard-copy.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-chart-edit/​dashboard-chart-edit.component.ts Imports chart and template dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-chart-edit/​dashboard-chart-edit.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-chart-data-edit/​dashboard-chart-data-edit.component.ts Converts to standalone.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​edit/​dashboard-chart-data-edit/​dashboard-chart-data-edit.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​dashboards-page/​dashboards-page.component.ts Adds standalone page dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​dashboards-page/​dashboards-page.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​dashboards-page/​dashboards-page.component.html Indexes action-menu IDs.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​dashboard-new/​dashboard-new.component.ts Adds standalone dialog dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​dashboards/​dashboard-new/​dashboard-new.component.spec.ts Migrates setup to Vitest.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​answers/​answer-values-table/​answer-values-table.component.ts Imports standalone grid.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​answers/​answer-page/​answer-page.component.ts Adds standalone page dependencies.
eform-client/​src/​app/​plugins/​modules/​insight-dashboard-pn/​components/​answers/​answer-delete-modal/​answer-delete-modal.component.ts Adds standalone dialog dependencies.
eform-client/​playwright/​e2e/​plugins/​insight-dashboard-pn/​InsightDashboard-SurveysConfigs.page.ts Updates action-menu selectors.
eform-client/​playwright/​e2e/​plugins/​insight-dashboard-pn/​InsightDashboard-DashboardView.page.ts Counts indexed view items.
eform-client/​playwright/​e2e/​plugins/​insight-dashboard-pn/​InsightDashboard-Dashboards.page.ts Updates action-menu selector.
eform-client/​playwright/​e2e/​plugins/​insight-dashboard-pn/​InsightDashboard-DashboardEdit.page.ts Counts indexed editor items.
eform-client/​e2e/​Page objects/​InsightDashboard/​InsightDashboard-SurveysConfigs.page.ts Updates WDIO action-menu selectors.
eform-client/​e2e/​Page objects/​InsightDashboard/​InsightDashboard-DashboardView.page.ts Updates WDIO view-item selector.
eform-client/​e2e/​Page objects/​InsightDashboard/​InsightDashboard-Dashboards.page.ts Updates WDIO action-menu selector.
eform-client/​e2e/​Page objects/​InsightDashboard/​InsightDashboard-DashboardEdit.page.ts Updates WDIO editor-item selector.
Dockerfile Enables Corepack before installation.
.github/​workflows/​dotnet-core-pr.yml Aligns frontend checkout and adds unit tests.
.github/​workflows/​dotnet-core-master.yml Adds unit tests and enables Corepack.

Review effort: Balanced

… editing the next item

The add/copy buttons sit in the item's expansion panel header, so clicking
them also toggles that panel. ng-select 21 keeps a body-appended dropdown
glued to its select on scroll, so a dropdown opened on the next item while
the panel animates follows the select out of view and can't be clicked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 18, 2026 09:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The plugin-wide standalone migration still needs human browser validation of dialogs, charts, editing, and downloads.

No open issues 🎉

Review effort: Balanced

@renemadsen
renemadsen merged commit 490af21 into angular19 Oct 18, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants