Skip to content

Instantly share code, notes, and snippets.

View jwmatthews's full-sized avatar

John Matthews jwmatthews

View GitHub Profile

PF5 to PF6 Migration Issue: Modal actions Prop Not Migrated to <ModalFooter>

Summary

When migrating from PatternFly 5 to PatternFly 6, the Modal component was decomposed from a monolithic component into composable sub-components (Modal, ModalHeader, ModalBody, ModalFooter). The automated migration tooling correctly restructured the modal layout (extracting title into <ModalHeader>, wrapping children in <ModalBody>) but failed to migrate the actions prop into a <ModalFooter> component in one of two identical files. This results in actions being destructured from props but never rendered, causing both a lint error and a silent loss of functionality (footer buttons disappear from the modal).

Affected File

src/views/scans/showAggregateReportModal.tsx

Walkthrough running against quipucords

  • Last update 4/29/2026
  • Below was run on 2 different Mac arm64 machines

PreReqs

Clone the repo

git clone https://github.com/quipucords/quipucords-ui
cd quipucords-ui
git checkout 2.1.0
@jwmatthews
jwmatthews / SemverAnalyzerTipsDebugging.md
Last active April 29, 2026 19:03
Semver Analyzer Tips + Debugging

corepack enable

Running on 2 laptops, Laptop #1 all runs fine, Laptop #2 shows below error. Looks like at some point I ran a corepack enable on Laptop #1 in the specific node version from nvm being used, then on Laptop #2 while I ran corepack enable it was NOT in the right node version used by nvm when semver invoked it.

 source ~/.nvm/nvm.sh && nvm exec 20.11.0 bash -c 'export NODE_ENV=development && yarn install && npx gulp buildPatternfly'
Running node v20.11.0 (npm v10.2.4)
error This project's package.json defines "packageManager": "[email protected]". However the current global version of Yarn is 1.22.22.

Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.
Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.
2026-04-29T17:16:27.865742Z INFO semver_analyzer::orchestrator: Running dep repo build command command=source ~/.nvm/nvm.sh && nvm exec 20.11.0 bash -c 'export NODE_ENV=development && yarn install && npx gulp buildPatternfly' worktree=/var/folders/l1/1b7gzz8n02b5nrtdq51bnj4r0000gn/T/semver-worktrees/b68570cda0923cd2/v6.4.0
2026-04-29T17:16:29.503152Z WARN semver_analyzer::orchestrator: Dep repo build failed exit_code=Some(1) stderr=error This project's package.json defines "packageManager": "[email protected]". However the current global version of Yarn is 1.22.22.
Presence of the "packageManager" field indicates that the project is meant to be used with Corepack, a tool included by default with all official Node.js distributions starting from 16.9 and 14.19.
Corepack must currently be enabled by running corepack enable in your terminal. For more information, check out https://yarnpkg.com/corepack.
2026-04-29T17:16:29.503249Z INFO semver_analyzer::orchestrator: Created dep repo worktree for CSS extraction dep_r
time ./run.sh --generate-rules \
--from v5.3.3 --to v6.4.1 \
--dep-from v5.3.0 --dep-to v6.4.0 \
--from-node-version 18 --to-node-version 20 \
--from-install-command "corepack yarn install" \
--non-interactive
[INFO] Temp directory: /var/folders/l1/1b7gzz8n02b5nrtdq51bnj4r0000gn/T//pf-rules.5tWXxN
[INFO] Path saved to .semver_runner
⠋ Loading analysis output... ⠙ Loading analysis output... ✓ Loaded analysis output (84 violations, 250 incidents) (1ms) ⠋ Loading strategies from 1 file... ⠙ Loading strategies from 1 file... ✓ Loaded strategies (67 strategies) (0ms) ⠋ Planning fixes... ⠙ Planning fixes... ⠹ Planning fixes...    2026-04-28T18:06:55.185880Z  INFO fix_engine::engine: Generated dedicated test-fix request for aboutModal.test.tsx test_file=/workspace/src/components/aboutModal/__tests__/aboutModal.test.tsx [

podman build
--build-arg PF_REACT_TO=v6.4.1
--build-arg PF_REACT_FROM=v5.3.3
--build-arg PF_DEP_FROM=v5.3.0
--build-arg PF_DEP_TO=v6.4.0
--build-arg TO_NODE_VERSION=20
--build-arg FROM_NODE_VERSION=18
--build-arg FROM_INSTALL_CMD="corepack yarn install"
-f Containerfile
-t pf-tools-from533 .

export GCP_PROJECT_ID="$ANTHROPIC_VERTEX_PROJECT_ID"
export GCP_LOCATION="$CLOUD_ML_REGION"
time ./run_container.sh --migrate quipucords-ui --base-branch original_2.1.0


[INFO]  Container runtime: podman
[INFO]  Mode: mount
[INFO]  Image: quay.io/pranavgaikwad/patternfly-tools:latest
[INFO]  App: /Users/jmatthews/synced/semver-ansible/pf-tools-builder/quipucords-ui

Indirect Behavioral Change Test Impact - Gap Analysis

Overview

The semver pipeline detects API surface changes, composition structure changes, and some source-level behavioral changes between library versions. However, a class of breaking change exists that the pipeline cannot reasonably trace end-to-end: indirect behavioral changes in internal sub-components that propagate through wrapper components and break consumer tests.

These changes share a pattern:

  1. An internal helper or sub-component changes its runtime behavior (not its API)
  2. A public component wraps that helper, inheriting the behavioral change silently
  3. Consumer code using the public component continues to work at the API level