session-desktop/ts/test/automation/disappearing_messages.spec.ts

93 lines
3.2 KiB
TypeScript

import { sleepFor } from '../../session/utils/Promise';
import { newUser } from './setup/new_user';
import { sessionTestTwoWindows } from './setup/sessionTest';
import { createContact } from './utilities/create_contact';
import { sendMessage } from './utilities/message';
import {
clickOnMatchingText,
clickOnTestIdWithText,
waitForMatchingText,
waitForTestIdWithText
} from './utilities/utils';
// tslint:disable: no-console
const testMessage = 'Test-Message- (A -> B) ';
const sentMessage = `${testMessage}${Date.now()}`;
sessionTestTwoWindows('Disappearing messages', async ([windowA, windowB]) => {
// Open App
// Create User
const [userA, userB] = await Promise.all([newUser(windowA, 'Alice'), newUser(windowB, 'Bob')]);
// Create Contact
await createContact(windowA, windowB, userA, userB)
// Click on user's avatar to open conversation options
await clickOnTestIdWithText(windowA, 'conversation-options-avatar')
// Select disappearing messages drop down
await clickOnMatchingText(windowA, 'Disappearing messages');
// Select 5 seconds
await clickOnMatchingText(windowA, '5 seconds');
// Click chevron to close menu
await clickOnTestIdWithText(windowA, 'back-button-conversation-options');
// Check config message
await waitForTestIdWithText(
windowA,
'control-message',
'You set the disappearing message timer to 5 seconds'
);
await sleepFor(2000);
// Check top right hand corner indicator
await waitForTestIdWithText(windowA, 'disappearing-messages-indicator', '5 seconds');
// Send message
// Wait for tick of confirmation
await sendMessage(windowA, sentMessage);
// Check timer is functioning
// Verify message is deleted
const errorDesc = 'Should not be found';
try {
const elemShouldNotBeFound = windowA.locator(sentMessage);
if (elemShouldNotBeFound) {
console.error('Sent message not found in window A');
throw new Error(errorDesc);
}
} catch (e) {
if (e.message !== errorDesc) {
throw e;
}
}
// Click on user's avatar for options
await clickOnTestIdWithText(windowA, 'conversation-options-avatar');
// Click on disappearing messages drop down
await clickOnMatchingText(windowA, 'Disappearing messages');
// Select off
await clickOnMatchingText(windowA, 'Off');
// Click chevron to close menu
await clickOnTestIdWithText(windowA, 'back-button-conversation-options');
// Check config message
await waitForTestIdWithText(windowA, 'control-message', 'You disabled disappearing messages.');
// Verify message is deleted in windowB for receiver user
// Check config message in windowB
await waitForMatchingText(
windowB,
`${userA.userName} set the disappearing message timer to 5 seconds`
);
// Wait 5 seconds
await sleepFor(5000)
await waitForMatchingText(windowB, `${userA.userName} has turned off disappearing messages.`);
// verify message is deleted in windowB
const errorDesc2 = 'Should not be found';
try {
const elemShouldNotBeFound = windowA.locator(sentMessage);
if (elemShouldNotBeFound) {
console.error('Sent message not found in window B');
throw new Error(errorDesc2);
}
} catch (e) {
if (e.message !== errorDesc2) {
throw e;
}
}
});