qe-fe-automation
Version:
FE test automation framework using cypress
80 lines (72 loc) • 2.29 kB
text/typescript
import { stagingUsers } from '@fixtures/staging-users';
import { TwilioTask } from './interface/tasks';
import { UserConversation } from './interface/conversations';
const { userChat } = stagingUsers;
const { accountSid, authToken, workspaceSid, chatServiceSid } =
Cypress.env('twilio') || {};
Cypress.Commands.add('cleanUpTasks', () => {
cy.allure().logStep('Initiate clean up tasks flow');
cleanUpTasks();
});
function cleanUpTasks() {
cy.request({
method: 'GET',
url: `https://taskrouter.twilio.com/v1/Workspaces/${workspaceSid}/Tasks`,
auth: {
username: accountSid,
password: authToken
},
retryOnStatusCodeFailure: true
})
.then(({ status, body }) => {
expect(status, 'Got tasks from Twilio').to.equal(200);
return body.tasks;
})
.then((tasks) =>
Promise.all(
tasks.map((task: TwilioTask) => {
try {
const attributes = JSON.parse(task.attributes);
if (
attributes.userEmail?.includes('staging-prime.tripactions.xyz') ||
attributes.userEmail?.includes(userChat.email)
) {
return cy.request({
method: 'DELETE',
url: `https://taskrouter.twilio.com/v1/Workspaces/WSe8384914257561b5dc38f9adca252c45/Tasks/${task.sid}`,
auth: {
username: accountSid,
password: authToken
}
});
}
} catch (err) {
// skip invalid tasks
}
})
)
);
cy.request({
method: 'GET',
url: `https://conversations.twilio.com/v1/Services/${chatServiceSid}/Users/${userChat.uuid}/Conversations?PageSize=50`,
auth: {
username: accountSid,
password: authToken
},
retryOnStatusCodeFailure: true
}).then(({ body }) =>
Promise.all(
body.conversations?.map((conversation: UserConversation) =>
cy.request({
method: 'DELETE',
url: `https://conversations.twilio.com/v1/Services/${chatServiceSid}/Conversations/${conversation.conversation_sid}`,
auth: {
username: accountSid,
password: authToken
},
retryOnStatusCodeFailure: true
})
)
)
);
}