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