Skip to content

Commit 3cbc61e

Browse files
authored
feat: added images and pod config redirects and hidden information in the workspace create/edit wizard card list (#957)
* feat: images and pod config redirects and hidden information should be evident in the workspace create/edit wizard Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com> * feat: images and pod config redirects and hidden information should be evident in the workspace create/edit wizard Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com> * feat: images and pod config redirects and hidden information should be evident in the workspace create/edit wizard Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com> * feat: images and pod config redirects and hidden information should be evident in the workspace create/edit wizard Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com> * feat: images and pod config redirects and hidden information should be evident in the workspace create/edit wizard Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com> --------- Signed-off-by: paulovmr <832830+paulovmr@users.noreply.github.com>
1 parent 697ffd7 commit 3cbc61e

22 files changed

+2638
-155
lines changed

workspaces/frontend/src/__tests__/cypress/cypress/pages/workspaces/createWorkspace.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,55 @@ class CreateWorkspace extends WorkspaceForm {
116116
clickAttachNewSecret(): Cypress.Chainable<JQuery<HTMLElement>> {
117117
return cy.findByTestId('attach-new-secret-button').click();
118118
}
119+
120+
assertCardHasHiddenIndicator(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
121+
const normalizedId = cardId.replace(/ /g, '-');
122+
cy.get(`#${normalizedId}`).should('have.class', 'workspace-option-card--hidden');
123+
return cy.get(`#${normalizedId}`).within(() => {
124+
cy.get('[data-testid*="hidden-icon"]').should('exist');
125+
});
126+
}
127+
128+
assertCardHasRedirectIndicator(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
129+
const normalizedId = cardId.replace(/ /g, '-');
130+
cy.get(`#${normalizedId}`).should('have.class', 'workspace-option-card--redirected');
131+
return cy.get(`#${normalizedId}`).within(() => {
132+
cy.get('[data-testid*="redirect-icon"]').should('exist');
133+
});
134+
}
135+
136+
assertCardHasBothIndicators(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
137+
const normalizedId = cardId.replace(/ /g, '-');
138+
cy.get(`#${normalizedId}`)
139+
.should('have.class', 'workspace-option-card--hidden')
140+
.and('have.class', 'workspace-option-card--redirected');
141+
return cy.get(`#${normalizedId}`).within(() => {
142+
cy.get('[data-testid*="hidden-icon"]').should('exist');
143+
cy.get('[data-testid*="redirect-icon"]').should('exist');
144+
});
145+
}
146+
147+
assertCardDoesNotHaveHiddenIndicator(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
148+
return cy
149+
.get(`#${cardId.replace(/ /g, '-')}`)
150+
.should('not.have.class', 'workspace-option-card--hidden');
151+
}
152+
153+
assertCardDoesNotHaveRedirectIndicator(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
154+
return cy
155+
.get(`#${cardId.replace(/ /g, '-')}`)
156+
.should('not.have.class', 'workspace-option-card--redirected');
157+
}
158+
159+
assertCardIsSelected(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
160+
return cy.get(`#${cardId.replace(/ /g, '-')}`).should('have.class', 'pf-m-selected');
161+
}
162+
163+
assertCardHasDefaultBadge(cardId: string): Cypress.Chainable<JQuery<HTMLElement>> {
164+
return cy.get(`#${cardId.replace(/ /g, '-')}`).within(() => {
165+
cy.contains('Default').should('be.visible');
166+
});
167+
}
119168
}
120169

121170
export const createWorkspace = new CreateWorkspace();

workspaces/frontend/src/__tests__/cypress/cypress/tests/mocked/workspaces/createWorkspace.cy.ts

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ const selectWorkspaceKind = (kindName: string): void => {
3636
};
3737

3838
const selectImage = (imageId: string): void => {
39-
createWorkspace.clickExtraFilter('showRedirected');
39+
createWorkspace.checkExtraFilter('showRedirected');
40+
createWorkspace.checkExtraFilter('showHidden');
4041
createWorkspace.selectImage(imageId);
4142
createWorkspace.assertImageSelected(imageId);
4243
createWorkspace.clickNext();
@@ -141,17 +142,18 @@ describe('Create workspace', () => {
141142
createWorkspace.clickNext();
142143
createWorkspace.assertProgressStepVisible(STEP_NAMES.IMAGE);
143144
createWorkspace.assertPreviousButtonEnabled();
144-
createWorkspace.assertNextButtonDisabled();
145+
createWorkspace.assertNextButtonEnabled();
145146

146-
createWorkspace.clickExtraFilter('showRedirected');
147+
createWorkspace.checkExtraFilter('showRedirected');
148+
createWorkspace.checkExtraFilter('showHidden');
147149
createWorkspace.selectImage(mockImage.id);
148150
createWorkspace.assertImageSelected(mockImage.id);
149151
createWorkspace.assertNextButtonEnabled();
150152

151153
// Step 3: Select Pod Config
152154
createWorkspace.clickNext();
153155
createWorkspace.assertProgressStepVisible(STEP_NAMES.POD_CONFIG);
154-
createWorkspace.assertNextButtonDisabled();
156+
createWorkspace.assertNextButtonEnabled();
155157

156158
createWorkspace.selectPodConfig(mockPodConfig.id);
157159
createWorkspace.assertPodConfigSelected(mockPodConfig.id);
@@ -197,8 +199,10 @@ describe('Create workspace', () => {
197199
// Go back to image selection
198200
createWorkspace.clickPrevious();
199201
createWorkspace.assertProgressStepVisible(STEP_NAMES.IMAGE);
200-
createWorkspace.clickExtraFilter('showRedirected');
201-
createWorkspace.assertImageSelected(mockImage.id);
202+
createWorkspace.assertExtraFilterChecked('showRedirected');
203+
createWorkspace.findImageCard(mockImage.id).should('not.exist');
204+
createWorkspace.checkExtraFilter('showHidden');
205+
createWorkspace.findImageCard(mockImage.id).should('be.visible');
202206

203207
// Go back to kind selection
204208
createWorkspace.clickPrevious();
@@ -243,7 +247,8 @@ describe('Create workspace', () => {
243247
createWorkspace.selectKind(mockWorkspaceKind.name);
244248
createWorkspace.clickNext();
245249

246-
createWorkspace.clickExtraFilter('showRedirected');
250+
createWorkspace.checkExtraFilter('showRedirected');
251+
createWorkspace.checkExtraFilter('showHidden');
247252
createWorkspace.selectImage(mockImage.id);
248253
createWorkspace.clickNext();
249254

@@ -316,7 +321,8 @@ describe('Create workspace', () => {
316321
createWorkspace.selectKind(mockWorkspaceKindWithMultipleImages.name);
317322
createWorkspace.clickNext();
318323

319-
createWorkspace.clickExtraFilter('showRedirected');
324+
createWorkspace.checkExtraFilter('showRedirected');
325+
createWorkspace.checkExtraFilter('showHidden');
320326
// Select first image
321327
createWorkspace.selectImage(mockImage.id);
322328
createWorkspace.assertImageSelected(mockImage.id);
@@ -365,7 +371,8 @@ describe('Create workspace', () => {
365371
createWorkspace.selectKind(mockWorkspaceKindWithMultiplePodConfigs.name);
366372
createWorkspace.clickNext();
367373

368-
createWorkspace.clickExtraFilter('showRedirected');
374+
createWorkspace.checkExtraFilter('showRedirected');
375+
createWorkspace.checkExtraFilter('showHidden');
369376
createWorkspace.selectImage(mockImage.id);
370377
createWorkspace.clickNext();
371378

@@ -402,7 +409,8 @@ describe('Create workspace', () => {
402409
createWorkspace.selectKind(mockWorkspaceKind.name);
403410
createWorkspace.clickNext();
404411

405-
createWorkspace.clickExtraFilter('showRedirected');
412+
createWorkspace.checkExtraFilter('showRedirected');
413+
createWorkspace.checkExtraFilter('showHidden');
406414
createWorkspace.selectImage(mockImage.id);
407415
createWorkspace.clickNext();
408416

@@ -416,9 +424,7 @@ describe('Create workspace', () => {
416424
createWorkspace.selectKind(mockWorkspaceKind2.name);
417425
createWorkspace.clickNext();
418426

419-
// Verify previous image selection is not applied
420-
// (the UI should show unselected state or different options)
421-
createWorkspace.assertNextButtonDisabled();
427+
createWorkspace.assertNextButtonEnabled();
422428
});
423429
});
424430

@@ -479,7 +485,8 @@ describe('Create workspace', () => {
479485
createWorkspace.selectKind(mockWorkspaceKindSingleImage.name);
480486
createWorkspace.clickNext();
481487

482-
createWorkspace.clickExtraFilter('showRedirected');
488+
createWorkspace.checkExtraFilter('showRedirected');
489+
createWorkspace.checkExtraFilter('showHidden');
483490
// Select the single available image
484491
createWorkspace.selectImage(mockImage.id);
485492
createWorkspace.assertImageSelected(mockImage.id);
@@ -514,7 +521,8 @@ describe('Create workspace', () => {
514521
createWorkspace.selectKind(mockWorkspaceKindSinglePodConfig.name);
515522
createWorkspace.clickNext();
516523

517-
createWorkspace.clickExtraFilter('showRedirected');
524+
createWorkspace.checkExtraFilter('showRedirected');
525+
createWorkspace.checkExtraFilter('showHidden');
518526
createWorkspace.selectImage(mockImage.id);
519527
createWorkspace.clickNext();
520528

@@ -693,7 +701,8 @@ describe('Create workspace', () => {
693701
createWorkspace.selectKind(mockWorkspaceKindWithMultipleOptions.name);
694702
createWorkspace.clickNext();
695703

696-
createWorkspace.clickExtraFilter('showRedirected');
704+
createWorkspace.checkExtraFilter('showRedirected');
705+
createWorkspace.checkExtraFilter('showHidden');
697706
createWorkspace.selectImage(mockImage.id);
698707
createWorkspace.clickNext();
699708

@@ -713,7 +722,8 @@ describe('Create workspace', () => {
713722
createWorkspace.selectKind(mockWorkspaceKindWithMultipleOptions.name);
714723
createWorkspace.clickNext();
715724

716-
createWorkspace.clickExtraFilter('showRedirected');
725+
createWorkspace.checkExtraFilter('showRedirected');
726+
createWorkspace.checkExtraFilter('showHidden');
717727
createWorkspace.selectImage(mockImage.id);
718728
createWorkspace.clickNext();
719729

@@ -730,7 +740,8 @@ describe('Create workspace', () => {
730740
createWorkspace.selectKind(mockWorkspaceKindWithMultipleOptions.name);
731741
createWorkspace.clickNext();
732742

733-
createWorkspace.clickExtraFilter('showRedirected');
743+
createWorkspace.checkExtraFilter('showRedirected');
744+
createWorkspace.checkExtraFilter('showHidden');
734745
createWorkspace.selectImage(mockImage.id);
735746
createWorkspace.clickNext();
736747

@@ -746,7 +757,8 @@ describe('Create workspace', () => {
746757
createWorkspace.selectKind(mockWorkspaceKindWithMultipleOptions.name);
747758
createWorkspace.clickNext();
748759

749-
createWorkspace.clickExtraFilter('showRedirected');
760+
createWorkspace.checkExtraFilter('showRedirected');
761+
createWorkspace.checkExtraFilter('showHidden');
750762
createWorkspace.selectImage(mockImage.id);
751763
createWorkspace.clickNext();
752764

0 commit comments

Comments
 (0)