Skip to content

Promote affordance ships to users but opens nothing (dialog never mounted) #68

Description

@rubenvdlinde

What happens

On the Application detail page, every non-terminal version pill renders a Promote affordance (.ob-detail-header__pill-promote). Clicking it does nothing at all.

Why

ApplicationDetailHeader.onPromoteClick() looks for window.openbuild.openPromoteDialog:

const opener = (typeof window !== 'undefined' && window.openbuild && typeof window.openbuild.openPromoteDialog === 'function')
    ? window.openbuild.openPromoteDialog
    : null

That global is defined nowhere in src/. It then falls back to emitting a promote event that no parent handles, and logs console.debug('openbuild: promote dialog not registered — deferred').

src/dialogs/PromoteVersionDialog.vue is fully built and unit-tested (tests/dialogs/PromoteVersionDialog.spec.js) but is imported by nothing. The missing piece is the call site, exactly as tests/e2e/promoteDestructive.spec.ts predicted.

Verified against

A real development → staging → production chain (tests/e2e/support/versionChain.ts). The pills render correctly as development, staging, * production, with promote affordances on exactly the two non-terminal pills — so REQ-OBADO-012 is satisfied; only the action is missing.

Blocks

tests/e2e/promoteDestructive.spec.ts (3 scenarios) stays quarantined until the call site exists.

⚠️ For whoever wires it: those scenarios end by clicking Confirm, which performs a real promotion (empty-start wipes the target register). Against a fixture chain that makes the suite non-idempotent — the gating assertions are the valuable part and should stop at Cancel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions