Skip to content

Commit 9f13e88

Browse files
Merge pull request openshift#16140 from rhamilto/OCPBUGS-78404
OCPBUGS-78404: Fix flaky secret integration tests
2 parents 8df27b8 + 11076c7 commit 9f13e88

3 files changed

Lines changed: 47 additions & 5 deletions

File tree

frontend/packages/integration-tests-cypress/tests/crud/secrets/image-pull.cy.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,21 @@ describe('Image pull secrets', () => {
1515
if (this.currentTest?.title === 'Passwords entered on the console are obfuscated') {
1616
return;
1717
}
18+
// ensure the test project is selected to avoid flakes
19+
cy.visit(`/k8s/cluster/projects/${testName}`);
1820
cy.visit(`/k8s/ns/${testName}/secrets/`);
1921
secrets.clickCreateSecretDropdownButton('image');
2022
});
2123

2224
afterEach(() => {
25+
const credentialsImageSecretName = `registry-credentials-image-secret-${testName}`;
26+
const uploadConfigFileImageSecretName = `upload-configuration-file-image-secret-${testName}`;
27+
cy.exec(
28+
`oc delete secret -n ${testName} ${credentialsImageSecretName} ${uploadConfigFileImageSecretName}`,
29+
{
30+
failOnNonZeroExit: false,
31+
},
32+
);
2333
checkErrors();
2434
});
2535

@@ -76,7 +86,7 @@ describe('Image pull secrets', () => {
7686
};
7787

7888
cy.log('Create secret');
79-
cy.get('[data-test="page-heading"] h1').contains(heading);
89+
cy.byTestID('page-heading').contains(heading);
8090
secrets.enterSecretName(credentialsImageSecretName);
8191
secrets.clickAddCredentialsButton();
8292
cy.get('[data-test-id="create-image-secret-form"]').each(($el, index) => {
@@ -86,6 +96,7 @@ describe('Image pull secrets', () => {
8696
cy.wrap($el).find('[data-test="image-secret-email"]').type(`${mail}${index}`);
8797
});
8898
secrets.save();
99+
cy.byTestID('loading-indicator').should('not.exist');
89100

90101
// Navigate to secret details page (save may go to list page)
91102
cy.url({ timeout: 30000 }).then((url) => {
@@ -100,6 +111,9 @@ describe('Image pull secrets', () => {
100111

101112
cy.log('Edit secret with whitespace in input values');
102113
detailsPage.clickPageActionFromDropdown('Edit Secret');
114+
// Wait for form to load
115+
cy.byTestID('page-heading').contains('Edit image pull secret');
116+
cy.get('[data-test-id="create-image-secret-form"]').should('have.length', 2);
103117
secrets.clickRemoveEntryButton();
104118
cy.byTestID('image-secret-address').clear();
105119
cy.byTestID('image-secret-address').type(` ${addressUpdated} `);
@@ -110,6 +124,7 @@ describe('Image pull secrets', () => {
110124
cy.byTestID('image-secret-email').clear();
111125
cy.byTestID('image-secret-email').type(` ${mailUpdated} `);
112126
secrets.save();
127+
cy.byTestID('loading-indicator').should('not.exist');
113128

114129
// Navigate to secret details page (save may go to list page)
115130
cy.url({ timeout: 30000 }).then((url) => {
@@ -142,7 +157,7 @@ describe('Image pull secrets', () => {
142157
};
143158

144159
cy.log('Create secret');
145-
cy.get('[data-test="page-heading"] h1').contains(heading);
160+
cy.byTestID('page-heading').contains(heading);
146161
secrets.enterSecretName(uploadConfigFileImageSecretName);
147162
cy.byTestID('console-select-auth-type-menu-toggle').click();
148163
cy.byTestDropDownMenu('config-file').click();
@@ -157,6 +172,7 @@ describe('Image pull secrets', () => {
157172
cy.byTestID('save-changes', { timeout: 30000 }).should('be.visible').and('be.enabled');
158173

159174
secrets.save();
175+
cy.byTestID('loading-indicator').should('not.exist');
160176

161177
// Navigate to secret details page (save may go to list page)
162178
cy.url({ timeout: 30000 }).then((url) => {

frontend/packages/integration-tests-cypress/tests/crud/secrets/source.cy.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,16 @@ describe('Source secrets', () => {
1818
});
1919

2020
beforeEach(() => {
21+
// ensure the test project is selected to avoid flakes
22+
cy.visit(`/k8s/cluster/projects/${testName}`);
2123
cy.visit(`/k8s/ns/${testName}/secrets/`);
2224
secrets.clickCreateSecretDropdownButton('source');
2325
});
2426

2527
afterEach(() => {
28+
cy.exec(`oc delete secret -n ${testName} ${basicSourceSecretName} ${sshSourceSecretName}`, {
29+
failOnNonZeroExit: false,
30+
});
2631
checkErrors();
2732
});
2833

@@ -32,11 +37,12 @@ describe('Source secrets', () => {
3237

3338
it(`Creates, edits, and deletes a basic source secret`, () => {
3439
cy.log('Create secret');
35-
cy.get('[data-test="page-heading"] h1').contains('Create source secret');
40+
cy.byTestID('page-heading').contains('Create source secret');
3641
secrets.enterSecretName(basicSourceSecretName);
3742
cy.byTestID('secret-username').type(basicSourceSecretUsername);
3843
cy.byTestID('secret-password').type(basicSourceSecretPassword);
3944
secrets.save();
45+
cy.byTestID('loading-indicator').should('not.exist');
4046
secrets.detailsPageIsLoaded(basicSourceSecretName);
4147

4248
cy.log('Verify secret');
@@ -47,11 +53,16 @@ describe('Source secrets', () => {
4753

4854
cy.log('Edit secret');
4955
detailsPage.clickPageActionFromDropdown('Edit Secret');
56+
// Wait for form to load and hydrate with current values
57+
cy.byTestID('page-heading').contains('Edit source secret');
58+
cy.byTestID('secret-username').should('have.value', basicSourceSecretUsername);
59+
cy.byTestID('secret-password').should('have.value', basicSourceSecretPassword);
5060
cy.byTestID('secret-username').clear();
5161
cy.byTestID('secret-username').type(basicSourceSecretUsernameUpdated);
5262
cy.byTestID('secret-password').clear();
5363
cy.byTestID('secret-password').type(basicSourceSecretPasswordUpdated);
5464
secrets.save();
65+
cy.byTestID('loading-indicator').should('not.exist');
5566

5667
cy.log('Verify edit');
5768
secrets.detailsPageIsLoaded(basicSourceSecretName);
@@ -66,12 +77,13 @@ describe('Source secrets', () => {
6677

6778
it(`Creates, edits, and deletes a SSH source secret`, () => {
6879
cy.log('Create secret');
69-
cy.get('[data-test="page-heading"] h1').contains('Create source secret');
80+
cy.byTestID('page-heading').contains('Create source secret');
7081
secrets.enterSecretName(sshSourceSecretName);
7182
cy.byTestID('console-select-auth-type-menu-toggle').click();
7283
cy.byTestDropDownMenu('kubernetes.io/ssh-auth').click();
7384
cy.byLegacyTestID('file-input-textarea').type(sshSourceSecretSSHKey);
7485
secrets.save();
86+
cy.byTestID('loading-indicator').should('not.exist');
7587
secrets.detailsPageIsLoaded(sshSourceSecretName);
7688

7789
cy.log('Verify secret');
@@ -81,9 +93,13 @@ describe('Source secrets', () => {
8193

8294
cy.log('Edit secret');
8395
detailsPage.clickPageActionFromDropdown('Edit Secret');
96+
// Wait for form to load and hydrate with current values
97+
cy.byTestID('page-heading').contains('Edit source secret');
98+
cy.byLegacyTestID('file-input-textarea').should('contain.value', sshSourceSecretSSHKey);
8499
cy.byLegacyTestID('file-input-textarea').clear();
85100
cy.byLegacyTestID('file-input-textarea').type(sshSourceSecretSSHKeUpdated);
86101
secrets.save();
102+
cy.byTestID('loading-indicator').should('not.exist');
87103

88104
cy.log('Verify edit');
89105
secrets.detailsPageIsLoaded(sshSourceSecretName);

frontend/packages/integration-tests-cypress/tests/crud/secrets/webhook.cy.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,16 @@ describe('Webhook secret', () => {
1212
});
1313

1414
beforeEach(() => {
15+
// ensure the test project is selected to avoid flakes
16+
cy.visit(`/k8s/cluster/projects/${testName}`);
1517
cy.visit(`/k8s/ns/${testName}/secrets/`);
1618
secrets.clickCreateSecretDropdownButton('webhook');
1719
});
1820

1921
afterEach(() => {
22+
cy.exec(`oc delete secret -n ${testName} ${webhookSecretName}`, {
23+
failOnNonZeroExit: false,
24+
});
2025
checkErrors();
2126
});
2227

@@ -26,10 +31,11 @@ describe('Webhook secret', () => {
2631

2732
it(`Create, edit, and delete a webhook secret`, () => {
2833
cy.log('Create secret');
29-
cy.get('[data-test="page-heading"] h1').contains('Create webhook secret');
34+
cy.byTestID('page-heading').contains('Create webhook secret');
3035
secrets.enterSecretName(webhookSecretName);
3136
cy.byTestID('secret-key').type(webhookSecretKey);
3237
secrets.save();
38+
cy.byTestID('loading-indicator').should('not.exist');
3339
secrets.detailsPageIsLoaded(webhookSecretName);
3440

3541
cy.log('Verify secret');
@@ -39,8 +45,12 @@ describe('Webhook secret', () => {
3945

4046
cy.log('Edit secret');
4147
detailsPage.clickPageActionFromDropdown('Edit Secret');
48+
// Wait for form to load
49+
cy.byTestID('page-heading').contains('Edit webhook secret');
50+
cy.byTestID('webhook-generate-button').should('be.visible');
4251
cy.byTestID('webhook-generate-button').click();
4352
secrets.save();
53+
cy.byTestID('loading-indicator').should('not.exist');
4454

4555
cy.log('Verify edit');
4656
secrets.detailsPageIsLoaded(webhookSecretName);

0 commit comments

Comments
 (0)