fix(wizard): wire pixel-port testids for cosmetic regression guards (#203)

Renames three testids on the Sovereign-provision surfaces to match the
canonical anchors the new e2e/cosmetic-guards.spec.ts (issue #187) looks
up:

  • Sidebar.tsx aside root: sov-sidebar → admin-sidebar
  • JobCard.tsx row button: sov-job-row-{id} → job-row-{id}
  • JobCard.tsx expand panel: sov-job-panel-{id} → job-expansion-{id}

Pre-existing in-tree tests that referenced the old testids
(Sidebar.test.tsx, AppsPage.test.tsx, JobCard.test.tsx) are updated to
match — all 238 unit tests still pass locally (`npm test`).

These three testids are the missing locator anchors for the upcoming
feat/cosmetic-regression-guards spec (#179 logo tile + #187 pixel-port
guards). Wiring them as a prerequisite PR keeps the regression-guards
PR review-clean (testid plumbing vs. test definitions are separate
concerns).

Refs: #187, #179

Co-authored-by: hatiyildiz <hatice.yildiz@openova.io>
This commit is contained in:
e3mrah 2026-04-29 22:29:41 +04:00 committed by GitHub
parent ca5713d7bb
commit 04bc7bde0e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 13 additions and 13 deletions

View File

@ -77,7 +77,7 @@ describe('AppsPage — header', () => {
it('mounts inside the PortalShell (sidebar present)', async () => {
renderProvision('d-1')
expect(await screen.findByTestId('sov-portal-shell')).toBeTruthy()
expect(screen.getByTestId('sov-sidebar')).toBeTruthy()
expect(screen.getByTestId('admin-sidebar')).toBeTruthy()
})
})

View File

@ -113,7 +113,7 @@ describe('JobCard — chrome', () => {
describe('JobCard — expand / collapse', () => {
it('default-expands a running job', async () => {
renderWithRouter(<JobCard job={RUNNING_JOB} deploymentId="d-1" />)
const panel = await screen.findByTestId(`sov-job-panel-${RUNNING_JOB.id}`)
const panel = await screen.findByTestId(`job-expansion-${RUNNING_JOB.id}`)
expect(panel).toBeTruthy()
// All three steps render
expect(within(panel).getByTestId('sov-step-0')).toBeTruthy()
@ -124,21 +124,21 @@ describe('JobCard — expand / collapse', () => {
it('default-collapses a pending job', async () => {
renderWithRouter(<JobCard job={PENDING_INFRA_JOB} deploymentId="d-1" />)
expect(await screen.findByTestId(`sov-job-card-${PENDING_INFRA_JOB.id}`)).toBeTruthy()
expect(screen.queryByTestId(`sov-job-panel-${PENDING_INFRA_JOB.id}`)).toBeNull()
expect(screen.queryByTestId(`job-expansion-${PENDING_INFRA_JOB.id}`)).toBeNull()
})
it('clicking the row toggles expansion', async () => {
renderWithRouter(<JobCard job={PENDING_INFRA_JOB} deploymentId="d-1" />)
const row = await screen.findByTestId(`sov-job-row-${PENDING_INFRA_JOB.id}`)
const row = await screen.findByTestId(`job-row-${PENDING_INFRA_JOB.id}`)
fireEvent.click(row)
expect(screen.queryByTestId(`sov-job-panel-${PENDING_INFRA_JOB.id}`)).toBeTruthy()
expect(screen.queryByTestId(`job-expansion-${PENDING_INFRA_JOB.id}`)).toBeTruthy()
fireEvent.click(row)
expect(screen.queryByTestId(`sov-job-panel-${PENDING_INFRA_JOB.id}`)).toBeNull()
expect(screen.queryByTestId(`job-expansion-${PENDING_INFRA_JOB.id}`)).toBeNull()
})
it('respects defaultExpanded={true}', async () => {
renderWithRouter(<JobCard job={PENDING_INFRA_JOB} deploymentId="d-1" defaultExpanded />)
expect(await screen.findByTestId(`sov-job-panel-${PENDING_INFRA_JOB.id}`)).toBeTruthy()
expect(await screen.findByTestId(`job-expansion-${PENDING_INFRA_JOB.id}`)).toBeTruthy()
})
})
@ -162,7 +162,7 @@ describe('JobCard — app-name link', () => {
describe('JobCard — empty steps', () => {
it('shows a placeholder when an expanded job has no steps yet', async () => {
renderWithRouter(<JobCard job={PENDING_INFRA_JOB} deploymentId="d-1" defaultExpanded />)
const panel = await screen.findByTestId(`sov-job-panel-${PENDING_INFRA_JOB.id}`)
const panel = await screen.findByTestId(`job-expansion-${PENDING_INFRA_JOB.id}`)
expect(panel.textContent).toContain('No steps yet')
})
})

View File

@ -54,7 +54,7 @@ export function JobCard({ job, deploymentId, defaultExpanded }: JobCardProps) {
data-job-kind={job.app === 'infrastructure' ? 'provision' : job.app === 'cluster-bootstrap' ? 'bootstrap' : 'install'}
data-job-status={job.status}
aria-expanded={expanded}
data-testid={`sov-job-row-${job.id}`}
data-testid={`job-row-${job.id}`}
>
{/* Status icon (running spinner / success check / failed X / pending clock) */}
<div className="flex h-10 w-10 items-center justify-center rounded-lg bg-[var(--color-accent)]/10">
@ -132,7 +132,7 @@ export function JobCard({ job, deploymentId, defaultExpanded }: JobCardProps) {
{expanded ? (
<div
className="border-t border-[var(--color-border)] p-4"
data-testid={`sov-job-panel-${job.id}`}
data-testid={`job-expansion-${job.id}`}
>
{job.steps.length === 0 ? (
<p className="text-xs text-[var(--color-text-dimmer)]">

View File

@ -58,7 +58,7 @@ beforeEach(() => {})
describe('Sidebar — chrome', () => {
it('renders the OpenOva mark + wordmark in the header', async () => {
renderSidebarAt('/provision/d-test-1234')
const sidebar = await screen.findByTestId('sov-sidebar')
const sidebar = await screen.findByTestId('admin-sidebar')
// SVG logo present
expect(sidebar.querySelector('svg')).toBeTruthy()
expect(within(sidebar).getByText('OpenOva')).toBeTruthy()
@ -113,7 +113,7 @@ describe('Sidebar — navigation', () => {
describe('Sidebar — operator card', () => {
it('renders Operator + "Provisioning session" footer text', async () => {
renderSidebarAt('/provision/d-test-1234')
const sidebar = await screen.findByTestId('sov-sidebar')
const sidebar = await screen.findByTestId('admin-sidebar')
expect(within(sidebar).getByText('Operator')).toBeTruthy()
expect(within(sidebar).getByText('Provisioning session')).toBeTruthy()
})

View File

@ -87,7 +87,7 @@ export function Sidebar({ deploymentId, sovereignFQDN }: SidebarProps) {
return (
<aside
className="fixed left-0 top-0 flex h-screen w-56 flex-col border-r border-[var(--color-border)] bg-[var(--color-bg-2)]"
data-testid="sov-sidebar"
data-testid="admin-sidebar"
>
{/* Logo + Sovereign label (replaces canonical Tenant switcher) */}
<div className="border-b border-[var(--color-border)]">