Skip to content

CONSOLE-5439: Migrate to eslint 9 - #16878

Merged
openshift-merge-bot[bot] merged 7 commits into
openshift:mainfrom
logonoff:CONSOLE-5439-flatpak
Jul 29, 2026
Merged

CONSOLE-5439: Migrate to eslint 9#16878
openshift-merge-bot[bot] merged 7 commits into
openshift:mainfrom
logonoff:CONSOLE-5439-flatpak

Conversation

@logonoff

@logonoff logonoff commented Jul 29, 2026

Copy link
Copy Markdown
Member

Analysis / Root cause:

ESlint 8 is EOL, ESlint 9 is the oldest version in support (maintenance mode)

Solution description:

  • Migrate various .eslintrc/.eslintrc.js files into a singular, centralized flat eslint.config.ts
  • Merge similar blocks of eslint rules to reduce duplication
  • Bump eslint versions and various eslint plugins

Test cases:

  • Try creating some eslint violations and see if they are caught by the new linter config

Summary by CodeRabbit

  • Chores
    • Migrated frontend linting to a centralized ESLint 9 flat configuration.
    • Removed legacy, scattered ESLint configuration files to simplify and standardize linting.
    • Updated lint command behavior to rely on the new configuration.
    • Strengthened lint rules across React/TypeScript, including unused-variable handling and React i18n/import guidance.
    • Improved Playwright/Cypress/JSON linting with clearer rule enforcement and warnings.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 29, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@logonoff: This pull request references CONSOLE-5439 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Analysis / Root cause:

ESlint 8 is EOL, ESlint 9 is the oldest version in support (maintenance mode)

Solution description:

  • Migrate various .eslintrc/.eslintrc.js files into a singular, centralized flat eslint.config.ts
  • Merge similar blocks of eslint rules to reduce duplication
  • Bump eslint versions and various eslint plugins

Test cases:

  • Try creating some eslint violations and see if they are caught by the new linter config

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

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: ae24d974-e529-4910-8228-0bbd1ee3c8e8

📥 Commits

Reviewing files that changed from the base of the PR and between 344d824 and e33ac7d.

⛔ Files ignored due to path filters (1)
  • frontend/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (19)
  • frontend/__mocks__/fetch.ts
  • frontend/__mocks__/i18next.ts
  • frontend/__mocks__/react-i18next.ts
  • frontend/__mocks__/styleMock.js
  • frontend/eslint.config.ts
  • frontend/get-local-plugins.js
  • frontend/packages/console-shared/src/utils/icon-utils.ts
  • frontend/packages/dev-console/src/components/import/__tests__/deployImage-submit-utils.spec.ts
  • frontend/packages/eslint-plugin-console/index.js
  • frontend/packages/eslint-plugin-console/lib/config/json.js
  • frontend/packages/eslint-plugin-console/lib/config/playwright.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/airbnb-base-overrides.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/react.js
  • frontend/packages/eslint-plugin-console/package.json
  • frontend/public/components/namespace.jsx
  • frontend/public/components/row-filter.jsx
  • frontend/public/module/k8s/label-selector.js
  • frontend/test-puppeteer-csp.ts
  • frontend/webpack.circular-deps.ts
💤 Files with no reviewable changes (9)
  • frontend/webpack.circular-deps.ts
  • frontend/test-puppeteer-csp.ts
  • frontend/get-local-plugins.js
  • frontend/public/components/row-filter.jsx
  • frontend/public/components/namespace.jsx
  • frontend/mocks/fetch.ts
  • frontend/mocks/styleMock.js
  • frontend/mocks/react-i18next.ts
  • frontend/mocks/i18next.ts
🚧 Files skipped from review as they are similar to previous changes (9)
  • frontend/packages/eslint-plugin-console/lib/config/json.js
  • frontend/packages/dev-console/src/components/import/tests/deployImage-submit-utils.spec.ts
  • frontend/public/module/k8s/label-selector.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/airbnb-base-overrides.js
  • frontend/packages/eslint-plugin-console/package.json
  • frontend/packages/eslint-plugin-console/lib/config/playwright.js
  • frontend/packages/eslint-plugin-console/index.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/react.js
  • frontend/eslint.config.ts

Walkthrough

