Skip to content

chore(backstop): add uniq report ids, add all theme images - #8364

Merged
mcoker merged 10 commits into
patternfly:mainfrom
mcoker:issue-8363
May 4, 2026
Merged

chore(backstop): add uniq report ids, add all theme images#8364
mcoker merged 10 commits into
patternfly:mainfrom
mcoker:issue-8363

Conversation

@mcoker

@mcoker mcoker commented May 1, 2026

Copy link
Copy Markdown
Contributor

fixes #8363

"files changed" tab is unusable because of the number of image/file changes.

The first two commits are code changes, the rest are file changes I've reviewed with @jcmill

Commit 1 - 4728132

  • Adds a dynamic "id" for the report, which labels the HTML report it generates with a title at the top, so that if you run multiple reports, it labels each as "default dark", "felt dark glass", etc.
  • Adds backstop:test:all and backstop:approve:all scripts in package.json to kick off and approve all tests with a single command.
    • For reference, took me about 42 minutes for all to run. If running it, you may want to pass caffeinate before the command if you intend on stepping away at any point so that your computer doesn't go to sleep, which will cause the active test to fail
    • Also worth noting that github currently has a 2gb max limit per push, and updating screenshots for all themes creates more than a 2gb change, so you may want to break it up into multiple commits and push each commit so you don't hit the 2gb limit on a single push.

Commit 2 - 24046ed

  • Updates the test/approve:all scripts to always run each test instead of only running the next test if the previous one exited cleanly (replaced && with ; between the tests)

Summary by CodeRabbit

New Features

  • Backstop test outputs and reports are now organized by theme combination (felt vs default, with optional dark, glass, and high-contrast variants)
  • Added new npm scripts (backstop:test:all and backstop:approve:all) to run all theme test variants sequentially

@coderabbitai

coderabbitai Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (299)
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_card-view_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_card-view_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_card-view_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_dashboard_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_dashboard_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_dashboard_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav---expanded-on-mobile_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav---expanded-on-mobile_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav---expanded-on-mobile_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded---expanded-on-mobile_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded---expanded-on-mobile_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded---expanded-on-mobile_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav-text-expanded_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_docked-nav_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_multiple-sections_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_multiple-sections_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_multiple-sections_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_with-drawer_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_with-drawer_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html-demos_with-drawer_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_docked_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_docked_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__ai_generative-uis_compass_html_docked_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html-demos_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html-demos_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html-demos_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_about-modal_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_bordered_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_bordered_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_bordered_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_definition-list_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_definition-list_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_definition-list_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fixed_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fixed_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fixed_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fluid_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fluid_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_fluid_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_large-bordered_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_large-bordered_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_large-bordered_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_toggle-icon-at-start_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_toggle-icon-at-start_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_accordion_html_toggle-icon-at-start_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-multiple-groups_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-multiple-groups_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-multiple-groups_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-single-group_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-single-group_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-single-group_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-cancel-button_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-cancel-button_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-cancel-button_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-icons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-icons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_action-list-with-icons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_vertical-action-list_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_vertical-action-list_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_action-list_html_vertical-action-list_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-horizontal-form_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-horizontal-form_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-horizontal-form_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-stacked-form_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-stacked-form_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_inline-alert-in-stacked-form_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_toast_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_toast_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html-demos_toast_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_custom-icon_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_custom-icon_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_custom-icon_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_expandable_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_expandable_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_expandable_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-plain_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-plain_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-plain_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-types_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-types_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-types_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-variations_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-variations_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_inline-variations_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_static-alert-group_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_static-alert-group_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_static-alert-group_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_toast-alert-group_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_toast-alert-group_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_toast-alert-group_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_types_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_types_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_types_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_variations_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_variations_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_alert_html_variations_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_bordered_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_bordered_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_bordered_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_extra-large_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_extra-large_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_extra-large_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_large_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_large_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_large_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_medium_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_medium_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_medium_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_small_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_small_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_avatar_html_small_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html-demos_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html-demos_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html-demos_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_back-to-top_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_backdrop_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_backdrop_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_backdrop_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_background-image_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_background-image_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_background-image_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_disabled_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_disabled_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_disabled_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_read_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_read_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_read_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_unread_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_unread_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_badge_html_unread_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_topbottom_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_topbottom_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html-demos_topbottom_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_banner-with-links_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_banner-with-links_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_banner-with-links_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_pill_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_pill_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_pill_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_status_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_status_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_banner_html_status_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_responsive_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_responsive_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_brand_html_responsive_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_basic_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_basic_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_basic_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-buttons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-buttons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-buttons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-heading_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-heading_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-heading_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-menu-dropdown_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-menu-dropdown_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_with-menu-dropdown_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_without-home-link_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_without-home-link_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_breadcrumb_html_without-home-link_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---complete_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---complete_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---complete_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---initial_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---initial_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---initial_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---loading_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---loading_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html-demos_progress-button---loading_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_aria-disabled_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_aria-disabled_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_aria-disabled_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_block-level_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_block-level_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_block-level_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_call-to-action_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_call-to-action_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_call-to-action_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_circle-buttons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_circle-buttons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_circle-buttons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_clicked-buttons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_clicked-buttons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_clicked-buttons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_counts_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_counts_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_counts_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_disabled_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_disabled_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_disabled_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_favorite_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_favorite_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_favorite_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_hamburger_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_hamburger_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_hamburger_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_inline-link-as-span_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_inline-link-as-span_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_inline-link-as-span_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_links-as-buttons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_links-as-buttons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_links-as-buttons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_plain-with-no-padding_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_plain-with-no-padding_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_plain-with-no-padding_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_progress_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_progress_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_progress_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_settings_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_settings_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_settings_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_small-buttons_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_small-buttons_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_small-buttons_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_stateful_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_stateful_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_stateful_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_types_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_types_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_types_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_variations_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_variations_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_button_html_variations_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_aggregate-status-card_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_aggregate-status-card_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_aggregate-status-card_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_details-card_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_details-card_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_details-card_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_events-view_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_events-view_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_events-view_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-collapsed_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-collapsed_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-collapsed_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-expanded_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-expanded_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-grid-expanded_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-split_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-split_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_horizontal-split_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_log-view_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_log-view_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_log-view_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle-on-the-right_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle-on-the-right_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle-on-the-right_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_nested-cards-with-expand-toggle_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-notifications_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-notifications_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-notifications_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-with-popover_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-with-popover_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card-expanded-with-popover_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-card_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-tabbed-card_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-tabbed-card_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_status-tabbed-card_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-1_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-1_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-1_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-2_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-2_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_trend-card-2_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-1_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-1_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-1_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-2_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-2_0_document_1_tablet.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-2_0_document_2_desktop.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-3_0_document_0_mobile.png is excluded by !**/*.png
  • backstop_data/bitmaps_reference/pf-core-default__components_card_html-demos_utilization-card-3_0_document_1_tablet.png is excluded by !**/*.png

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: c283e7c8-86de-4d8b-a731-d1e7de8d745a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

The PR makes backstop's exported configuration ID dynamic based on active theme CLI flags (--felt/--dark/--glass/--high-contrast) and adds two npm scripts to run all Backstop test and approve variants sequentially.

Changes

Cohort / File(s) Summary
Backstop Configuration
backstop.js
Changed exported id from constant 'pf-core' to dynamically generated identifier that encodes active theme flags, enabling theme-specific reference/test output grouping and report naming.
NPM Scripts
package.json
Added two new scripts: backstop:test:all and backstop:approve:all to chain all Backstop test and approve variants in sequential execution.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • patternfly/patternfly#8276: Extends theme flag handling and adds corresponding Backstop scripts alongside dynamic ID configuration.
  • patternfly/patternfly#8041: Modifies other module.exports configuration options in backstop.js (engine, engineOptions, scenarioDefaults, resembleOutputOptions).

Suggested reviewers

  • jcmill
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title follows conventional commit format with type and scope, and accurately describes the main changes: making backstop report IDs unique per theme and adding npm scripts to test all theme variants.
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.

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


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@patternfly-build

patternfly-build commented May 1, 2026

Copy link
Copy Markdown
Collaborator

@mcoker
mcoker requested a review from jcmill May 1, 2026 21:09

@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: 2

🧹 Nitpick comments (1)
backstop.js (1)

11-13: 💤 Low value

idPrefix is a redundant single-use variable.

idPrefix is only ever used once as the first array element. Inline it for less noise.

♻️ Proposed simplification
-const idPrefix = 'pf-core';
 const backstopId = [
-  idPrefix,
+  'pf-core',
   isFelt ? 'felt' : 'default',
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backstop.js` around lines 11 - 13, The idPrefix variable is redundant: remove
the const idPrefix = 'pf-core' declaration and inline the string directly in the
backstopId array (replace idPrefix with 'pf-core' as the first element), then
delete the now-unused idPrefix identifier to reduce noise and keep backstopId as
the sole declaration referencing that value.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@backstop.js`:
- Around line 11-18: The change to backstopId (constructed from idPrefix and
flags in the backstopId array using idPrefix, isFelt, isDark, isGlass,
isHighContrast) alters the default variant id from "pf-core" to
"pf-core-default", orphaning existing reference screenshots; either revert the
id change (remove the default branch so backstopId remains idPrefix for the
default case) or, if the new id is intentional, add a clear note to the
PR/README and run/regenerate Backstop references (backstop reference or backstop
approve) so the reference images are recreated to match the new backstopId
naming.

In `@package.json`:
- Line 22: The "backstop:test:all" npm script currently chains many
backstop:test variants with semicolons which hides intermediate failures; update
the script so failures propagate by either replacing the semicolon chain with a
failure-aware chain (use && between commands) or, preferably, use npm-run-all
(e.g., npm-run-all -s backstop:test backstop:test:dark ... ) to run them
sequentially and fail fast; ensure you update the "backstop:test:all" script
entry to reference the exact names of the constituent scripts (backstop:test,
backstop:test:dark, backstop:test:glass, backstop:test:hc,
backstop:test:dark-hc, backstop:test:dark-glass, backstop:test:felt,
backstop:test:felt-dark, backstop:test:felt-glass, backstop:test:felt-hc,
backstop:test:felt-dark-hc, backstop:test:felt-dark-glass) and add npm-run-all
as a devDependency if choosing that approach.

---

Nitpick comments:
In `@backstop.js`:
- Around line 11-13: The idPrefix variable is redundant: remove the const
idPrefix = 'pf-core' declaration and inline the string directly in the
backstopId array (replace idPrefix with 'pf-core' as the first element), then
delete the now-unused idPrefix identifier to reduce noise and keep backstopId as
the sole declaration referencing that value.
🪄 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 UI (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: d4660023-2390-4f27-8d3a-b18fbaceb7df

📥 Commits

Reviewing files that changed from the base of the PR and between a3a197f and 24046ed.

📒 Files selected for processing (2)
  • backstop.js
  • package.json

Comment thread backstop.js
Comment on lines +11 to +18
const idPrefix = 'pf-core';
const backstopId = [
idPrefix,
isFelt ? 'felt' : 'default',
...(isDark ? ['dark'] : []),
...(isGlass ? ['glass'] : []),
...(isHighContrast ? ['high-contrast'] : [])
].join('-');

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 | 🟡 Minor | ⚡ Quick win

id change for the default variant orphans existing reference screenshots.

BackstopJS's id field is used for screenshot naming — the id is embedded as a prefix in each screenshot filename within the bitmaps_reference and bitmaps_test directories. Changing the default-run id from pf-core to pf-core-default means any previously stored reference images (named pf-core_…) will no longer match new test screenshots (named pf-core-default_…), so the default variant's reference set must be regenerated via backstop reference or backstop approve after this change lands. If that's part of the intended workflow for this PR, no code change is needed — just worth calling out explicitly.

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

In `@backstop.js` around lines 11 - 18, The change to backstopId (constructed from
idPrefix and flags in the backstopId array using idPrefix, isFelt, isDark,
isGlass, isHighContrast) alters the default variant id from "pf-core" to
"pf-core-default", orphaning existing reference screenshots; either revert the
id change (remove the default branch so backstopId remains idPrefix for the
default case) or, if the new id is intentional, add a clear note to the
PR/README and run/regenerate Backstop references (backstop reference or backstop
approve) so the reference images are recreated to match the new backstopId
naming.

Comment thread package.json
"backstop:test:felt-hc": "backstop test --config='backstop.js' --felt --high-contrast",
"backstop:test:felt-dark-hc": "backstop test --config='backstop.js' --felt --dark --high-contrast",
"backstop:test:felt-dark-glass": "backstop test --config='backstop.js' --felt --dark --glass",
"backstop:test:all": "npm run backstop:test; npm run backstop:test:dark; npm run backstop:test:glass; npm run backstop:test:hc; npm run backstop:test:dark-hc; npm run backstop:test:dark-glass; npm run backstop:test:felt; npm run backstop:test:felt-dark; npm run backstop:test:felt-glass; npm run backstop:test:felt-hc; npm run backstop:test:felt-dark-hc; npm run backstop:test:felt-dark-glass",

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 | 🟡 Minor | ⚡ Quick win

; chaining silently swallows intermediate failures — overall exit code reflects only the last run.

With ;, if backstop:test (the first variant) fails but backstop:test:felt-dark-glass (the last) passes, npm run backstop:test:all exits 0, masking the failure. This is harmless for purely local/manual use where terminal output is inspected, but would produce false-green results in CI.

If CI integration is planned, consider npm-run-all (already a common addition in projects like this) to sequence commands and propagate any failure:

♻️ Alternative using npm-run-all (if added as a dev dep)
-"backstop:test:all": "npm run backstop:test; npm run backstop:test:dark; ...",
+"backstop:test:all": "npm-run-all backstop:test backstop:test:dark backstop:test:glass backstop:test:hc backstop:test:dark-hc backstop:test:dark-glass backstop:test:felt backstop:test:felt-dark backstop:test:felt-glass backstop:test:felt-hc backstop:test:felt-dark-hc backstop:test:felt-dark-glass",
-"backstop:approve:all": "npm run backstop:approve; npm run backstop:approve:dark; ...",
+"backstop:approve:all": "npm-run-all backstop:approve backstop:approve:dark backstop:approve:glass backstop:approve:hc backstop:approve:dark-hc backstop:approve:dark-glass backstop:approve:felt backstop:approve:felt-dark backstop:approve:felt-glass backstop:approve:felt-hc backstop:approve:felt-dark-hc backstop:approve:felt-dark-glass",

Also applies to: 35-35

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

In `@package.json` at line 22, The "backstop:test:all" npm script currently chains
many backstop:test variants with semicolons which hides intermediate failures;
update the script so failures propagate by either replacing the semicolon chain
with a failure-aware chain (use && between commands) or, preferably, use
npm-run-all (e.g., npm-run-all -s backstop:test backstop:test:dark ... ) to run
them sequentially and fail fast; ensure you update the "backstop:test:all"
script entry to reference the exact names of the constituent scripts
(backstop:test, backstop:test:dark, backstop:test:glass, backstop:test:hc,
backstop:test:dark-hc, backstop:test:dark-glass, backstop:test:felt,
backstop:test:felt-dark, backstop:test:felt-glass, backstop:test:felt-hc,
backstop:test:felt-dark-hc, backstop:test:felt-dark-glass) and add npm-run-all
as a devDependency if choosing that approach.

@jcmill jcmill 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.

🕵️‍♂️

@mcoker
mcoker merged commit 73de430 into patternfly:main May 4, 2026
5 checks passed
@mcoker
mcoker deleted the issue-8363 branch May 4, 2026 17:07
@patternfly-build

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 6.5.0-prerelease.82 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add baseline screenshots for all of the themes

3 participants