Skip to content

Conversation

@logonoff
Copy link
Member

@logonoff logonoff commented Feb 11, 2026

1.6MiB fewer bits sent down the wire due to duplicate icons in bundle:

before:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  editor.worker.js (259 KiB)
  json.worker.js (386 KiB)
  yaml.worker.js (571 KiB)
  main-bundle-6e783a306bca6dd31ccb.min.js (1.54 MiB)
  app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
  vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
  vendors~31032-chunk-102ba16ac946a25d836c.min.js (1.6 MiB)
  app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
  vendors~main-chunk-80750-cc923407842da4d1526e.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (14.4 MiB)
      runtime-bundle-81336833bffde5cd1c3c.min.js
      87252-bundle-d9ae18f13b8bc0c07c76.min.js
      app-bundle.80750.37202e1c674a62c73ba3.css
      vendors~main-chunk-80750-cc923407842da4d1526e.min.js
      main-bundle-6e783a306bca6dd31ccb.min.js
      app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 312122 ms
Done in 415.11s.

after:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  editor.worker.js (259 KiB)
  json.worker.js (386 KiB)
  yaml.worker.js (571 KiB)
  main-bundle-10be88d83f28a3fce091.min.js (1.54 MiB)
  app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
  vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
  app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
  vendors~main-chunk-80750-eb94ead207d47c405203.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (14.4 MiB)
      runtime-bundle-374b63342451a348e517.min.js
      87252-bundle-d9ae18f13b8bc0c07c76.min.js
      app-bundle.80750.37202e1c674a62c73ba3.css
      vendors~main-chunk-80750-eb94ead207d47c405203.min.js
      main-bundle-10be88d83f28a3fce091.min.js
      app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 289324 ms
Done in 408.54s.

Summary by CodeRabbit

  • Chores
    • Updated ESLint configuration to enforce stricter import patterns for PatternFly React Icons, ensuring use of the standard entry point.
    • Reorganized ESLint configuration paths across multiple integration test directories.
    • Standardized icon import paths across the codebase to use consistent module references.

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

