UNPKG

qe-fe-automation

Version:
80 lines (72 loc) 2.29 kB
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 }) ) ) ); }