Frontend linting migrates to ESLint 9 flat configuration. Legacy rule presets and directives are updated or removed, scoped overrides are centralized in eslint.config.ts, dependencies are upgraded, and the lint script no longer specifies extensions explicitly.

Changes

ESLint 9 migration

Layer / File(s) Summary
Shared ESLint presets and toolchain
frontend/packages/eslint-plugin-console/..., frontend/packages/eslint-plugin-console/package.json
Shared TypeScript, React, Playwright, JSON, and general rules are updated alongside ESLint ecosystem dependency bumps.
Centralized flat configuration
frontend/eslint.config.ts, frontend/package.json
A flat ESLint configuration defines compatibility, ignores, file scopes, parsers, resolvers, and Cypress, SDK, i18n, and Playwright overrides; the lint command relies on config-based file discovery.
Directive cleanup and targeted exceptions
frontend/__mocks__/*, frontend/public/..., frontend/packages/..., frontend/get-local-plugins.js, frontend/webpack.circular-deps.ts
Obsolete directives are removed or narrowed, and targeted suppressions are added for restricted imports and nested test callbacks.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ESLintCLI
  participant FlatConfig
  participant SharedPresets
  participant FrontendSources
  ESLintCLI->>FlatConfig: Load eslint.config.ts
  FlatConfig->>SharedPresets: Resolve updated presets
  FlatConfig->>FrontendSources: Apply scoped rules and ignores
  FrontendSources-->>ESLintCLI: Produce lint diagnostics
Loading

Possibly related issues

  • openshift/nmstate-console-plugin#208 — Covers the same ESLint 9 and flat-config migration objectives.
  • openshift/nmstate-console-plugin#209 — Covers the same ESLint 9 and flat-config migration objectives.
  • openshift/networking-console-plugin#388 — Directly concerns migrating frontend ESLint configuration to ESLint 9 flat config.

Suggested reviewers: cajieh, leo6leo

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main change and matches the PR's ESLint 9 migration.
Description check ✅ Passed The key sections are filled in and describe the root cause, solution, and test cases; only optional template sections are omitted.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No changed file adds Ginkgo test declarations; modified Go tests use standard Test functions, with no dynamic titles.
Test Structure And Quality ✅ Passed PASS: The PR only changes ESLint config files; no Ginkgo test code or cluster-interaction tests were modified, so the checklist is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the PR only changes ESLint configs and lint scripts, so MicroShift compatibility is not implicated.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests were added; the PR only changes ESLint config files and Playwright lint rules.
Topology-Aware Scheduling Compatibility ✅ Passed Only ESLint flat-config/rule files changed; no manifests, controllers, or workload scheduling code were added or modified.
Ote Binary Stdout Contract ✅ Passed PR only changes ESLint config files; no process-level code or stdout writes were added in main/init/suite setup paths.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in the diff, and the changed files are ESLint config/rules only.
No-Weak-Crypto ✅ Passed No weak crypto primitives or custom crypto were added; the PR only changes ESLint config and Helm URL-validation/tests, with no secret/token comparisons.
Container-Privileges ✅ Passed PASS: only ESLint config files changed, and neither contains privileged/hostPID/hostNetwork/hostIPC/allowPrivilegeEscalation/SYS_ADMIN settings.
No-Sensitive-Data-In-Logs ✅ Passed The only code changes are ESLint config tweaks and a lint-warning message; no new logging of secrets, PII, tokens, or internal data was added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
openshift-ci Bot requested review from Leo6Leo and cajieh July 29, 2026 14:31
@logonoff

Copy link
Copy Markdown
Member Author

/label px-approved
/label docs-approved

@openshift-ci openshift-ci Bot added component/core Related to console core functionality component/dev-console Related to dev-console component/helm Related to helm-plugin approved Indicates a PR has been approved by an approver from all required OWNERS files. component/knative Related to knative-plugin px-approved Signifies that Product Support has signed off on this PR component/sdk Related to console-plugin-sdk docs-approved Signifies that Docs has signed off on this PR component/shared Related to console-shared kind/cypress Related to Cypress e2e integration testing labels Jul 29, 2026

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 5

🧹 Nitpick comments (1)
frontend/eslint.config.ts (1)

107-165: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

TODO carries forward pre-existing rule debt for public/.

This large block intentionally disables rules for public/** that are enforced elsewhere, matching prior behavior per the TODO. Not a regression from this migration, just flagging the open TODO — happy to help scope enabling these incrementally if useful.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@frontend/eslint.config.ts` around lines 107 - 165, Preserve the existing
public/** rule overrides and update the TODO associated with the public-files
ESLint configuration to explicitly track this pre-existing rule debt and future
incremental enablement. Do not remove or change the disabled rules as part of
this migration.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@frontend/eslint.config.ts`:
- Around line 178-188: Replace the invalid no-namespace entry in the
CYPRESS_FILES rules with `@typescript-eslint/no-namespace` so the intended
TypeScript namespace rule is disabled without triggering an unknown-rule error.
Leave the surrounding rule configuration unchanged.

In `@frontend/packages/eslint-plugin-console/index.js`:
- Around line 48-63: Remove the legacy overrides entry from the preset
configuration in the exported config object of the console ESLint plugin, and
move its TypeScript-specific `@typescript-eslint/no-unused-vars` rule into
frontend/eslint.config.ts as a separate flat-config object using files:
['**/*.ts', '**/*.tsx']. Preserve all existing rule options and confirm the
preset is not relying on FlatCompat.
- Around line 52-59: Update the `@typescript-eslint/no-unused-vars` configuration
to anchor varsIgnorePattern so it matches only the exact React binding, while
preserving the existing unused-variable options and behavior for all other
variable names.

In `@frontend/packages/eslint-plugin-console/lib/config/rules/react-hooks.js`:
- Line 7: Update the react-hooks/exhaustive-deps setting in the ESLint
configuration to remain blocking at error level, or narrowly scope any
warning-level exception to documented legacy paths and enforce it through CI’s
--max-warnings policy.

In `@frontend/packages/eslint-plugin-console/package.json`:
- Line 14: Update the eslint dependency declaration in package.json from ^9.0.0
to ^9.22.0 or higher, ensuring the package contract supports the defineConfig,
globalIgnores, and extends APIs used by frontend/eslint.config.ts. Verify the
resolved eslint version in the yarn lockfile is at least 9.22.0 and update the
lockfile if necessary.

---

Nitpick comments:
In `@frontend/eslint.config.ts`:
- Around line 107-165: Preserve the existing public/** rule overrides and update
the TODO associated with the public-files ESLint configuration to explicitly
track this pre-existing rule debt and future incremental enablement. Do not
remove or change the disabled rules as part of this migration.
🪄 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: Enterprise

Run ID: d1224c46-dd18-4f80-babd-26b1d3250e2d

📥 Commits

Reviewing files that changed from the base of the PR and between 27d559b and 785de1e.

⛔ Files ignored due to path filters (1)
  • frontend/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (42)
  • frontend/.eslintignore
  • frontend/.eslintrc.js
  • frontend/__mocks__/fetch.ts
  • frontend/__mocks__/i18next.ts
  • frontend/__mocks__/react-i18next.ts
  • frontend/__mocks__/styleMock.js
  • frontend/e2e/.eslintrc.cjs
  • frontend/eslint.config.ts
  • frontend/get-local-plugins.js
  • frontend/i18n-scripts/.eslintrc.js
  • frontend/package.json
  • frontend/packages/.eslintrc.js
  • frontend/packages/console-dynamic-plugin-sdk/scripts/.eslintrc.js
  • frontend/packages/console-dynamic-plugin-sdk/src/webpack/.eslintrc.js
  • frontend/packages/console-plugin-sdk/src/codegen/.eslintrc.js
  • frontend/packages/console-plugin-sdk/src/webpack/.eslintrc.js
  • frontend/packages/console-shared/src/utils/icon-utils.ts
  • frontend/packages/dev-console/integration-tests/.eslintrc
  • frontend/packages/dev-console/src/actions/add-resources.tsx
  • frontend/packages/dev-console/src/components/import/ImportStrategySelector.tsx
  • frontend/packages/dev-console/src/components/import/__tests__/deployImage-submit-utils.spec.ts
  • frontend/packages/dev-console/src/components/import/__tests__/render-utils.spec.ts
  • frontend/packages/dev-console/src/components/import/git/GitTypeSelector.tsx
  • frontend/packages/dev-console/src/components/import/render-utils.tsx
  • frontend/packages/dev-console/src/utils/icons.tsx
  • frontend/packages/eslint-plugin-console/.eslintrc
  • frontend/packages/eslint-plugin-console/index.js
  • frontend/packages/eslint-plugin-console/lib/config/playwright.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/airbnb-base-overrides.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/react-hooks.js
  • frontend/packages/eslint-plugin-console/lib/config/rules/react.js
  • frontend/packages/eslint-plugin-console/package.json
  • frontend/packages/helm-plugin/integration-tests/.eslintrc
  • frontend/packages/integration-tests/.eslintrc
  • frontend/packages/knative-plugin/integration-tests/.eslintrc
  • frontend/packages/knative-plugin/src/utils/icons.tsx
  • frontend/packages/webterminal-plugin/src/components/cloud-shell/CloudShellMastheadButton.tsx
  • frontend/public/components/namespace.jsx
  • frontend/public/components/row-filter.jsx
  • frontend/public/module/k8s/label-selector.js
  • frontend/test-puppeteer-csp.ts
  • frontend/webpack.circular-deps.ts
💤 Files with no reviewable changes (23)
  • frontend/webpack.circular-deps.ts
  • frontend/packages/integration-tests/.eslintrc
  • frontend/mocks/react-i18next.ts
  • frontend/packages/console-plugin-sdk/src/webpack/.eslintrc.js
  • frontend/packages/dev-console/integration-tests/.eslintrc
  • frontend/i18n-scripts/.eslintrc.js
  • frontend/.eslintignore
  • frontend/packages/knative-plugin/integration-tests/.eslintrc
  • frontend/packages/console-dynamic-plugin-sdk/src/webpack/.eslintrc.js
  • frontend/get-local-plugins.js
  • frontend/public/components/namespace.jsx
  • frontend/public/components/row-filter.jsx
  • frontend/packages/.eslintrc.js
  • frontend/.eslintrc.js
  • frontend/packages/eslint-plugin-console/.eslintrc
  • frontend/e2e/.eslintrc.cjs
  • frontend/mocks/i18next.ts
  • frontend/packages/helm-plugin/integration-tests/.eslintrc
  • frontend/mocks/fetch.ts
  • frontend/packages/console-plugin-sdk/src/codegen/.eslintrc.js
  • frontend/mocks/styleMock.js
  • frontend/test-puppeteer-csp.ts
  • frontend/packages/console-dynamic-plugin-sdk/scripts/.eslintrc.js

Comment thread frontend/eslint.config.ts
Comment thread frontend/packages/eslint-plugin-console/index.js Outdated
Comment thread frontend/packages/eslint-plugin-console/index.js Outdated
Comment thread frontend/packages/eslint-plugin-console/lib/config/rules/react-hooks.js Outdated
Comment thread frontend/packages/eslint-plugin-console/package.json Outdated
@openshift-ci openshift-ci Bot added the kind/i18n Indicates issue or PR relates to internationalization or has content that needs to be translated label Jul 29, 2026
@logonoff
logonoff force-pushed the CONSOLE-5439-flatpak branch 2 times, most recently from b31a9ee to 3155a00 Compare July 29, 2026 15:29
Replace legacy .eslintrc/.eslintignore files across frontend, e2e, i18n scripts, SDK, and integration test folders with a single `frontend/eslint.config.js` flat config. The new config preserves existing scoped rule sets (root app, packages, Cypress tests, Playwright e2e, SDK node dirs, eslint plugin package), centralizes ignore patterns, and adds compatibility helpers for FlatCompat plugin/rule handling. Update the frontend eslint script to drop `--ext` so file matching is driven by flat config.
@logonoff
logonoff force-pushed the CONSOLE-5439-flatpak branch from 3155a00 to 344d824 Compare July 29, 2026 17:55
@vojtechszocs

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 29, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-gcp-console
/test e2e-playwright

@logonoff

Copy link
Copy Markdown
Member Author

performed basic testing with claude and verified that a bunch of the eslint rules are still in force
/verified by @logonoff

logonoff and others added 2 commits July 29, 2026 14:22
…t config

Replace custom scopeTo() and stripOrphanedPluginRules() helpers with
defineConfig's built-in extends key (available since ESLint 9.22.0).
defineConfig handles directory scoping via files/ignores, function
matcher intersection, and ignores propagation natively.

stripOrphanedPluginRules was unnecessary because ESLint 9 silently
ignores "off" rules from unregistered plugins.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
logonoff and others added 4 commits July 29, 2026 14:22
…eact-typescript-prettier preset

Move root-frontend-specific rules (no-restricted-imports, no-restricted-syntax,
react-hooks/exhaustive-deps, etc.) into the react-typescript-prettier preset in
eslint-plugin-console so public/ and packages/ share a single config entry.

A public/-only override disables ~45 airbnb/RTP rules not previously enforced
there. These can be removed incrementally to tighten public/ linting over time.

Other changes:
- Add eslint-disable comments for pre-existing PF Font Awesome icon imports
  now caught by the no-restricted-imports rule in packages/
- Remove stale eslint-disable tsdoc/syntax from .js/.jsx files where the
  tsdoc plugin is no longer loaded
- Scope tsdoc/syntax to public/**/*.{ts,tsx} only
- Add scripts/ to globalIgnores

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tuent configs

