Skip to content

Commit e6801c9

Browse files
authored
Merge pull request #15988 from yonasberhe23/fix_repositories_tests_214
Automation: Refactor repository disable/enable test
2 parents 880d193 + 18849ac commit e6801c9

File tree

1 file changed

+66
-35
lines changed

1 file changed

+66
-35
lines changed

cypress/e2e/tests/pages/manager/repositories.spec.ts

Lines changed: 66 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -272,53 +272,84 @@ describe('Cluster Management Helm Repositories', { testIsolation: 'off', tags: [
272272
// delete repo
273273
cy.deleteRancherResource('v1', 'catalog.cattle.io.clusterrepos', this.repoName);
274274
});
275+
});
276+
277+
describe('Repository Disable/Enable', { testIsolation: 'off', tags: ['@manager', '@adminUser'] }, () => {
278+
const repositoriesPage = new ChartRepositoriesPagePo(undefined, 'manager');
279+
let repoName: string;
275280

276-
it('can disable/enable a repository', function() {
281+
before(() => {
282+
cy.login();
277283
// The context menu can slightly clip at the top of the screen. This ensures it's visible.
278284
cy.viewport(1280, 720);
279285

280-
// create repo
286+
cy.createE2EResourceName('repo').then((name) => {
287+
repoName = name;
288+
cy.createRancherResource('v1', 'catalog.cattle.io.clusterrepos', {
289+
type: 'catalog.cattle.io.clusterrepo',
290+
metadata: { name },
291+
spec: {
292+
gitRepo: gitRepoUrl,
293+
gitBranch: chartBranch
294+
}
295+
}).then(() => {
296+
// Wait for repository to be downloaded and ready
297+
cy.waitForRepositoryDownload('v1', 'catalog.cattle.io.clusterrepos', name);
298+
});
299+
});
300+
});
301+
302+
it('can disable a repository', () => {
281303
ChartRepositoriesPagePo.navTo();
282304
repositoriesPage.waitForPage();
283-
repositoriesPage.create();
284-
repositoriesPage.createEditRepositories().waitForPage();
285-
repositoriesPage.createEditRepositories().nameNsDescription().name().set(this.repoName);
286-
repositoriesPage.createEditRepositories().nameNsDescription().description().set(`${ this.repoName }-description`);
287-
repositoriesPage.createEditRepositories().repoRadioBtn().set(1);
288-
repositoriesPage.createEditRepositories().gitRepoUrl().set(gitRepoUrl);
289-
repositoriesPage.createEditRepositories().gitBranch().set(chartBranch);
290-
repositoriesPage.createEditRepositories().saveAndWaitForRequests('POST', CLUSTER_REPOS_BASE_URL).its('response.statusCode').should('eq', 201);
291-
repositoriesPage.waitForPage();
305+
cy.waitForResourceState('v1', 'catalog.cattle.io.clusterrepos', repoName).then(() => {
306+
// Check if repository is already disabled, if so skip
307+
repositoriesPage.list().details(repoName, 1).then(($el) => {
308+
if ($el.text().includes('Disabled')) {
309+
cy.log(`Repository ${ repoName } is already disabled, skipping disable action`);
292310

293-
// check list details
294-
cy.waitForRepositoryDownload('v1', 'catalog.cattle.io.clusterrepos', this.repoName).then(() => {
295-
repositoriesPage.list().details(this.repoName, 1).contains('Active', MEDIUM_TIMEOUT_OPT).should('be.visible');
296-
// refresh should be displayed for an enabled repo
297-
repositoriesPage.list().actionMenu(this.repoName).getMenuItem('Refresh').should('be.visible');
298-
// close action menu
299-
repositoriesPage.list().actionMenuClose(this.repoName);
300-
});
311+
return;
312+
}
301313

302-
// disable repo
303-
cy.waitForResourceState('v1', 'catalog.cattle.io.clusterrepos', this.repoName).then(() => {
304-
repositoriesPage.list().actionMenu(this.repoName).getMenuItem('Disable').click();
305-
repositoriesPage.list().details(this.repoName, 1).contains('Disabled').should('be.visible');
314+
repositoriesPage.list().actionMenu(repoName).getMenuItem('Disable').click();
315+
repositoriesPage.list().details(repoName, 1).contains('Disabled').should('be.visible');
316+
});
306317
});
318+
});
307319

308-
// refresh should NOT be displayed for a disabled repo
309-
cy.waitForResourceState('v1', 'catalog.cattle.io.clusterrepos', this.repoName).then(() => {
310-
repositoriesPage.list().actionMenu(this.repoName).getMenuItem('Refresh').should('not.exist');
311-
// close action menu
312-
repositoriesPage.list().actionMenuClose(this.repoName);
313-
});
320+
it('refresh menu item is not displayed for disabled repository', () => {
321+
ChartRepositoriesPagePo.navTo();
322+
repositoriesPage.waitForPage();
323+
repositoriesPage.list().details(repoName, 1).contains('Disabled').should('be.visible');
324+
325+
// Verify refresh is not displayed for disabled repo
326+
repositoriesPage.list().actionMenu(repoName).getMenuItem('Refresh').should('not.exist');
327+
// close action menu
328+
repositoriesPage.list().actionMenuClose(repoName);
329+
});
314330

315-
// enable repo
316-
cy.waitForResourceState('v1', 'catalog.cattle.io.clusterrepos', this.repoName).then(() => {
317-
repositoriesPage.list().actionMenu(this.repoName).getMenuItem('Enable').click();
318-
repositoriesPage.list().details(this.repoName, 1).contains('Active', MEDIUM_TIMEOUT_OPT).should('be.visible');
331+
it('can enable a repository', () => {
332+
// Ensure repository exists before enabling
333+
ChartRepositoriesPagePo.navTo();
334+
repositoriesPage.waitForPage();
335+
cy.waitForResourceState('v1', 'catalog.cattle.io.clusterrepos', repoName).then(() => {
336+
// Check if repository is already enabled, if so skip
337+
repositoriesPage.list().details(repoName, 1).then(($el) => {
338+
if ($el.text().includes('Active')) {
339+
cy.log(`Repository ${ repoName } is already enabled, skipping enable action`);
340+
341+
return;
342+
}
343+
344+
repositoriesPage.list().actionMenu(repoName).getMenuItem('Enable').click();
345+
repositoriesPage.list().details(repoName, 1).contains('Active', MEDIUM_TIMEOUT_OPT).should('be.visible');
346+
});
319347
});
348+
});
320349

321-
// delete repo
322-
cy.deleteRancherResource('v1', 'catalog.cattle.io.clusterrepos', this.repoName);
350+
after(() => {
351+
if (repoName) {
352+
cy.deleteRancherResource('v1', 'catalog.cattle.io.clusterrepos', repoName, false);
353+
}
323354
});
324355
});

0 commit comments

Comments
 (0)