Skip to content

OCPBUGS-82511: re-enable helm-release.feature#16274

Open
rhamilto wants to merge 1 commit intoopenshift:mainfrom
rhamilto:OCPBUGS-82511
Open

OCPBUGS-82511: re-enable helm-release.feature#16274
rhamilto wants to merge 1 commit intoopenshift:mainfrom
rhamilto:OCPBUGS-82511

Conversation

@rhamilto
Copy link
Copy Markdown
Member

@rhamilto rhamilto commented Apr 13, 2026

Summary by CodeRabbit

  • Tests
    • Re-enabled Helm Release feature tests for automated validation.
    • Enhanced catalog type selection verification to confirm correct page display.
    • Improved project creation workflow testing with refined error handling and permission checks.
    • Strengthened page heading verification across integration tests.

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 13, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@rhamilto: This pull request references Jira Issue OCPBUGS-82511, which is invalid:

  • expected the bug to target either version "4.22." or "openshift-4.22.", but it targets "4.23.0" instead

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 13, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: rhamilto

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added component/helm Related to helm-plugin kind/cypress Related to Cypress e2e integration testing approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Apr 13, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 13, 2026

Walkthrough

This PR updates integration test support code and feature files across multiple packages. Changes include removing feature disablement comment and @manual tag from the Helm Release feature, adding title verification to catalog type selection, refactoring project selection logic with permission-based creation gating, and adjusting page heading assertions from visibility to existence checks.

Changes

Cohort / File(s) Summary
Feature File Updates
frontend/packages/helm-plugin/integration-tests/features/helm-release.feature
Removed disabled feature header comment (OCPBUGS-82511 reference) and removed @manual tag, leaving only @helm @smoke`` tags.
Catalog Page Verification
frontend/packages/dev-console/integration-tests/support/pages/catalog-page.ts
Added verifyPageTitle(type) call after catalog type selection to assert the details page title contains the selected type.
App Page Project Selection
frontend/packages/dev-console/integration-tests/support/pages/app.ts
Refactored selectOrCreateProject method with permission-based creation gating: added page heading existence check, cached user-menu text for conditional branching, relaxed empty-state assertion for non-admin users to check container existence, and conditioned creation attempts on presence of create-action dropdown entry with descriptive error handling.
Details Page Assertion
frontend/packages/integration-tests/views/details-page.ts
Changed titleShouldContain assertion for [data-test="page-heading"] from should('be.visible') to should('exist').

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

