CLD-7841 Optimize E2E testing costs (#27883)
* Utilize free runners for E2E tests, report back to PR on run completion * Increase test stability on smaller instances * Merge worker reports * merge start+prepare steps * upgrade keycloak * increase test timeouts * Add video recording to report artifacts Co-authored-by: Saturnino Abril <5334504+saturninoabril@users.noreply.github.com> --------- Co-authored-by: Saturnino Abril <5334504+saturninoabril@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5f19d8513b
Коммит
948f8941f0
@@ -90,7 +90,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1 ');
|
||||
|
||||
// * Verify the task is checked
|
||||
cy.get('[data-rbd-droppable-id="1"]').find('.checkbox').eq(1).should('be.checked');
|
||||
@@ -98,7 +98,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('check add', () => {
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1 new-task');
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1 new-task ');
|
||||
|
||||
// * Verify the task was added
|
||||
cy.get('[data-rbd-droppable-id="1"]').contains('new-task');
|
||||
@@ -106,7 +106,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('check remove', () => {
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1 ');
|
||||
|
||||
// * Verify the task was added
|
||||
cy.get('[data-rbd-droppable-id="1"]').contains('Step 2').should('not.exist');
|
||||
@@ -114,7 +114,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('owner', () => {
|
||||
// # Run a slash command
|
||||
cy.uiPostMessageQuickly('/playbook owner');
|
||||
cy.uiPostMessageQuickly('/playbook owner ');
|
||||
|
||||
// * Verify the message.
|
||||
cy.verifyEphemeralMessage(`@${testUser.username} is the current owner for this playbook run.`);
|
||||
@@ -123,13 +123,13 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.uiPostMessageQuickly(`/playbook owner @${testUser2.username}`);
|
||||
|
||||
// * Verify that the owner was set.
|
||||
cy.uiPostMessageQuickly('/playbook owner');
|
||||
cy.uiPostMessageQuickly('/playbook owner ');
|
||||
cy.verifyEphemeralMessage(`@${testUser2.username} is the current owner for this playbook run.`);
|
||||
});
|
||||
|
||||
it('timeline', () => {
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook timeline');
|
||||
cy.uiPostMessageQuickly('/playbook timeline ');
|
||||
|
||||
// * Verify the message.
|
||||
cy.verifyEphemeralMessage(`Timeline for ${playbookRunName}`);
|
||||
@@ -137,7 +137,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('finish', () => {
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook finish');
|
||||
cy.uiPostMessageQuickly('/playbook finish ');
|
||||
|
||||
// * Verify confirm modal is visible.
|
||||
cy.get('#interactiveDialogModalLabel').should('exist');
|
||||
@@ -274,19 +274,19 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('check', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects three arguments: the run number, the checklist number and the item number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook check 2 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook check 2 1 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook check 0 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook check 0 1 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Become a participant to interact with this run');
|
||||
@@ -301,7 +301,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook check 1 1 1 ');
|
||||
cy.get('#rhsContainer').within(() => {
|
||||
// * Verify number of runs
|
||||
cy.get('[data-testid="run-list-card"]').should('have.length', 2);
|
||||
@@ -316,19 +316,19 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('check add', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects two arguments: the run number and the checklist number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 2 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 2 1 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 0 1 new-task');
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 0 1 new-task ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Become a participant to interact with this run');
|
||||
@@ -343,7 +343,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1 1 new-task');
|
||||
cy.uiPostMessageQuickly('/playbook checkadd 1 1 new-task ');
|
||||
|
||||
cy.get('#rhsContainer').within(() => {
|
||||
// * Verify number of runs
|
||||
@@ -359,19 +359,19 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('check remove', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects three arguments: the run number, the checklist number and the item number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 2 0 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 2 0 1 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 0 1 0');
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 0 1 0 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Become a participant to interact with this run');
|
||||
@@ -386,7 +386,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1 1');
|
||||
cy.uiPostMessageQuickly('/playbook checkremove 1 1 1 ');
|
||||
|
||||
cy.get('#rhsContainer').within(() => {
|
||||
// * Verify number of runs
|
||||
@@ -402,19 +402,19 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('owner', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook owner');
|
||||
cy.uiPostMessageQuickly('/playbook owner ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('/playbook owner expects at most one argument.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook owner 2');
|
||||
cy.uiPostMessageQuickly('/playbook owner 2 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook owner 0');
|
||||
cy.uiPostMessageQuickly('/playbook owner 0 ');
|
||||
|
||||
// * Verify the message.
|
||||
cy.verifyEphemeralMessage(`@${testUser.username} is the current owner for this playbook run.`);
|
||||
@@ -429,34 +429,34 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly(`/playbook owner 0 @${testUser2.username}`);
|
||||
cy.uiPostMessageQuickly(`/playbook owner 0 @${testUser2.username} `);
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Become a participant to interact with this run');
|
||||
|
||||
// # Run a slash command on a run with write access
|
||||
cy.uiPostMessageQuickly(`/playbook owner 1 @${testUser2.username}`);
|
||||
cy.uiPostMessageQuickly(`/playbook owner 1 @${testUser2.username} `);
|
||||
|
||||
// * Verify that the owner was set.
|
||||
cy.uiPostMessageQuickly('/playbook owner 1');
|
||||
cy.uiPostMessageQuickly('/playbook owner 1 ');
|
||||
cy.verifyEphemeralMessage(`@${testUser2.username} is the current owner for this playbook run.`);
|
||||
});
|
||||
|
||||
it('finish', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook finish');
|
||||
cy.uiPostMessageQuickly('/playbook finish ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects one argument: the run number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook finish 2');
|
||||
cy.uiPostMessageQuickly('/playbook finish 2 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook finish 0');
|
||||
cy.uiPostMessageQuickly('/playbook finish 0 ');
|
||||
|
||||
// * Verify the message.
|
||||
cy.verifyEphemeralMessage(`userID ${testUser2.id} is not an admin or channel member`);
|
||||
@@ -479,7 +479,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
});
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook finish 1');
|
||||
cy.uiPostMessageQuickly('/playbook finish 1 ');
|
||||
|
||||
// * Verify confirm modal is visible.
|
||||
cy.get('#interactiveDialogModalLabel').should('exist');
|
||||
@@ -493,19 +493,19 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('timeline', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook timeline');
|
||||
cy.uiPostMessageQuickly('/playbook timeline ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects one argument: the run number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook timeline 2');
|
||||
cy.uiPostMessageQuickly('/playbook timeline 2 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
|
||||
// # Run a slash command on a run with view access
|
||||
cy.uiPostMessageQuickly('/playbook timeline 0');
|
||||
cy.uiPostMessageQuickly('/playbook timeline 0 ');
|
||||
|
||||
// * Verify the message.
|
||||
cy.verifyEphemeralMessage(`Timeline for ${playbookRuns[1].name}`);
|
||||
@@ -513,13 +513,13 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
|
||||
it('update', () => {
|
||||
// # Run a slash command with not enough parameters
|
||||
cy.uiPostMessageQuickly('/playbook update');
|
||||
cy.uiPostMessageQuickly('/playbook update ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Command expects one argument: the run number.');
|
||||
|
||||
// # Run a slash command wrong run number
|
||||
cy.uiPostMessageQuickly('/playbook update 2');
|
||||
cy.uiPostMessageQuickly('/playbook update 2 ');
|
||||
|
||||
// * Verify the expected error message.
|
||||
cy.verifyEphemeralMessage('Invalid run number');
|
||||
@@ -534,7 +534,7 @@ describe('channels > slash command > owner', {testIsolation: true}, () => {
|
||||
cy.findByTestId('post_textbox').clear();
|
||||
|
||||
// # Run a slash command with correct parameters
|
||||
cy.uiPostMessageQuickly('/playbook update 1');
|
||||
cy.uiPostMessageQuickly('/playbook update 1 ');
|
||||
|
||||
// # Get dialog modal.
|
||||
cy.getStatusUpdateDialog().within(() => {
|
||||
|
||||
@@ -85,6 +85,7 @@ describe('channels > slash command > test', {testIsolation: true}, () => {
|
||||
EnableTesting: true,
|
||||
},
|
||||
});
|
||||
cy.apiReloadConfig();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -132,6 +133,7 @@ describe('channels > slash command > test', {testIsolation: true}, () => {
|
||||
EnableTesting: false,
|
||||
},
|
||||
});
|
||||
cy.apiReloadConfig();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -178,6 +180,7 @@ describe('channels > slash command > test', {testIsolation: true}, () => {
|
||||
EnableTesting: true,
|
||||
},
|
||||
});
|
||||
cy.apiReloadConfig();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
Ссылка в новой задаче
Block a user