From 18a16ba1ddafb5bfb234790c65945061e99916cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 16:12:52 +0000 Subject: [PATCH 1/9] Bump sha.js from 2.4.11 to 2.4.12 in /shell Bumps [sha.js](https://github.com/crypto-browserify/sha.js) from 2.4.11 to 2.4.12. - [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12) --- updated-dependencies: - dependency-name: sha.js dependency-version: 2.4.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- shell/yarn.lock | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/shell/yarn.lock b/shell/yarn.lock index 8156f9e413..5ffa09f730 100644 --- a/shell/yarn.lock +++ b/shell/yarn.lock @@ -12268,15 +12268,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha.js@^2.4.11: +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.12" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== From 66094b65385bb04b7fb92d570493696e6f6cab4c Mon Sep 17 00:00:00 2001 From: yonasberhe23 Date: Tue, 23 Sep 2025 12:54:19 -0700 Subject: [PATCH 2/9] fix fleet dashboard tests --- .../fleet-dashboard-workspace-card.po.ts | 26 +++++++-------- .../e2e/po/pages/fleet/fleet-dashboard.po.ts | 2 +- .../e2e/tests/pages/fleet/dashboard.spec.ts | 33 ++++++++++--------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/cypress/e2e/po/components/fleet/fleet-dashboard-workspace-card.po.ts b/cypress/e2e/po/components/fleet/fleet-dashboard-workspace-card.po.ts index 0e1278a45c..236f527249 100644 --- a/cypress/e2e/po/components/fleet/fleet-dashboard-workspace-card.po.ts +++ b/cypress/e2e/po/components/fleet/fleet-dashboard-workspace-card.po.ts @@ -12,7 +12,7 @@ class ResourcePanelPo extends ComponentPo { } stateBadge(state: string) { - return this.self().find(`.bg-${ state }`); + return this.self().find(`.badge.bg-${ state }`); } } @@ -32,6 +32,14 @@ class ExpandedPanelPo extends ComponentPo { tablePanel() { return new TablePanelPo(this.self(), this.workspace); } + + gitReposFilter() { + return CheckboxInputPo.byLabel(this.self(), 'Show Git Repos'); + } + + helmOpsFilter() { + return CheckboxInputPo.byLabel(this.self(), 'Show Helm Ops'); + } } class CardPanelPo extends ComponentPo { @@ -43,14 +51,6 @@ class CardPanelPo extends ComponentPo { this.workspace = workspace; } - gitReposFilter() { - return CheckboxInputPo.byLabel(this.self(), 'Show Git Repos'); - } - - helmOpsFilter() { - return CheckboxInputPo.byLabel(this.self(), 'Show Helm Ops'); - } - statePanel(stateDisplay) { return new StatePanelPo(`[data-testid="state-panel-${ stateDisplay }"]`, this.self(), this.workspace); } @@ -76,11 +76,11 @@ class StatePanelPo extends ComponentPo { } title() { - return this.self().find(`.title .label`); + return this.self().find('.title .state-title'); } - card(name) { - return this.self().find(`[data-testid="card-${ this.workspace }/${ name }"]`); + card(name: string) { + return this.self().find(`[data-testid="item-card-header-title"]`).contains(name); } } @@ -102,6 +102,6 @@ export default class FleetDashboardWorkspaceCardPo extends ComponentPo { } expandButton() { - return this.self().find('[data-testid="expand-button"]'); + return this.self().find(`[data-testid="workspace-expand-btn-${ this.workspace }"]`); } } diff --git a/cypress/e2e/po/pages/fleet/fleet-dashboard.po.ts b/cypress/e2e/po/pages/fleet/fleet-dashboard.po.ts index 63ab06a44b..f5b2b937fc 100644 --- a/cypress/e2e/po/pages/fleet/fleet-dashboard.po.ts +++ b/cypress/e2e/po/pages/fleet/fleet-dashboard.po.ts @@ -41,7 +41,7 @@ export class FleetDashboardListPagePo extends BaseListPagePo { } slideInPanel() { - return cy.get('[data-testid="slide-in-panel-component"] [data-testid="fleet-dashboard-resource-details-header"]'); + return cy.get('[data-testid="slide-in-panel-component"]'); } fleetDashboardEmptyState() { diff --git a/cypress/e2e/tests/pages/fleet/dashboard.spec.ts b/cypress/e2e/tests/pages/fleet/dashboard.spec.ts index ccaead66e3..8a3f914a7f 100644 --- a/cypress/e2e/tests/pages/fleet/dashboard.spec.ts +++ b/cypress/e2e/tests/pages/fleet/dashboard.spec.ts @@ -100,15 +100,16 @@ describe('Fleet Dashboard', { tags: ['@fleet', '@adminUser', '@jenkins'] }, () = expandButton.should('be.visible'); expandButton.click(); - const cardsPanel = workspaceCard.expandedPanel().cardsPanel(); + const expandedPanel = workspaceCard.expandedPanel(); + const cardsPanel = expandedPanel.cardsPanel(); cardsPanel.self().should('be.visible'); - cardsPanel.gitReposFilter().checkVisible(); - cardsPanel.gitReposFilter().isChecked(); + expandedPanel.gitReposFilter().checkVisible(); + expandedPanel.gitReposFilter().isChecked(); - cardsPanel.helmOpsFilter().checkVisible(); - cardsPanel.helmOpsFilter().isChecked(); + expandedPanel.helmOpsFilter().checkVisible(); + expandedPanel.helmOpsFilter().isChecked(); const activeStatePanel = cardsPanel.statePanel('Active'); @@ -117,10 +118,7 @@ describe('Fleet Dashboard', { tags: ['@fleet', '@adminUser', '@jenkins'] }, () = activeStatePanel.title().should('contain.text', '/1'); activeStatePanel.title().click(); - const card = activeStatePanel.card(repoName); - - card.should('be.visible'); - card.find('.title').should('contain.text', repoName); + activeStatePanel.card(repoName).should('be.visible'); }); it('Should filter by GitRepo type', () => { @@ -132,9 +130,10 @@ describe('Fleet Dashboard', { tags: ['@fleet', '@adminUser', '@jenkins'] }, () = expandButton.click(); - const cardsPanel = workspaceCard.expandedPanel().cardsPanel(); + const expandedPanel = workspaceCard.expandedPanel(); + const cardsPanel = expandedPanel.cardsPanel(); - cardsPanel.gitReposFilter().set(); + expandedPanel.gitReposFilter().set(); const activeStatePanel = cardsPanel.statePanel('Active'); activeStatePanel.self().should('not.be.visible'); @@ -151,16 +150,16 @@ describe('Fleet Dashboard', { tags: ['@fleet', '@adminUser', '@jenkins'] }, () = const cardsPanel = workspaceCard.expandedPanel().cardsPanel(); - cardsPanel.checkExists(); + cardsPanel.self().should('be.visible'); - // click 'card' mode + // click 'table' mode (first button is table mode) fleetDashboardPage.viewModeButton().self().find('[data-testid="button-group-child-0"]').click(); cardsPanel.checkNotExists(); const tablePanel = workspaceCard.expandedPanel().tablePanel(); - tablePanel.checkExists(); + tablePanel.checkVisible(); }); it('Should open slide-in panel', () => { @@ -202,10 +201,12 @@ describe('Fleet Dashboard', { tags: ['@fleet', '@adminUser', '@jenkins'] }, () = const activeStatePanel = cardsPanel.statePanel('Active'); activeStatePanel.title().click(); + activeStatePanel.card(repoName).should('be.visible').click(); - const card = activeStatePanel.card(repoName); + const details = fleetDashboardPage.slideInPanel(); - card.find('.title a').click(); + details.should('be.visible'); + details.find('.title').should('contain.text', repoName).click(); appDetails.waitForPage(null, 'bundles'); }); From 9fe21d81432d8218feda519394e60f3a1ea08256 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Thu, 25 Sep 2025 11:43:22 +0100 Subject: [PATCH 3/9] Fix disabled extension test involving PaginatedResourceTable - this previously failed, re-enabled and resolved issues --- shell/components/PaginatedResourceTable.vue | 9 +++++++-- shell/list/catalog.cattle.io.clusterrepo.vue | 4 ++-- shell/scripts/test-plugins-build.sh | 9 ++++----- shell/scripts/typegen.sh | 2 ++ shell/types/store/vuex.d.ts | 3 ++- shell/types/vue-shim.d.ts | 7 ++----- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/shell/components/PaginatedResourceTable.vue b/shell/components/PaginatedResourceTable.vue index 8411ddae3c..229ff91626 100644 --- a/shell/components/PaginatedResourceTable.vue +++ b/shell/components/PaginatedResourceTable.vue @@ -2,6 +2,7 @@ import { defineComponent } from 'vue'; import ResourceFetch from '@shell/mixins/resource-fetch'; import ResourceTable from '@shell/components/ResourceTable.vue'; +import { VuexStore } from '@shell/types/store/vuex'; /** * This is meant to enable ResourceList like capabilities outside of List pages / components @@ -130,13 +131,17 @@ export default defineComponent({ safeHeaders(): any[] { const customHeaders: any[] = this.canPaginate ? this.paginationHeaders : this.headers; - return customHeaders || this.$store.getters['type-map/headersFor'](this.schema, this.canPaginate); + const $store = this.$store as VuexStore; + + return customHeaders || $store.getters['type-map/headersFor'](this.schema, this.canPaginate); } }, methods: { clearSelection() { - this.$refs.table.clearSelection(); + const table = this.$refs.table as { clearSelection: () => void }; + + table.clearSelection(); }, } }); diff --git a/shell/list/catalog.cattle.io.clusterrepo.vue b/shell/list/catalog.cattle.io.clusterrepo.vue index ba7d66b64a..7dcd86aeb8 100644 --- a/shell/list/catalog.cattle.io.clusterrepo.vue +++ b/shell/list/catalog.cattle.io.clusterrepo.vue @@ -1,7 +1,7 @@ @@ -13,7 +13,8 @@ defineProps<{
{{ label }}
diff --git a/shell/pages/c/_cluster/apps/charts/index.vue b/shell/pages/c/_cluster/apps/charts/index.vue index e3ac6da2e4..b01435f3b1 100644 --- a/shell/pages/c/_cluster/apps/charts/index.vue +++ b/shell/pages/c/_cluster/apps/charts/index.vue @@ -82,10 +82,10 @@ export default { label: { component: markRaw(StatusLabel), componentProps: { - label: this.t('generic.installed'), - icon: 'icon-warning', - iconColor: 'warning', - tooltip: this.t('catalog.charts.statusFilterCautions.installation') + label: this.t('generic.installed'), + icon: 'icon-warning', + iconColor: 'warning', + iconTooltip: this.t('catalog.charts.statusFilterCautions.installation') } } }, @@ -98,10 +98,10 @@ export default { label: { component: markRaw(StatusLabel), componentProps: { - label: this.t('generic.upgradeable'), - icon: 'icon-warning', - iconColor: 'warning', - tooltip: this.t('catalog.charts.statusFilterCautions.upgradeable') + label: this.t('generic.upgradeable'), + icon: 'icon-warning', + iconColor: 'warning', + iconTooltip: this.t('catalog.charts.statusFilterCautions.upgradeable') } } } @@ -125,9 +125,10 @@ export default { repoOptions() { let out = this.$store.getters['catalog/repos'].map((r) => { return { - value: r._key, - label: r.nameDisplay, - weight: ( r.isRancher ? 1 : ( r.isPartner ? 2 : 3 ) ), + value: r._key, + label: r.nameDisplay, + labelTooltip: r.nameDisplay, + weight: ( r.isRancher ? 1 : ( r.isPartner ? 2 : 3 ) ), }; });