🚥 Pre-merge checks | ✅ 10
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: re-enabling the helm-release.feature test, which aligns directly with the primary modification shown in the raw summary.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Stable And Deterministic Test Names ✅ Passed PR modifies only TypeScript and Gherkin files; Ginkgo test name check is not applicable.
Test Structure And Quality ✅ Passed The custom check for Ginkgo test code is not applicable as the PR contains only Cypress integration tests and Gherkin feature files, not Go Ginkgo tests.
Microshift Test Compatibility ✅ Passed The custom check targets new Ginkgo e2e tests in Go. This PR modifies only frontend integration tests in TypeScript and Gherkin using Cypress BDD, with no Go-based Ginkgo tests.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The custom check for SNO test compatibility applies to Ginkgo e2e tests in Go, but this PR modifies only Cucumber feature files and TypeScript utilities, not Go tests.
Topology-Aware Scheduling Compatibility ✅ Passed Pull request modifies only integration test files in frontend/packages/*/integration-tests/ directories. No deployment manifests, operator code, or Kubernetes resources with scheduling constraints are included.
Ote Binary Stdout Contract ✅ Passed PR modifies only TypeScript/JavaScript frontend integration test files (.feature, .ts), not Go test code. OTE Binary Stdout Contract is inapplicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR modifies only TypeScript integration tests and a Gherkin feature file, containing no Ginkgo e2e tests with Go syntax.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@rhamilto
Copy link
Copy Markdown
Member Author

/test e2e-gcp-console

1 similar comment
@rhamilto
Copy link
Copy Markdown
Member Author

/test e2e-gcp-console

@openshift-ci openshift-ci bot added the component/dev-console Related to dev-console label Apr 13, 2026
@rhamilto
Copy link
Copy Markdown
Member Author

/retest

@rhamilto rhamilto force-pushed the OCPBUGS-82511 branch 2 times, most recently from e73ffe2 to c2b3050 Compare April 14, 2026 19:27
@rhamilto
Copy link
Copy Markdown
Member Author

/retest

2 similar comments
@rhamilto
Copy link
Copy Markdown
Member Author

/retest

@rhamilto
Copy link
Copy Markdown
Member Author

/retest

@rhamilto
Copy link
Copy Markdown
Member Author

/cherry-pick release-4.22

@openshift-cherrypick-robot
Copy link
Copy Markdown

@rhamilto: once the present PR merges, I will cherry-pick it on top of release-4.22 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-4.22

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@rhamilto
Copy link
Copy Markdown
Member Author

/jira refresh
/cherry-pick release-4.23

@openshift-cherrypick-robot
Copy link
Copy Markdown

@rhamilto: once the present PR merges, I will cherry-pick it on top of release-4.23 in a new PR and assign it to you.

Details

In response to this:

/jira refresh
/cherry-pick release-4.23

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 15, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@rhamilto: This pull request references Jira Issue OCPBUGS-82511, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh
/cherry-pick release-4.23

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@rhamilto: This pull request references Jira Issue OCPBUGS-82511, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

Summary by CodeRabbit

  • Tests
  • Re-enabled Helm Release feature tests for automated validation.
  • Enhanced catalog type selection verification to confirm correct page display.
  • Improved project creation workflow testing with refined error handling and permission checks.
  • Strengthened page heading verification across integration tests.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
frontend/packages/dev-console/integration-tests/support/pages/app.ts (1)

313-360: Project-create flow is duplicated in two branches.

Consider extracting a helper (e.g., createProjectIfAllowed(projectName)) to keep permission check, creation, and NAMESPACES update in one place.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/packages/dev-console/integration-tests/support/pages/app.ts` around
lines 313 - 360, The project-create logic is duplicated; extract it into a
helper named createProjectIfAllowed(projectName) that encapsulates the
permission check (presence of
'[data-test-dropdown-menu="#CREATE_RESOURCE_ACTION#"]'), clicking
cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#'), calling
projectNameSpace.enterProjectName(projectName), confirming via
cy.byTestID('confirm-action'), updating the shared Cypress.expose('NAMESPACES')
array to include projectName if missing, and invoking app.waitForLoad(); replace
both duplicated blocks with a single call to createProjectIfAllowed(projectName)
and leave the existing error throw in caller paths only when the helper
determines creation is not allowed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@frontend/packages/dev-console/integration-tests/support/pages/app.ts`:
- Around line 334-360: The current code calls .contains(projectName).click()
which throws when the project isn't present, making the create-permission
fallback unreachable; change the selection logic in the namespace dropdown (the
cy.get('[data-test="namespace-dropdown-menu"]').find('[data-test="dropdown-menu-item-link"]')
block) to first query the items and check for an element whose text includes
projectName (e.g., using a .then($items => { if ($items.filter(...) or
Array.from($items).some(...) }) ) and only call .click() when found; otherwise
proceed into the existing fallback that checks for the create action, calls
cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#').click(), uses
projectNameSpace.enterProjectName(projectName), clicks
cy.byTestID('confirm-action'), updates Cypress.expose('NAMESPACES'), and calls
app.waitForLoad(); ensure you reference and update the same variables/commands
(projectNameSpaceDropdown alias, projectNameSpace.enterProjectName,
cy.byTestDropDownMenu, cy.byTestID, Cypress.expose, app.waitForLoad) so the
fallback can execute when the project item is absent.

---

Nitpick comments:
In `@frontend/packages/dev-console/integration-tests/support/pages/app.ts`:
- Around line 313-360: The project-create logic is duplicated; extract it into a
helper named createProjectIfAllowed(projectName) that encapsulates the
permission check (presence of
'[data-test-dropdown-menu="#CREATE_RESOURCE_ACTION#"]'), clicking
cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#'), calling
projectNameSpace.enterProjectName(projectName), confirming via
cy.byTestID('confirm-action'), updating the shared Cypress.expose('NAMESPACES')
array to include projectName if missing, and invoking app.waitForLoad(); replace
both duplicated blocks with a single call to createProjectIfAllowed(projectName)
and leave the existing error throw in caller paths only when the helper
determines creation is not allowed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c6710cba-648b-4604-b088-2a3580c5b0bc

📥 Commits

Reviewing files that changed from the base of the PR and between 89fed00 and b4a192a.

📒 Files selected for processing (4)
  • frontend/packages/dev-console/integration-tests/support/pages/add-flow/catalog-page.ts
  • frontend/packages/dev-console/integration-tests/support/pages/app.ts
  • frontend/packages/helm-plugin/integration-tests/features/helm-release.feature
  • frontend/packages/integration-tests/views/details-page.ts
✅ Files skipped from review due to trivial changes (2)
  • frontend/packages/integration-tests/views/details-page.ts
  • frontend/packages/helm-plugin/integration-tests/features/helm-release.feature

Comment on lines +334 to +360
cy.get('[data-test="namespace-dropdown-menu"]')
.find('[data-test="dropdown-menu-item-link"]')
.contains(projectName)
.click();
cy.get('@projectNameSpaceDropdown').then(($el1) => {
if ($el1.text().includes(projectName)) {
cy.get('@projectNameSpaceDropdown').should('contain.text', projectName);
} else {
// Check if Create Project button exists
cy.get('body').then(($body) => {
if ($body.find('[data-test-dropdown-menu="#CREATE_RESOURCE_ACTION#"]').length > 0) {
cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#').click();
projectNameSpace.enterProjectName(projectName);
cy.byTestID('confirm-action').click();
const namespaces: string[] = Cypress.expose('NAMESPACES') || [];
if (!namespaces.includes(projectName)) {
namespaces.push(projectName);
}
Cypress.expose('NAMESPACES', namespaces);
app.waitForLoad();
} else {
throw new Error(
`Failed to select project "${projectName}" and user lacks permission to create it. ` +
`Please pre-create the project or grant self-provisioner role.`,
);
}
});
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fallback path is unreachable when project is missing from a non-empty dropdown.

At Line 336, .contains(projectName).click() hard-fails if no matching project exists, so the create-permission fallback below never runs.

Suggested fix
-          cy.get('[data-test="namespace-dropdown-menu"]')
-            .find('[data-test="dropdown-menu-item-link"]')
-            .contains(projectName)
-            .click();
-          cy.get('@projectNameSpaceDropdown').then(($el1) => {
-            if ($el1.text().includes(projectName)) {
-              cy.get('@projectNameSpaceDropdown').should('contain.text', projectName);
-            } else {
+          cy.get('[data-test="namespace-dropdown-menu"]')
+            .find('[data-test="dropdown-menu-item-link"]')
+            .then(($items) => {
+              const match = [...$items].find(
+                (el) => el.textContent?.trim() === projectName,
+              );
+              if (match) {
+                cy.wrap(match).click();
+                cy.get('@projectNameSpaceDropdown').should('contain.text', projectName);
+              } else {
               // Check if Create Project button exists
               cy.get('body').then(($body) => {
                 if ($body.find('[data-test-dropdown-menu="#CREATE_RESOURCE_ACTION#"]').length > 0) {
                   cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#').click();
                   projectNameSpace.enterProjectName(projectName);
                   cy.byTestID('confirm-action').click();
                   const namespaces: string[] = Cypress.expose('NAMESPACES') || [];
                   if (!namespaces.includes(projectName)) {
                     namespaces.push(projectName);
                   }
                   Cypress.expose('NAMESPACES', namespaces);
                   app.waitForLoad();
                 } else {
                   throw new Error(
                     `Failed to select project "${projectName}" and user lacks permission to create it. ` +
                       `Please pre-create the project or grant self-provisioner role.`,
                   );
                 }
               });
-            }
-          });
+              }
+            });
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/packages/dev-console/integration-tests/support/pages/app.ts` around
lines 334 - 360, The current code calls .contains(projectName).click() which
throws when the project isn't present, making the create-permission fallback
unreachable; change the selection logic in the namespace dropdown (the
cy.get('[data-test="namespace-dropdown-menu"]').find('[data-test="dropdown-menu-item-link"]')
block) to first query the items and check for an element whose text includes
projectName (e.g., using a .then($items => { if ($items.filter(...) or
Array.from($items).some(...) }) ) and only call .click() when found; otherwise
proceed into the existing fallback that checks for the create action, calls
cy.byTestDropDownMenu('#CREATE_RESOURCE_ACTION#').click(), uses
projectNameSpace.enterProjectName(projectName), clicks
cy.byTestID('confirm-action'), updates Cypress.expose('NAMESPACES'), and calls
app.waitForLoad(); ensure you reference and update the same variables/commands
(projectNameSpaceDropdown alias, projectNameSpace.enterProjectName,
cy.byTestDropDownMenu, cy.byTestID, Cypress.expose, app.waitForLoad) so the
fallback can execute when the project item is absent.

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 15, 2026

@rhamilto: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-gcp-console b4a192a link true /test e2e-gcp-console

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. component/dev-console Related to dev-console component/helm Related to helm-plugin jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. kind/cypress Related to Cypress e2e integration testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants