Skip to content

migrate services, nodes, service instances, intentions and access control pages to new UI - #23707

Closed
rishabh-gupta-hashicorp wants to merge 26 commits into
mainfrom
rishabh-gupta/ui/migrate-list-pages-to-new-table-ui
Closed

migrate services, nodes, service instances, intentions and access control pages to new UI#23707
rishabh-gupta-hashicorp wants to merge 26 commits into
mainfrom
rishabh-gupta/ui/migrate-list-pages-to-new-table-ui

Conversation

@rishabh-gupta-hashicorp

Copy link
Copy Markdown
Contributor

Description

Testing & Reproduction steps

Links

PR Checklist

  • updated test coverage
  • external facing docs updated
  • appropriate backport labels added
  • not a security concern

PCI review checklist

  • I have documented a clear reason for, and description of, the change I am making.

  • If applicable, I've documented a plan to revert these changes if they require more than reverting the pull request.

  • If applicable, I've documented the impact of any changes to security controls.

    Examples of changes to security controls include using new access control methods, adding or removing logging pipelines, etc.

@rishabh-gupta-hashicorp
rishabh-gupta-hashicorp requested review from a team as code owners July 2, 2026 06:56
@github-actions github-actions Bot added the theme/ui Anything related to the UI label Jul 2, 2026
@suresh-hashicorp
suresh-hashicorp force-pushed the rishabh-gupta/ui/migrate-list-pages-to-new-table-ui branch from 35ee7a1 to 097e06a Compare July 15, 2026 06:04
suresh-hashicorp added a commit that referenced this pull request Jul 17, 2026
…engine constraint

- Add $schema, installCommand (pnpm install --no-frozen-lockfile),
  buildCommand (make dist-vercel), and outputDirectory to ui/vercel.json
- Remove unsupported 'public' flag from ui/vercel.json
- Relax engines.pnpm constraint from '>= 10.*' to '>= 9' in ui/package.json
  so Vercel's bundled pnpm 9 can satisfy it during install
- Document workspace Vercel config location in ui/README.md

Backport of changes from #23707.
suresh-hashicorp added a commit that referenced this pull request Jul 17, 2026
…engine constraint

- Add $schema, installCommand (pnpm install --no-frozen-lockfile),
  buildCommand (make dist-vercel), and outputDirectory to ui/vercel.json
- Remove unsupported 'public' flag from ui/vercel.json
- Relax engines.pnpm constraint from '>= 10.*' to '>= 9' in ui/package.json
  so Vercel's bundled pnpm 9 can satisfy it during install
- Document workspace Vercel config location in ui/README.md

Backport of changes from #23707.
@rishabh-gupta-hashicorp rishabh-gupta-hashicorp added the backport/all Apply backports for all active releases per .release/versions.hcl label Jul 21, 2026
rishabh-gupta-hashicorp and others added 7 commits August 3, 2026 08:29
- Move Consul logo, help dropdown, and token selector from the dark side
  nav header into a full-width top bar using Hds::AppHeader

- Switch Hds::AppSideNav from dark to light theme by removing all dark
  palette CSS overrides; keep only structural layout rules

- Enable Frame.Header in app/index.hbs and add id='hds-main' to
  Frame.Main for AppHeader skip-link accessibility (WCAG 2.4.1)

- nav-selector: add @isInline, @preserveContentInDom, @matchToggleWidth,
  @color='secondary', @isFullWidth to the HDS Dropdown so the selector
  toggle fills its container and dropdown items are always in the DOM
  (required for acceptance test selectors to work after a dc toggle click)

- Add .hds-side-nav__dropdown { display: block } to override the
  inline-block imposed by @isInline so @isFullWidth can fill the li

- pageobject: add resetScope:true to authMenu and login clickables since
  they moved from [data-test-navigation] into the AppHeader

- consul/token/selector: change @listPosition to bottom-right on all
  three Dropdown instances so the token menu opens toward the right
  edge of the now-right-aligned header actions

- Fix a11y violations: remove duplicate role=navigation, remove
  duplicate aria-labelledby attrs on AppSideNav::List elements,
  restore id=contentinfo on the footer div

- app-test: assert AppHeader slot is rendered; remove old assertion that
  it should not exist

- datacenter/selector-test: stub router:main.location.hrefTo so
  @preserveContentInDom does not cause href-to failures in integration
  tests where the router location is a bare string
- Switch AppHeader::HomeLink from consul-color to the monochrome consul
  icon, which uses currentColor and can be styled via CSS

- Add .hds-app-header__home-link { color: #ffffff } so the icon appears
  white against the AppHeader dark surface

- Update public/assets/favicon.svg fill from #E03875 (pink) to #ffffff
  (white) to match the white icon shown in the new header design
- Switch AppHeader::HomeLink from consul-color to the monochrome consul
  icon, which uses currentColor and can be styled via CSS

- Add .hds-app-header__home-link { color: #ffffff } so the icon appears
  white against the AppHeader dark surface

- Update favicon.svg fill from #E03875 (pink) to #000000 (black),
  keeping the original transparent background

- Regenerate favicon.ico from updated SVG (16x16 + 32x32, black icon,
  transparent background)
- kv-filter-test: update search selector from [name="s"] to
  [name="search"] to match the new Hds::FilterBar search input
- text-input-test: rewrite for the new flyout-based KV create flow;
  there is no longer a /kv/create sub-route — the Create button opens
  a flyout on the list page, so scope all interactions to dialog
@suresh-hashicorp
suresh-hashicorp force-pushed the rishabh-gupta/ui/migrate-list-pages-to-new-table-ui branch from 3c53602 to 9c8e400 Compare August 3, 2026 03:20
…res)

Migrate four ACL list feature files to native QUnit acceptance tests:
  - dc/acls/auth-methods/index.feature → index-test.js
  - dc/acls/policies/index.feature     → index-test.js
  - dc/acls/roles/index.feature        → index-test.js
  - dc/acls/tokens/index.feature       → index-test.js

Root cause of the 16 ENT failures: the Yadda step
  'I type "..." into "input[type=search]"'
matched two elements under CONSUL_NSPACES_ENABLED=1 — the list
FilterBar search input AND the namespace side-nav selector search.
The native QUnit tests use the unambiguous '.hds-filter-bar__search'
selector, eliminating the collision.

Additional fixes made during migration:
- Roles/tokens policy assertions: page object text() returned only the
  first character of HDS Badge text (nested spans); switched to
  assert.dom(...).hasAttribute('aria-label', ...) which uses the
  aria-label the RulesetBadge component sets.
- Tokens no-write scenario: direct document.cookie writes are not
  picked up by the Ember env service; use api.server.setCookie() instead.

Also deletes the four matching *-steps.js stubs (now unused) and
updates YADDA_MIGRATION.md tracker:
  - 117 → 113 feature files remaining
  - 277 → 265 scenarios remaining
  - 12  → 16  feature files migrated
  - 16  → 28  scenarios migrated
…ailures)

Two app templates called href-to 'dc.services.index' without passing
the required dc dynamic-segment model. Under CE the router tolerates
this (it infers dc from the active transition context), but under ENT
the custom location service throws:
  'More context objects were passed than there are dynamic segments
   for the route: dc.services.index'

Fixes:
- topology-metrics/card/index.hbs: add @dc as positional model arg.
- consul/nspace/selector/index.hbs: add @dc.Name as positional model
  arg and remove the now-redundant dc= key from the params hash.

This resolves the 8 ENT failures in:
  - dc/services/show-routing.feature (4 namespace variants)
  - dc/services/show/dc-switch.feature (4 namespace variants)
All 19 lint errors were prettier/prettier violations in the legacy
scenario helper callbacks — Prettier collapses short array literals
and reshapes function argument indentation differently from how the
file was written by hand. Auto-fixed with pnpm exec prettier --write.
rishabh-gupta-hashicorp and others added 9 commits August 3, 2026 11:45
After cherry-picking 097cf32 (kv page ui implementation), the KV
create flow uses a dedicated dc.kv.root-create route again instead of
a flyout/dialog. Update the test to:
- navigate via [data-test-create] button click (no dialog scope)
- interact with form fields without 'dialog' prefix
- assert submit enabled via assert.dom('main [type=submit]').isNotDisabled
  instead of page().submitIsEnabled (which required currentPage tracking
  via visit())
The KV create route works identically regardless of namespace context.
Under CONSUL_NSPACES_ENABLED=1 the nspaceScenario matrix was running the
test with nspace='default' and 'team-1', but the app redirects ~default
to the non-prefixed URL, causing the currentURL assertion to fail.

The original .feature had no namespace annotation; mark the QUnit port
with notNamespaceable:true to match that intent.
- global-setup: fall back to setting consul:token via localStorage when
  the UI login flow is unavailable (ember serve has ACLsEnabled=false
  by default; CI builds served by the Go binary have it true).
  Resolves token from /v1/acl/token/self to capture full AccessorID/
  Namespace/Partition shape before saving storageState.

- openKVCreateInFolder: folder rows render the name as a <button>
  (they expand inline), not a <link>.  Fix the tr filter to use
  getByRole('button') and fix the actions toggle to use getByLabel
  ('Open actions menu') instead of getByRole('button',{name:'More'}).

- should create folder and key inside it: clicking a folder button
  expands it inline; there is no page navigation.  Replace the
  toHaveURL(/e2e-folder/) assertion with a visibility wait for the
  child row button.
@suresh-hashicorp
suresh-hashicorp force-pushed the rishabh-gupta/ui/migrate-list-pages-to-new-table-ui branch from 9ce210d to d9998d8 Compare August 3, 2026 15:13
@rishabh-gupta-hashicorp

rishabh-gupta-hashicorp commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

New PR with feature branch for these changes - #23778

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport/all Apply backports for all active releases per .release/versions.hcl theme/ui Anything related to the UI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants