forked from rancher/dashboard
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkubewarden.spec.ts
More file actions
138 lines (109 loc) · 4.95 KB
/
kubewarden.spec.ts
File metadata and controls
138 lines (109 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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';
import { qase } from '@/cypress/support/qase';
const extensionName = 'kubewarden';
const gitRepoName = 'rancher-extensions';
let removeExtensions = false;
function verifyKubewardenInstalledDetails(extensionsPo: ExtensionsPagePo) {
extensionsPo.waitForTabs();
extensionsPo.extensionTabInstalledClick();
extensionsPo.waitForPage(undefined, 'installed');
extensionsPo.extensionCardClick(extensionName);
extensionsPo.extensionDetailsTitle().should('contain', extensionName);
extensionsPo.extensionDetailsCloseClick();
}
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();
});
qase(1430, it('Should install Kubewarden extension', () => {
const extensionsPo = new ExtensionsPagePo();
extensionsPo.goTo();
extensionsPo.waitForPage();
// Idempotent: no Installed tab → install Kubewarden from catalog (nothing installed yet).
// Installed tab → open it: Kubewarden card present → only assert details; absent → install
extensionsPo.checkForExtensionTab('installed').then((installedTabRendered) => {
if (!installedTabRendered) {
extensionsPo.installExtensionFromCatalog(extensionName, gitRepoName, 'kwInstall');
verifyKubewardenInstalledDetails(extensionsPo);
return;
}
extensionsPo.extensionTabInstalledClick();
extensionsPo.waitForPage(undefined, 'installed');
extensionsPo.checkForExtensionCardWithName(extensionName).then((kubewardenCardPresent) => {
if (kubewardenCardPresent) {
extensionsPo.extensionCardClick(extensionName);
extensionsPo.extensionDetailsTitle().should('contain', extensionName);
extensionsPo.extensionDetailsCloseClick();
} else {
extensionsPo.installExtensionFromCatalog(extensionName, gitRepoName, 'kwInstall');
verifyKubewardenInstalledDetails(extensionsPo);
}
});
});
}));
qase(1429, 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('local', 'apps');
appRepoList.waitForPage();
cy.get('h1').contains('Repositories').should('exist');
}));
qase(1431, 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('Admission Policy Management');
kubewardenNavItem.should('exist');
kubewardenNavItem.click();
}));
qase(1432, 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');
}));
qase(1433, it('Should uninstall Kubewarden', () => {
const extensionsPo = new ExtensionsPagePo();
extensionsPo.goTo();
extensionsPo.waitForPage();
extensionsPo.waitForTabs();
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);
}
});
});