fix: a few integration tests broken with latest changes

pull/2806/head
Audric Ackermann 2 years ago
parent 594eee698b
commit 4966cf9192

@ -17,15 +17,16 @@ type Props = {
active?: boolean; active?: boolean;
onClick?: any; onClick?: any;
}>; }>;
dataTestId?: string;
}; };
export const SessionDropdown = (props: Props) => { export const SessionDropdown = (props: Props) => {
const { label, options } = props; const { label, options, dataTestId } = props;
const [expanded, setExpanded] = useState(!!props.expanded); const [expanded, setExpanded] = useState(!!props.expanded);
const chevronOrientation = expanded ? 180 : 0; const chevronOrientation = expanded ? 180 : 0;
return ( return (
<div className="session-dropdown"> <div className="session-dropdown" data-testid={dataTestId}>
<div <div
className="session-dropdown__label" className="session-dropdown__label"
onClick={() => { onClick={() => {
@ -43,6 +44,7 @@ export const SessionDropdown = (props: Props) => {
return ( return (
<SessionDropdownItem <SessionDropdownItem
key={item.content} key={item.content}
dataTestId={`dropdownitem-${item.content.replace(' ', '-')}`}
content={item.content} content={item.content}
icon={item.icon} icon={item.icon}
type={item.type} type={item.type}

@ -13,6 +13,7 @@ type Props = {
icon: SessionIconType | null; icon: SessionIconType | null;
active: boolean; active: boolean;
onClick: any; onClick: any;
dataTestId?: string;
}; };
export const SessionDropdownItem = (props: Props) => { export const SessionDropdownItem = (props: Props) => {
@ -23,7 +24,7 @@ export const SessionDropdownItem = (props: Props) => {
} }
}; };
const { content, type, icon, active } = props; const { content, type, icon, active, dataTestId } = props;
return ( return (
<div <div
@ -34,6 +35,7 @@ export const SessionDropdownItem = (props: Props) => {
)} )}
role="button" role="button"
onClick={clickHandler} onClick={clickHandler}
data-testid={dataTestId}
> >
{icon ? <SessionIcon iconType={icon} iconSize="small" /> : ''} {icon ? <SessionIcon iconType={icon} iconSize="small" /> : ''}
<div className="item-content">{content}</div> <div className="item-content">{content}</div>

@ -354,6 +354,7 @@ export const SessionRightPanelWithDetails = () => {
<SessionDropdown <SessionDropdown
label={window.i18n('disappearingMessages')} label={window.i18n('disappearingMessages')}
options={disappearingMessagesOptions} options={disappearingMessagesOptions}
dataTestId="disappearing-messages-dropdown"
/> />
)} )}

@ -23,10 +23,12 @@ sessionTestTwoWindows('Disappearing messages', async ([windowA, windowB]) => {
await createContact(windowA, windowB, userA, userB); await createContact(windowA, windowB, userA, userB);
// Click on user's avatar to open conversation options // Click on user's avatar to open conversation options
await clickOnTestIdWithText(windowA, 'conversation-options-avatar'); await clickOnTestIdWithText(windowA, 'conversation-options-avatar');
await waitForMatchingText(windowA, 'Your message request has been accepted');
// Select disappearing messages drop down // Select disappearing messages drop down
await clickOnMatchingText(windowA, 'Disappearing messages'); await clickOnTestIdWithText(windowA, 'disappearing-messages-dropdown', 'Disappearing messages');
// Select 5 seconds // Select 5 seconds
await clickOnMatchingText(windowA, '5 seconds'); await sleepFor(200);
await clickOnTestIdWithText(windowA, 'dropdownitem-5-seconds', '5 seconds');
// Click chevron to close menu // Click chevron to close menu
await clickOnTestIdWithText(windowA, 'back-button-conversation-options'); await clickOnTestIdWithText(windowA, 'back-button-conversation-options');
// Check config message // Check config message

@ -41,7 +41,7 @@ sessionTestTwoWindows('Decline request syncs', async ([windowA, windowB]) => {
const testMessage = `${userA.userName} sending message request to ${userB.userName}`; const testMessage = `${userA.userName} sending message request to ${userB.userName}`;
await sendNewMessage(windowA, userB.sessionid, testMessage); await sendNewMessage(windowA, userB.sessionid, testMessage);
// Accept request in windowB // Decline request in windowB
await clickOnTestIdWithText(windowB, 'message-request-banner'); await clickOnTestIdWithText(windowB, 'message-request-banner');
await clickOnTestIdWithText(windowB, 'module-conversation__user__profile-name', userA.userName); await clickOnTestIdWithText(windowB, 'module-conversation__user__profile-name', userA.userName);
await clickOnTestIdWithText(windowC, 'message-request-banner'); await clickOnTestIdWithText(windowC, 'message-request-banner');

@ -166,7 +166,8 @@ test('Check blocked user syncs', async () => {
// Check linked device for blocked contact in settings screen // Check linked device for blocked contact in settings screen
await clickOnTestIdWithText(windowB, 'settings-section'); await clickOnTestIdWithText(windowB, 'settings-section');
await clickOnTestIdWithText(windowB, 'conversations-settings-menu-item'); await clickOnTestIdWithText(windowB, 'conversations-settings-menu-item');
await clickOnTestIdWithText(windowB, 'reveal-blocked-user-settings'); // a conf sync job can take 30s (if the last one failed) + 10s polling to show a change on a linked device.
await clickOnTestIdWithText(windowB, 'reveal-blocked-user-settings', undefined, undefined, 50000);
// Check if user B is in blocked contact list // Check if user B is in blocked contact list
await waitForMatchingText(windowB, userB.userName); await waitForMatchingText(windowB, userB.userName);
}); });

@ -84,6 +84,8 @@ test.describe('Message requests', () => {
await clickOnTestIdWithText(windowB, 'session-confirm-ok-button', 'OK'); await clickOnTestIdWithText(windowB, 'session-confirm-ok-button', 'OK');
// Navigate back to message request folder to check // Navigate back to message request folder to check
await clickOnTestIdWithText(windowB, 'settings-section'); await clickOnTestIdWithText(windowB, 'settings-section');
await clickOnTestIdWithText(windowB, 'message-requests-settings-menu-item', 'Message Requests');
// Check config message of message request acceptance // Check config message of message request acceptance
await waitForMatchingText(windowB, 'No pending message requests'); await waitForMatchingText(windowB, 'No pending message requests');
}); });

@ -1,12 +1,13 @@
import { Page } from '@playwright/test'; import { Page } from '@playwright/test';
import { User } from '../types/testing'; import { User } from '../types/testing';
import { clickOnMatchingText, typeIntoInput } from '../utilities/utils'; import { clickOnMatchingText, typeIntoInput } from '../utilities/utils';
import { sleepFor } from '../../../session/utils/Promise';
// tslint:disable: no-console // tslint:disable: no-console
export const newUser = async (window: Page, userName: string): Promise<User> => { export const newUser = async (window: Page, userName: string): Promise<User> => {
// Create User // Create User
await clickOnMatchingText(window, 'Create Session ID'); await clickOnMatchingText(window, 'Create Session ID');
// Wait for animation for finish creating ID // Wait for animation for finish creating ID
await window.waitForTimeout(1500); await sleepFor(2500);
//Save session ID to a variable //Save session ID to a variable
const sessionid = await window.inputValue('[data-testid=session-id-signup]'); const sessionid = await window.inputValue('[data-testid=session-id-signup]');
await clickOnMatchingText(window, 'Continue'); await clickOnMatchingText(window, 'Continue');

@ -111,7 +111,8 @@ export async function clickOnTestIdWithText(
window: Page, window: Page,
dataTestId: string, dataTestId: string,
text?: string, text?: string,
rightButton?: boolean rightButton?: boolean,
maxWait?: number
) { ) {
console.info(`clickOnTestIdWithText with testId:${dataTestId} and text:${text ? text : 'none'}`); console.info(`clickOnTestIdWithText with testId:${dataTestId} and text:${text ? text : 'none'}`);
@ -119,7 +120,7 @@ export async function clickOnTestIdWithText(
? `css=[data-testid=${dataTestId}]` ? `css=[data-testid=${dataTestId}]`
: `css=[data-testid=${dataTestId}]:has-text("${text}")`; : `css=[data-testid=${dataTestId}]:has-text("${text}")`;
await window.waitForSelector(builtSelector); await window.waitForSelector(builtSelector, { timeout: maxWait });
return window.click(builtSelector, rightButton ? { button: 'right' } : undefined); return window.click(builtSelector, rightButton ? { button: 'right' } : undefined);
} }

Loading…
Cancel
Save