dashboard/cypress/e2e/tests/pages/extensions/kubewarden.spec.ts

125 lines
4.1 KiB
TypeScript

import ExtensionsPagePo from '@/cypress/e2e/po/pages/extensions.po';
import { ChartsPage } from '@/cypress/e2e/po/pages/explorer/charts/charts.po';
import RepositoriesPagePo from '@/cypress/e2e/po/pages/chart-repositories.po';
import ProductNavPo from '@/cypress/e2e/po/side-bars/product-side-nav.po';
import KubewardenExtensionPo from '@/cypress/e2e/po/pages/extensions/kubewarden.po';
import { catchTargetPageException } from '@/cypress/support/utils/exception-utils';
const extensionName = 'kubewarden';
const gitRepoName = 'rancher-extensions';
let removeExtensions = false;
describe('Kubewarden Extension', { tags: ['@extensions', '@adminUser'] }, () => {
before(() => {
catchTargetPageException('Navigation cancelled');
cy.login();
const extensionsPo = new ExtensionsPagePo();
extensionsPo.goTo();
extensionsPo.waitForPage();
// install the ui-plugin-charts repo
extensionsPo.addExtensionsRepository('https://github.com/rancher/ui-plugin-charts', 'main', gitRepoName).then(() => {
removeExtensions = true;
});
});
beforeEach(() => {
cy.login();
});
it('Should install Kubewarden extension', () => {
const extensionsPo = new ExtensionsPagePo();
extensionsPo.goTo();
extensionsPo.waitForPage();
extensionsPo.extensionTabAvailableClick();
extensionsPo.waitForPage(null, 'available');
// click on install button on card
extensionsPo.extensionCardInstallClick(extensionName);
extensionsPo.extensionInstallModal().should('be.visible');
// click install
extensionsPo.installModalInstallClick();
// check the extension reload banner and reload the page
extensionsPo.extensionReloadBanner().should('be.visible');
extensionsPo.extensionReloadClick();
// make sure extension card is in the installed tab
extensionsPo.extensionTabInstalledClick();
extensionsPo.extensionCardClick(extensionName);
extensionsPo.extensionDetailsTitle().should('contain', extensionName);
extensionsPo.extensionDetailsCloseClick();
});
it('Check Apps/Charts and Apps/Repo pages for route collisions', () => {
const chartsPage: ChartsPage = new ChartsPage();
chartsPage.goTo();
chartsPage.waitForPage();
chartsPage.self().getId('charts-header-title').invoke('text').should('contain', 'Charts');
const appRepoList: RepositoriesPagePo = new RepositoriesPagePo('local', 'apps');
appRepoList.goTo();
appRepoList.waitForPage();
cy.get('h1').contains('Repositories').should('exist');
});
it('Side-nav should contain Kubewarden menu item', () => {
const kubewardenPo = new KubewardenExtensionPo();
const productMenu = new ProductNavPo();
kubewardenPo.goTo();
kubewardenPo.waitForPage();
const kubewardenNavItem = productMenu.groups().contains('Kubewarden');
kubewardenNavItem.should('exist');
kubewardenNavItem.click();
});
it('Kubewarden dashboard view should exist', () => {
const kubewardenPo = new KubewardenExtensionPo();
kubewardenPo.goTo();
kubewardenPo.waitForPage();
cy.get('h1').contains('Kubewarden').should('exist');
cy.get('button').contains('Install Kubewarden').should('exist');
});
it('Should uninstall Kubewarden', () => {
const extensionsPo = new ExtensionsPagePo();
extensionsPo.goTo();
extensionsPo.waitForPage();
extensionsPo.extensionTabInstalledClick();
// click on uninstall button on card
extensionsPo.extensionCardUninstallClick(extensionName);
extensionsPo.extensionUninstallModal().should('be.visible');
extensionsPo.uninstallModaluninstallClick();
// let's check the extension reload banner and reload the page
extensionsPo.extensionReloadBanner().should('be.visible');
extensionsPo.extensionReloadClick();
// make sure extension card is in the available tab
extensionsPo.extensionTabAvailableClick();
extensionsPo.extensionCardClick(extensionName);
extensionsPo.extensionDetailsTitle().should('contain', extensionName);
});
after(() => {
if ( removeExtensions ) {
cy.deleteRancherResource('v1', 'catalog.cattle.io.clusterrepos', gitRepoName);
}
});
});