Distribute rules from the react-typescript-prettier preset into the
configs they logically belong to, so they're inherited through the
extends chain rather than duplicated at the preset level.

- airbnb-base-overrides: curly, consistent-return, consistent-this,
  max-nested-callbacks, no-alert, no-constant-condition,
  no-underscore-dangle, object-shorthand, prefer-const,
  no-restricted-imports, no-restricted-syntax
- react: react/no-string-refs, react/self-closing-comp,
  react/no-unescaped-entities
- react-hooks: exhaustive-deps downgraded from error to warn

Also restores tsdoc/syntax to eslint-disable comments in two .tsx
files where removing it exposed new warnings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…lbacks

Consolidate the two Cypress integration test config objects into one
using shared files/rules/settings. Disable max-nested-callbacks for
Cypress tests (deeply nested cy.then() chains are idiomatic) and
suppress the rule in a unit test with pre-existing deep nesting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… config blocks

Move Playwright-specific rule overrides (no-console, no-empty-pattern,
no-restricted-syntax waitFor warning, playwright/* rules) into the
plugin:console/playwright config. Merge the two e2e config blocks in
eslint.config.ts into one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@logonoff
logonoff force-pushed the CONSOLE-5439-flatpak branch from 344d824 to e33ac7d Compare July 29, 2026 18:22
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 29, 2026
@logonoff

Copy link
Copy Markdown
Member Author

/verified by @logonoff

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 29, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@logonoff: This PR has been marked as verified by @logonoff.

Details

In response to this:

/verified by @logonoff

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

openshift-ci-robot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@logonoff: This pull request references CONSOLE-5439 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Analysis / Root cause:

ESlint 8 is EOL, ESlint 9 is the oldest version in support (maintenance mode)

Solution description:

  • Migrate various .eslintrc/.eslintrc.js files into a singular, centralized flat eslint.config.ts
  • Merge similar blocks of eslint rules to reduce duplication
  • Bump eslint versions and various eslint plugins

Test cases:

  • Try creating some eslint violations and see if they are caught by the new linter config

Summary by CodeRabbit

  • Chores
  • Migrated frontend linting to a centralized ESLint 9 flat configuration.
  • Removed legacy, scattered ESLint configuration files to simplify and standardize linting.
  • Updated lint command behavior to rely on the new configuration.
  • Strengthened lint rules across React/TypeScript, including unused-variable handling and React i18n/import guidance.
  • Improved Playwright/Cypress/JSON linting with clearer rule enforcement and warnings.

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.

@vojtechszocs

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 29, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-gcp-console
/test e2e-playwright

@openshift-ci

openshift-ci Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

[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

@logonoff

Copy link
Copy Markdown
Member Author

/test analyze backend frontend images okd-scos-images

@openshift-merge-bot
openshift-merge-bot Bot merged commit f9644ce into openshift:main Jul 29, 2026
8 of 11 checks passed
@logonoff
logonoff deleted the CONSOLE-5439-flatpak branch July 29, 2026 20:25
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/sdk Related to console-plugin-sdk component/shared Related to console-shared docs-approved Signifies that Docs has signed off on this PR jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. kind/cypress Related to Cypress e2e integration testing kind/i18n Indicates issue or PR relates to internationalization or has content that needs to be translated lgtm Indicates that a PR is ready to be merged. px-approved Signifies that Product Support has signed off on this PR verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants