Skip to content

Commit 0fd6108

Browse files
test: [M3-8760] - Improve stability of Linode end-to-end tests (linode#11350)
* Wait for Linode Create timeout when provisioning and booting new Linodes * Fix small test flaw involving unexpected mock event timestamp * Use `LINODE_CREATE_TIMEOUT` as default timeout for `cy.defer`, `createTestLinode` * Fix rebuild failures by scrolling to search field before asserting its visibility * Use Linode create timeout when waiting for "RUNNING" indicator * Use default Linode create timeout when polling Linode status * Refactor Linode resize tests, use Linode timeout when waiting to resize * Increase Linode create timeout to 5 mins * Increase timeouts for more Linode tests * Added changeset: Improve Linode end-to-end test stability by increasing timeouts * Increase Linode create timeout for rescue and label update tests
1 parent bfbd822 commit 0fd6108

File tree

13 files changed

+268
-126
lines changed

13 files changed

+268
-126
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/manager": Tests
3+
---
4+
5+
Improve Linode end-to-end test stability by increasing timeouts ([#11350](https://github.com/linode/manager/pull/11350))

packages/manager/cypress/e2e/core/images/machine-image-upload.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,12 +320,11 @@ describe('machine image', () => {
320320
const label = randomLabel();
321321
const status = 'failed';
322322
const message = 'Upload window expired';
323-
const expiredDate = DateTime.local().minus({ days: 1 }).toISO();
324323
uploadImage(label);
325324
cy.wait('@imageUpload').then((xhr) => {
326325
const imageId = xhr.response?.body.image.id;
327326
assertProcessing(label, imageId);
328-
eventIntercept(label, imageId, status, message, expiredDate);
327+
eventIntercept(label, imageId, status, message);
329328
cy.wait('@getEvent');
330329
assertFailed(label, imageId, message);
331330
});

packages/manager/cypress/e2e/core/linodes/backup-linode.spec.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { dcPricingMockLinodeTypesForBackups } from 'support/constants/dc-specifi
2828
import { chooseRegion } from 'support/util/regions';
2929
import { expectManagedDisabled } from 'support/api/managed';
3030
import { createTestLinode } from 'support/util/linodes';
31+
import { LINODE_CREATE_TIMEOUT } from 'support/constants/linodes';
3132

3233
const BackupsCancellationNote =
3334
'Once backups for this Linode have been canceled, you cannot re-enable them for 24 hours.';
@@ -76,7 +77,9 @@ describe('linode backups', () => {
7677
cy.wait('@getLinode');
7778

7879
// Wait for Linode to finish provisioning.
79-
cy.findByText('OFFLINE').should('be.visible');
80+
cy.findByText('OFFLINE', { timeout: LINODE_CREATE_TIMEOUT }).should(
81+
'be.visible'
82+
);
8083

8184
// Confirm that enable backups prompt is shown.
8285
cy.contains(
@@ -184,7 +187,9 @@ describe('linode backups', () => {
184187
cy.wait('@getLinode');
185188

186189
// Wait for the Linode to finish provisioning.
187-
cy.findByText('OFFLINE').should('be.visible');
190+
cy.findByText('OFFLINE', { timeout: LINODE_CREATE_TIMEOUT }).should(
191+
'be.visible'
192+
);
188193

189194
cy.findByText('Manual Snapshot')
190195
.should('be.visible')

packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
mockRebuildLinodeError,
1414
} from 'support/intercepts/linodes';
1515
import { createTestLinode } from 'support/util/linodes';
16+
import { LINODE_CREATE_TIMEOUT } from 'support/constants/linodes';
1617

1718
/**
1819
* Creates a Linode and StackScript.
@@ -126,7 +127,9 @@ describe('rebuild linode', () => {
126127
interceptRebuildLinode(linode.id).as('linodeRebuild');
127128

128129
cy.visitWithLogin(`/linodes/${linode.id}`);
129-
cy.findByText('RUNNING').should('be.visible');
130+
cy.findByText('RUNNING', { timeout: LINODE_CREATE_TIMEOUT }).should(
131+
'be.visible'
132+
);
130133

131134
openRebuildDialog(linode.label);
132135
findRebuildDialog(linode.label).within(() => {
@@ -182,7 +185,9 @@ describe('rebuild linode', () => {
182185
interceptRebuildLinode(linode.id).as('linodeRebuild');
183186
interceptGetStackScripts().as('getStackScripts');
184187
cy.visitWithLogin(`/linodes/${linode.id}`);
185-
cy.findByText('RUNNING').should('be.visible');
188+
cy.findByText('RUNNING', { timeout: LINODE_CREATE_TIMEOUT }).should(
189+
'be.visible'
190+
);
186191

187192
openRebuildDialog(linode.label);
188193
findRebuildDialog(linode.label).within(() => {
@@ -255,7 +260,9 @@ describe('rebuild linode', () => {
255260
).then(([stackScript, linode]) => {
256261
interceptRebuildLinode(linode.id).as('linodeRebuild');
257262
cy.visitWithLogin(`/linodes/${linode.id}`);
258-
cy.findByText('RUNNING').should('be.visible');
263+
cy.findByText('RUNNING', { timeout: LINODE_CREATE_TIMEOUT }).should(
264+
'be.visible'
265+
);
259266

260267
openRebuildDialog(linode.label);
261268
findRebuildDialog(linode.label).within(() => {

packages/manager/cypress/e2e/core/linodes/rescue-linode.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from 'support/intercepts/linodes';
1212
import { ui } from 'support/ui';
1313
import { cleanUp } from 'support/util/cleanup';
14+
import { LINODE_CREATE_TIMEOUT } from 'support/constants/linodes';
1415
import { createTestLinode } from 'support/util/linodes';
1516
import { randomLabel } from 'support/util/random';
1617
import { chooseRegion } from 'support/util/regions';
@@ -63,7 +64,9 @@ describe('Rescue Linodes', () => {
6364
cy.wait('@getLinode');
6465

6566
// Wait for Linode to boot.
66-
cy.findByText('RUNNING').should('be.visible');
67+
cy.findByText('RUNNING', { timeout: LINODE_CREATE_TIMEOUT }).should(
68+
'be.visible'
69+
);
6770

6871
// Open rescue dialog using action menu..
6972
ui.actionMenu

0 commit comments

Comments
 (0)