@logonoff: This pull request references Jira Issue OCPBUGS-76554, 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 (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state New, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @yapei

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

Details

In response to this:

1.6MiB fewer bits sent down the wire due to duplicate icons in bundle:

before:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
 editor.worker.js (259 KiB)
 json.worker.js (386 KiB)
 yaml.worker.js (571 KiB)
 main-bundle-6e783a306bca6dd31ccb.min.js (1.54 MiB)
 app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
 vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
 vendors~31032-chunk-102ba16ac946a25d836c.min.js (1.6 MiB)
 app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
 vendors~main-chunk-80750-cc923407842da4d1526e.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
 main (14.4 MiB)
     runtime-bundle-81336833bffde5cd1c3c.min.js
     87252-bundle-d9ae18f13b8bc0c07c76.min.js
     app-bundle.80750.37202e1c674a62c73ba3.css
     vendors~main-chunk-80750-cc923407842da4d1526e.min.js
     main-bundle-6e783a306bca6dd31ccb.min.js
     app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 312122 ms
Done in 415.11s.

after:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
 editor.worker.js (259 KiB)
 json.worker.js (386 KiB)
 yaml.worker.js (571 KiB)
 main-bundle-10be88d83f28a3fce091.min.js (1.54 MiB)
 app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
 vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
 app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
 vendors~main-chunk-80750-eb94ead207d47c405203.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
 main (14.4 MiB)
     runtime-bundle-374b63342451a348e517.min.js
     87252-bundle-d9ae18f13b8bc0c07c76.min.js
     app-bundle.80750.37202e1c674a62c73ba3.css
     vendors~main-chunk-80750-eb94ead207d47c405203.min.js
     main-bundle-10be88d83f28a3fce091.min.js
     app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 289324 ms
Done in 408.54s.

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 openshift-ci bot added component/core Related to console core functionality component/dev-console Related to dev-console approved Indicates a PR has been approved by an approver from all required OWNERS files. component/helm Related to helm-plugin component/knative Related to knative-plugin component/shared Related to console-shared labels Feb 11, 2026
@openshift-ci-robot
Copy link
Contributor

@logonoff: This pull request references Jira Issue OCPBUGS-76554, which is valid.

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

Requesting review from QA contact:
/cc @yapei

Details

In response to this:

1.6MiB fewer bits sent down the wire due to duplicate icons in bundle:

before:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
 editor.worker.js (259 KiB)
 json.worker.js (386 KiB)
 yaml.worker.js (571 KiB)
 main-bundle-6e783a306bca6dd31ccb.min.js (1.54 MiB)
 app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
 vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
 vendors~31032-chunk-102ba16ac946a25d836c.min.js (1.6 MiB)
 app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
 vendors~main-chunk-80750-cc923407842da4d1526e.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
 main (14.4 MiB)
     runtime-bundle-81336833bffde5cd1c3c.min.js
     87252-bundle-d9ae18f13b8bc0c07c76.min.js
     app-bundle.80750.37202e1c674a62c73ba3.css
     vendors~main-chunk-80750-cc923407842da4d1526e.min.js
     main-bundle-6e783a306bca6dd31ccb.min.js
     app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 312122 ms
Done in 415.11s.

after:

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
 editor.worker.js (259 KiB)
 json.worker.js (386 KiB)
 yaml.worker.js (571 KiB)
 main-bundle-10be88d83f28a3fce091.min.js (1.54 MiB)
 app-bundle.main.9f16a86ff14aac9dd417.css (2.17 MiB)
 vendors~81543-chunk-ece68d8f348636f0636e.min.js (3.8 MiB)
 app-bundle.80750.37202e1c674a62c73ba3.css (3.45 MiB)
 vendors~main-chunk-80750-eb94ead207d47c405203.min.js (7.08 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
 main (14.4 MiB)
     runtime-bundle-374b63342451a348e517.min.js
     87252-bundle-d9ae18f13b8bc0c07c76.min.js
     app-bundle.80750.37202e1c674a62c73ba3.css
     vendors~main-chunk-80750-eb94ead207d47c405203.min.js
     main-bundle-10be88d83f28a3fce091.min.js
     app-bundle.main.9f16a86ff14aac9dd417.css


webpack 5.104.1 compiled with 2 warnings in 289324 ms
Done in 408.54s.

Summary by CodeRabbit

  • Chores
  • Updated ESLint configuration to enforce stricter import patterns for PatternFly React Icons, ensuring use of the standard entry point.
  • Reorganized ESLint configuration paths across multiple integration test directories.
  • Standardized icon import paths across the codebase to use consistent module references.

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.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 11, 2026

📝 Walkthrough

Walkthrough

This pull request updates ESLint configurations and icon import paths across the frontend. It adds a new import/no-restricted-paths rule to enforce imports from the ESM entry point of PatternFly React Icons, removes a redundant ESLint configuration file, updates multiple integration-test .eslintrc extends paths to reference a parent configuration, changes icon import statements to use correct package paths or ESM entry points, and converts an IconDefinition import to type-only syntax. Total changes span configuration files, build/linting rules, and component-level imports.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 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 identifies the main objective: banning CommonJS imports of PatternFly react-icons, which is the core purpose reflected throughout all file changes (eslint rules, import path updates, config adjustments).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


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

Copy link
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: 5

🤖 Fix all issues with AI agents
In `@frontend/packages/console-telemetry-plugin/integration-tests/.eslintrc`:
- Line 6: The ESLint extends entry is pointing to "../../../.eslintrc" which is
incorrect; update the extends array value to "../../../.eslintrc.js" so the base
config resolves (modify the "extends" property in the .eslintrc file to use
"../../../.eslintrc.js" instead of "../../../.eslintrc"). Apply the same change
to other integration-tests .eslintrc files (dev-console, helm-plugin,
knative-plugin, shipwright-plugin, webterminal-plugin) to ensure CI linting
works consistently.

In `@frontend/packages/dev-console/integration-tests/.eslintrc`:
- Line 6: Update the extends entry in the ESLint config: replace the incorrect
"../../../.eslintrc" string in the "extends" array with the correct
"../../../.eslintrc.js" so the root config (frontend/.eslintrc.js) is loaded;
modify the value inside the "extends" array in the .eslintrc file located in the
integration-tests package to reference the .js extension.

In `@frontend/packages/dev-console/src/components/import/git/GitTypeSelector.tsx`:
- Line 4: The import statement in GitTypeSelector.tsx currently pulls icons from
'@patternfly/react-icons'; update it to use the explicit ESM path used elsewhere
by importing GithubIcon, GitlabIcon, BitbucketIcon, and GitAltIcon from
'@patternfly/react-icons/dist/esm/icons' so the module resolution matches the
rest of the dev-console package (see the import of these same icons in
render-utils.tsx).

In `@frontend/packages/helm-plugin/integration-tests/.eslintrc`:
- Line 6: Update the ESLint extends to point to the actual JS config file:
replace the extends entry "../../../.eslintrc" with "../../../.eslintrc.js" in
the extends array (the "extends" key in the .eslintrc used by the
integration-tests package), and apply the same change to the equivalent
integration-test package configs (dev-console, console-telemetry,
knative-plugin, topology, webterminal-plugin, shipwright-plugin) so they all
reference .eslintrc.js instead of .eslintrc.

In `@frontend/packages/webterminal-plugin/integration-tests/.eslintrc`:
- Line 6: The extends entry in the .eslintrc currently points to a non-existent
"../../../.eslintrc"; update the extends array item value to
"../../../.eslintrc.js" so it references the actual root config (change the
string value that appears in the extends array), and apply the same change to
the other six integration-tests .eslintrc files that use "../../../.eslintrc".

"node": true
},
"extends": ["../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
"extends": ["../../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if the target ESLint config file exists
if test -f frontend/.eslintrc; then
  echo "✓ frontend/.eslintrc exists"
  echo "--- First 10 lines of frontend/.eslintrc ---"
  head -n 10 frontend/.eslintrc
else
  echo "✗ frontend/.eslintrc does NOT exist"
fi

# Also verify the relative path from the integration-tests directory
echo ""
echo "--- Path resolution check ---"
cd frontend/packages/console-telemetry-plugin/integration-tests 2>/dev/null && \
  if test -f ../../../.eslintrc; then
    echo "✓ ../../../.eslintrc resolves correctly from integration-tests/"
  else
    echo "✗ ../../../.eslintrc does NOT resolve from integration-tests/"
  fi || echo "Could not verify relative path"

Repository: openshift/console

Length of output: 189


🏁 Script executed:

#!/bin/bash
# Find all .eslintrc files in the repository
echo "=== All .eslintrc files ==="
find . -name ".eslintrc*" -type f | head -20

echo ""
echo "=== ESLint configs in console root ==="
ls -la | grep eslint

echo ""
echo "=== ESLint configs in frontend directory ==="
test -d frontend && ls -la frontend/ | grep eslint

Repository: openshift/console

Length of output: 1188


🏁 Script executed:

#!/bin/bash
echo "=== Integration-tests .eslintrc files and their extends paths ==="
for file in $(find ./frontend/packages -path "*/integration-tests/.eslintrc" -type f); do
  echo ""
  echo "File: $file"
  echo "Extends line:"
  grep -n "extends" "$file" | head -3
done

echo ""
echo "=== Verify correct relative path from telemetry integration-tests ==="
cd frontend/packages/console-telemetry-plugin/integration-tests 2>/dev/null && \
  if test -f ../../../.eslintrc.js; then
    echo "✓ ../../../.eslintrc.js exists and is reachable"
  else
    echo "✗ ../../../.eslintrc.js NOT reachable"
  fi

Repository: openshift/console

Length of output: 1438


Update the ESLint extends path to use .eslintrc.js instead of .eslintrc.

The base config is frontend/.eslintrc.js, not .eslintrc. The current path reference will break ESLint resolution in CI and prevent linting from running. Change line 6 from:

"extends": ["../../../.eslintrc", ...

to:

"extends": ["../../../.eslintrc.js", ...

This issue affects multiple integration-tests directories across the codebase (dev-console, helm-plugin, knative-plugin, shipwright-plugin, and webterminal-plugin), so the same fix should be applied consistently.

🤖 Prompt for AI Agents
In `@frontend/packages/console-telemetry-plugin/integration-tests/.eslintrc` at
line 6, The ESLint extends entry is pointing to "../../../.eslintrc" which is
incorrect; update the extends array value to "../../../.eslintrc.js" so the base
config resolves (modify the "extends" property in the .eslintrc file to use
"../../../.eslintrc.js" instead of "../../../.eslintrc"). Apply the same change
to other integration-tests .eslintrc files (dev-console, helm-plugin,
knative-plugin, shipwright-plugin, webterminal-plugin) to ensure CI linting
works consistently.

"node": true
},
"extends": ["../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
"extends": ["../../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if the root eslint config exists where the relative path points
if [ -f "frontend/.eslintrc" ]; then
  echo "=== Root ESLint config found at frontend/.eslintrc ==="
  head -20 "frontend/.eslintrc"
else
  echo "Root config not found at frontend/.eslintrc"
fi

# Also verify the full path from the integration-tests directory
echo ""
echo "=== Checking path resolution from integration-tests directory ==="
cd "frontend/packages/dev-console/integration-tests" && pwd
ls -la .eslintrc 2>/dev/null || echo ".eslintrc file missing in this directory"

Repository: openshift/console

Length of output: 296


🏁 Script executed:

#!/bin/bash
# Find all .eslintrc files in the repository
echo "=== All .eslintrc files in repo ==="
find . -maxdepth 3 -name ".eslintrc*" -type f 2>/dev/null | head -20

echo ""
echo "=== Directory structure near frontend root ==="
ls -la frontend/ | grep -E "eslint|config"

Repository: openshift/console

Length of output: 615


Fix the missing .js extension in the ESLint config path.

The extends path ../../../.eslintrc points to a non-existent file. The root config is at frontend/.eslintrc.js, so the path should be ../../../.eslintrc.js. Without this fix, ESLint will fail to load the root configuration and skip the intended linting rules.

🤖 Prompt for AI Agents
In `@frontend/packages/dev-console/integration-tests/.eslintrc` at line 6, Update
the extends entry in the ESLint config: replace the incorrect
"../../../.eslintrc" string in the "extends" array with the correct
"../../../.eslintrc.js" so the root config (frontend/.eslintrc.js) is loaded;
modify the value inside the "extends" array in the .eslintrc file located in the
integration-tests package to reference the .js extension.

BitbucketIcon,
GitAltIcon,
} from '@patternfly/react-icons/dist/esm/icons';
import { GithubIcon, GitlabIcon, BitbucketIcon, GitAltIcon } from '@patternfly/react-icons';
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Find package.json files and check for `@patternfly/react-icons` version
find . -name "package.json" -type f | head -20 | xargs grep -l "@patternfly/react-icons" 2>/dev/null

Repository: openshift/console

Length of output: 119


🏁 Script executed:

# Check the main package.json for dependencies
cat package.json | grep -A 5 -B 5 "@patternfly/react-icons" 2>/dev/null || echo "Not in root package.json"

Repository: openshift/console

Length of output: 147


🏁 Script executed:

# Look for package.json in the specific package directory
cat frontend/packages/dev-console/package.json 2>/dev/null | grep -A 2 -B 2 "@patternfly/react-icons"

Repository: openshift/console

Length of output: 43


🏁 Script executed:

# Find and inspect the installed `@patternfly/react-icons` package.json to check exports
find node_modules/@patternfly/react-icons -name "package.json" -type f 2>/dev/null | head -1 | xargs cat 2>/dev/null | jq '.exports // .main // .module' 2>/dev/null || echo "Package not found or no exports field"

Repository: openshift/console

Length of output: 43


🏁 Script executed:

# Find the GitTypeSelector.tsx file
find . -name "GitTypeSelector.tsx" -type f

Repository: openshift/console

Length of output: 138


🏁 Script executed:

# Check frontend package.json for `@patternfly/react-icons`
cat frontend/package.json | grep -A 3 -B 3 "@patternfly/react-icons" 2>/dev/null || echo "Not found in frontend/package.json"

Repository: openshift/console

Length of output: 360


🏁 Script executed:

# Check if there's a monorepo config file
ls -la | grep -E "pnpm-workspace|lerna|yarn" || echo "No obvious monorepo config in root"

Repository: openshift/console

Length of output: 95


🏁 Script executed:

# Search for `@patternfly/react-icons` across all package.json files
rg -l "@patternfly/react-icons" --glob "package.json"

Repository: openshift/console

Length of output: 115


🏁 Script executed:

# Find build config files
find . -maxdepth 3 -type f \( -name "tsconfig.json" -o -name "webpack.config.js" -o -name "vite.config.ts" \) | head -10

Repository: openshift/console

Length of output: 121


🏁 Script executed:

# Search for other imports from `@patternfly/react-icons` to see the pattern
rg "from '@patternfly/react-icons" --type ts --type tsx -c | head -20

Repository: openshift/console

Length of output: 88


🏁 Script executed:

# Check the actual tsconfig that applies to this file
find frontend/packages/dev-console -name "tsconfig*.json" -type f

Repository: openshift/console

Length of output: 122


🏁 Script executed:

# Look at the tsconfig to understand module resolution
cat frontend/tsconfig.json 2>/dev/null | head -50

Repository: openshift/console

Length of output: 2278


🏁 Script executed:

# Search for imports from `@patternfly/react-icons`
rg "from ['\"@patternfly/react-icons" --type ts

Repository: openshift/console

Length of output: 214


🏁 Script executed:

# Check if any imports use specific paths vs root
rg "from ['\"]@patternfly/react-icons" -A 0 -B 0 | sort | uniq -c | sort -rn

Repository: openshift/console

Length of output: 48653


🏁 Script executed:

# Look at package.json to see if there's any build config or export info
cat frontend/package.json | head -100

Repository: openshift/console

Length of output: 7394


Use consistent ESM icon import path with rest of dev-console package.

The package root import resolves to ESM in this build configuration (tsconfig.json specifies module: "esnext"), but the same icons are imported via /dist/esm/icons/ specific paths elsewhere in the package (see render-utils.tsx). Use the explicit ESM path to align with the predominant pattern across the codebase:

- import { GithubIcon, GitlabIcon, BitbucketIcon, GitAltIcon } from '@patternfly/react-icons';
+ import { GithubIcon } from '@patternfly/react-icons/dist/esm/icons/github-icon';
+ import { GitlabIcon } from '@patternfly/react-icons/dist/esm/icons/gitlab-icon';
+ import { BitbucketIcon } from '@patternfly/react-icons/dist/esm/icons/bitbucket-icon';
+ import { GitAltIcon } from '@patternfly/react-icons/dist/esm/icons/git-alt-icon';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import { GithubIcon, GitlabIcon, BitbucketIcon, GitAltIcon } from '@patternfly/react-icons';
import { GithubIcon } from '@patternfly/react-icons/dist/esm/icons/github-icon';
import { GitlabIcon } from '@patternfly/react-icons/dist/esm/icons/gitlab-icon';
import { BitbucketIcon } from '@patternfly/react-icons/dist/esm/icons/bitbucket-icon';
import { GitAltIcon } from '@patternfly/react-icons/dist/esm/icons/git-alt-icon';
🤖 Prompt for AI Agents
In `@frontend/packages/dev-console/src/components/import/git/GitTypeSelector.tsx`
at line 4, The import statement in GitTypeSelector.tsx currently pulls icons
from '@patternfly/react-icons'; update it to use the explicit ESM path used
elsewhere by importing GithubIcon, GitlabIcon, BitbucketIcon, and GitAltIcon
from '@patternfly/react-icons/dist/esm/icons' so the module resolution matches
the rest of the dev-console package (see the import of these same icons in
render-utils.tsx).

"node": true
},
"extends": ["../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
"extends": ["../../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Check if the target file exists
if test -f frontend/.eslintrc; then
  echo "✓ frontend/.eslintrc exists"
  echo "Content preview:"
  head -20 frontend/.eslintrc
else
  echo "✗ frontend/.eslintrc NOT found"
fi

echo ""

# Verify the file that references it
if test -f frontend/packages/helm-plugin/integration-tests/.eslintrc; then
  echo "✓ frontend/packages/helm-plugin/integration-tests/.eslintrc exists"
  echo "Content:"
  cat frontend/packages/helm-plugin/integration-tests/.eslintrc
else
  echo "✗ frontend/packages/helm-plugin/integration-tests/.eslintrc NOT found"
fi

echo ""

# Show directory structure to confirm path relationships
echo "Directory structure check:"
ls -la frontend/packages/helm-plugin/integration-tests/ 2>/dev/null | head -10 || echo "Directory not found"

Repository: openshift/console

Length of output: 1384


🏁 Script executed:

#!/bin/bash

# Find all .eslintrc files in the repository
echo "=== All .eslintrc files in repo ==="
find . -name ".eslintrc*" -type f 2>/dev/null

echo ""
echo "=== Checking what the path actually resolves to ==="
cd frontend/packages/helm-plugin/integration-tests/
# Test what ../../../.eslintrc would point to
echo "From integration-tests dir, ../../../.eslintrc would point to:"
readlink -f ../../../.eslintrc 2>/dev/null || echo "File does not exist at: $(pwd)/../../../.eslintrc"

echo ""
echo "Actual parent structure:"
ls -la ../../../

Repository: openshift/console

Length of output: 3101


Fix ESLint config reference: use .eslintrc.js instead of .eslintrc

The extends path ../../../.eslintrc will fail to resolve. The root ESLint config is frontend/.eslintrc.js (JavaScript file), not a JSON file. Change the extends to reference ../../../.eslintrc.js.

Note: This same misconfiguration appears across other integration-test packages (dev-console, console-telemetry, knative-plugin, topology, webterminal-plugin, shipwright-plugin).

🤖 Prompt for AI Agents
In `@frontend/packages/helm-plugin/integration-tests/.eslintrc` at line 6, Update
the ESLint extends to point to the actual JS config file: replace the extends
entry "../../../.eslintrc" with "../../../.eslintrc.js" in the extends array
(the "extends" key in the .eslintrc used by the integration-tests package), and
apply the same change to the equivalent integration-test package configs
(dev-console, console-telemetry, knative-plugin, topology, webterminal-plugin,
shipwright-plugin) so they all reference .eslintrc.js instead of .eslintrc.

"node": true
},
"extends": ["../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
"extends": ["../../../.eslintrc", "plugin:cypress/recommended", "plugin:prettier/recommended"],
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the target ESLint config and understand the directory structure

# Check for .eslintrc files at various levels
echo "=== ESLint config files in the repository ==="
find . -name ".eslintrc*" -type f | head -20

# Verify the specific path from the integration-tests directory
echo ""
echo "=== Verifying path from integration-tests to root config ==="
TARGET="frontend/.eslintrc"
if [ -f "$TARGET" ]; then
    echo "✓ Target config exists at: $TARGET"
    echo ""
    echo "=== Content of $TARGET (first 10 lines) ==="
    head -10 "$TARGET"
else
    echo "✗ Target config NOT found at: $TARGET"
fi

# Also check the actual integration-tests directory context
echo ""
echo "=== Directory context ==="
ls -la frontend/packages/webterminal-plugin/integration-tests/.eslintrc 2>/dev/null || echo "File not found"

Repository: openshift/console

Length of output: 1240


🏁 Script executed:

#!/bin/bash
# Check what the webterminal-plugin integration-tests .eslintrc currently extends
echo "=== Current webterminal-plugin integration-tests/.eslintrc content ==="
cat frontend/packages/webterminal-plugin/integration-tests/.eslintrc

# Also check a peer integration-tests to see the pattern
echo ""
echo "=== Peer pattern: dev-console integration-tests/.eslintrc ==="
cat frontend/packages/dev-console/integration-tests/.eslintrc

Repository: openshift/console

Length of output: 1240


🏁 Script executed:

#!/bin/bash
# Verify ESLint's config resolution mechanism handles .eslintrc -> .eslintrc.js
# Check how many integration-tests use the same ../../../.eslintrc pattern

echo "=== Integration-tests using ../../../.eslintrc pattern ==="
grep -r "../../../.eslintrc" frontend/packages/*/integration-tests/.eslintrc 2>/dev/null | wc -l

echo ""
echo "=== All references in integration-tests ==="
grep -h "extends" frontend/packages/*/integration-tests/.eslintrc 2>/dev/null | sort | uniq -c

Repository: openshift/console

Length of output: 272


🌐 Web query:

ESLint config file resolution .eslintrc to .eslintrc.js fallback

💡 Result:

  • ESLint v9+ default (flat config): ESLint looks for eslint.config.* (e.g. eslint.config.js/mjs/cjs) and does not automatically search for .eslintrc* anymore. To use .eslintrc*, you must opt into the legacy system (e.g. ESLINT_USE_FLAT_CONFIG=false). [1][2]

  • Legacy “.eslintrc” mode (deprecated): In any given directory ESLint will load only one config file, and the precedence is:

    1. .eslintrc.js
    2. .eslintrc.cjs
    3. .eslintrc.yaml
    4. .eslintrc.yml
    5. .eslintrc.json
    6. package.json (eslintConfig) [3]
      So there is no “fallback from .eslintrc to .eslintrc.js—if .eslintrc.js exists, it wins; otherwise ESLint tries the next supported name in that order.
  • About plain .eslintrc (no extension): Older ESLint docs explicitly allowed .eslintrc as a deprecated JSON/YAML format. [4] In current docs, prefer renaming it to .eslintrc.json/.eslintrc.yml or migrating to eslint.config.*. [2][3]

Sources:
[1] https://eslint.org/docs/latest/use/configure/configuration-files
[2] https://eslint.org/docs/latest/use/migrate-to-9.0.0
[3] https://eslint.org/docs/latest/use/configure/configuration-files-deprecated
[4] https://archive.eslint.org/docs/2.0.0/user-guide/configuring


Fix the base ESLint config path—it references a non-existent file.

The extends path ../../../.eslintrc resolves to a file that doesn't exist. The actual root config is frontend/.eslintrc.js. Update to ../../../.eslintrc.js to prevent lint failures in CI. Note that 6 other integration-tests in the repo have the same issue and should be corrected as well.

🤖 Prompt for AI Agents
In `@frontend/packages/webterminal-plugin/integration-tests/.eslintrc` at line 6,
The extends entry in the .eslintrc currently points to a non-existent
"../../../.eslintrc"; update the extends array item value to
"../../../.eslintrc.js" so it references the actual root config (change the
string value that appears in the extends array), and apply the same change to
the other six integration-tests .eslintrc files that use "../../../.eslintrc".

@logonoff logonoff force-pushed the OCPBUGS-76554-icons branch from 172f5fc to 1b9822f Compare February 11, 2026 21:21
@openshift-ci openshift-ci bot added the kind/cypress Related to Cypress e2e integration testing label Feb 11, 2026
@logonoff logonoff force-pushed the OCPBUGS-76554-icons branch from 1b9822f to c3fa81a Compare February 11, 2026 23:17
@logonoff logonoff force-pushed the OCPBUGS-76554-icons branch from c3fa81a to 4cedc3b Compare February 12, 2026 16:01
@vojtechszocs
Copy link
Contributor

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Feb 12, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Feb 12, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: logonoff, vojtechszocs

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
Copy link
Contributor

openshift-ci bot commented Feb 12, 2026

@logonoff: 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/frontend 4cedc3b link true /test frontend

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/core Related to console core functionality component/dev-console Related to dev-console component/helm Related to helm-plugin component/knative Related to knative-plugin component/shared Related to console-shared 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 lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants