diff --git a/test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db b/test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db similarity index 100% rename from test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db rename to test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db diff --git a/test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-shm b/test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-shm similarity index 100% rename from test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-shm rename to test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-shm diff --git a/test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-wal b/test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-wal similarity index 100% rename from test/ui-test/fixtures/group_chat/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-wal rename to test/ui-test/fixtures/mutual_contacts/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479.db-wal diff --git a/test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db b/test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db similarity index 100% rename from test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db rename to test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db diff --git a/test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-shm b/test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-shm similarity index 100% rename from test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-shm rename to test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-shm diff --git a/test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-wal b/test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-wal similarity index 100% rename from test/ui-test/fixtures/group_chat/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-wal rename to test/ui-test/fixtures/mutual_contacts/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955.db-wal diff --git a/test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db b/test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db similarity index 100% rename from test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db rename to test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db diff --git a/test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-shm b/test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-shm similarity index 100% rename from test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-shm rename to test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-shm diff --git a/test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-wal b/test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-wal similarity index 100% rename from test/ui-test/fixtures/group_chat/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-wal rename to test/ui-test/fixtures/mutual_contacts/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0.db-wal diff --git a/test/ui-test/fixtures/group_chat/accounts.sql b/test/ui-test/fixtures/mutual_contacts/accounts.sql similarity index 100% rename from test/ui-test/fixtures/group_chat/accounts.sql rename to test/ui-test/fixtures/mutual_contacts/accounts.sql diff --git a/test/ui-test/fixtures/group_chat/accounts.sql-shm b/test/ui-test/fixtures/mutual_contacts/accounts.sql-shm similarity index 100% rename from test/ui-test/fixtures/group_chat/accounts.sql-shm rename to test/ui-test/fixtures/mutual_contacts/accounts.sql-shm diff --git a/test/ui-test/fixtures/group_chat/accounts.sql-wal b/test/ui-test/fixtures/mutual_contacts/accounts.sql-wal similarity index 100% rename from test/ui-test/fixtures/group_chat/accounts.sql-wal rename to test/ui-test/fixtures/mutual_contacts/accounts.sql-wal diff --git a/test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.014338000Z--0568750156c53c50fb9c6a0b9c0ec5b32876c99a b/test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.014338000Z--0568750156c53c50fb9c6a0b9c0ec5b32876c99a similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.014338000Z--0568750156c53c50fb9c6a0b9c0ec5b32876c99a rename to test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.014338000Z--0568750156c53c50fb9c6a0b9c0ec5b32876c99a diff --git a/test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.382818000Z--66f4321c3b7b0a26258fbf6fd0175f5a8945c30e b/test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.382818000Z--66f4321c3b7b0a26258fbf6fd0175f5a8945c30e similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.382818000Z--66f4321c3b7b0a26258fbf6fd0175f5a8945c30e rename to test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.382818000Z--66f4321c3b7b0a26258fbf6fd0175f5a8945c30e diff --git a/test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.725413000Z--5694d8a8597af05aa8abcb246c1c0590bddb0a30 b/test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.725413000Z--5694d8a8597af05aa8abcb246c1c0590bddb0a30 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.725413000Z--5694d8a8597af05aa8abcb246c1c0590bddb0a30 rename to test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-18.725413000Z--5694d8a8597af05aa8abcb246c1c0590bddb0a30 diff --git a/test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.067197000Z--0d9da7bcf72f0bfd691ba3a35f199cabc7ad957f b/test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.067197000Z--0d9da7bcf72f0bfd691ba3a35f199cabc7ad957f similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.067197000Z--0d9da7bcf72f0bfd691ba3a35f199cabc7ad957f rename to test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.067197000Z--0d9da7bcf72f0bfd691ba3a35f199cabc7ad957f diff --git a/test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.406223000Z--c7d7ec0db0f39fcf1c25484ea8b7b380c3f64a78 b/test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.406223000Z--c7d7ec0db0f39fcf1c25484ea8b7b380c3f64a78 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.406223000Z--c7d7ec0db0f39fcf1c25484ea8b7b380c3f64a78 rename to test/ui-test/fixtures/mutual_contacts/keystore/0x14c36af7255a6a75cecadd2aad3ed9e9cbb98127ea4e4eafc204bfeb00569479/UTC--2022-07-22T11-35-19.406223000Z--c7d7ec0db0f39fcf1c25484ea8b7b380c3f64a78 diff --git a/test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.153782000Z--209a105b4d0b2a09a0a2a2bdde0e99595ecf8e37 b/test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.153782000Z--209a105b4d0b2a09a0a2a2bdde0e99595ecf8e37 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.153782000Z--209a105b4d0b2a09a0a2a2bdde0e99595ecf8e37 rename to test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.153782000Z--209a105b4d0b2a09a0a2a2bdde0e99595ecf8e37 diff --git a/test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.520410000Z--a8a4687b94578445fd27a436708303344e48515c b/test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.520410000Z--a8a4687b94578445fd27a436708303344e48515c similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.520410000Z--a8a4687b94578445fd27a436708303344e48515c rename to test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.520410000Z--a8a4687b94578445fd27a436708303344e48515c diff --git a/test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.863180000Z--863cc6d4d54e52897b2da516c3bfc19ffb37af45 b/test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.863180000Z--863cc6d4d54e52897b2da516c3bfc19ffb37af45 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.863180000Z--863cc6d4d54e52897b2da516c3bfc19ffb37af45 rename to test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-49.863180000Z--863cc6d4d54e52897b2da516c3bfc19ffb37af45 diff --git a/test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.200434000Z--9e9bf7a8687ae8c0f9cf82224c35774cc0e4def4 b/test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.200434000Z--9e9bf7a8687ae8c0f9cf82224c35774cc0e4def4 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.200434000Z--9e9bf7a8687ae8c0f9cf82224c35774cc0e4def4 rename to test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.200434000Z--9e9bf7a8687ae8c0f9cf82224c35774cc0e4def4 diff --git a/test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.541043000Z--3ac2452916e9227e9e7107150d212d460ea4fa8c b/test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.541043000Z--3ac2452916e9227e9e7107150d212d460ea4fa8c similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.541043000Z--3ac2452916e9227e9e7107150d212d460ea4fa8c rename to test/ui-test/fixtures/mutual_contacts/keystore/0x37803779578fc9b1da6f7068553367e31efce3342bd163dac69e2ada90c1b955/UTC--2022-07-22T11-38-50.541043000Z--3ac2452916e9227e9e7107150d212d460ea4fa8c diff --git a/test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-19.695209000Z--d7a4015deecd67e99bff32654850758d4ab1247b b/test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-19.695209000Z--d7a4015deecd67e99bff32654850758d4ab1247b similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-19.695209000Z--d7a4015deecd67e99bff32654850758d4ab1247b rename to test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-19.695209000Z--d7a4015deecd67e99bff32654850758d4ab1247b diff --git a/test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.062040000Z--7becc6d935ee1609a0aa012dca618070c83277b3 b/test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.062040000Z--7becc6d935ee1609a0aa012dca618070c83277b3 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.062040000Z--7becc6d935ee1609a0aa012dca618070c83277b3 rename to test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.062040000Z--7becc6d935ee1609a0aa012dca618070c83277b3 diff --git a/test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.404024000Z--eccb99b8a81d83ed73bd8a8c64432a3ee9e14cd0 b/test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.404024000Z--eccb99b8a81d83ed73bd8a8c64432a3ee9e14cd0 similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.404024000Z--eccb99b8a81d83ed73bd8a8c64432a3ee9e14cd0 rename to test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.404024000Z--eccb99b8a81d83ed73bd8a8c64432a3ee9e14cd0 diff --git a/test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.742255000Z--f0613179339d41bfd3fc0128410d971dfcbdcb1a b/test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.742255000Z--f0613179339d41bfd3fc0128410d971dfcbdcb1a similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.742255000Z--f0613179339d41bfd3fc0128410d971dfcbdcb1a rename to test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-20.742255000Z--f0613179339d41bfd3fc0128410d971dfcbdcb1a diff --git a/test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-21.083447000Z--ea123f7beff45e3c9fdf54b324c29dbda14a639a b/test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-21.083447000Z--ea123f7beff45e3c9fdf54b324c29dbda14a639a similarity index 100% rename from test/ui-test/fixtures/group_chat/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-21.083447000Z--ea123f7beff45e3c9fdf54b324c29dbda14a639a rename to test/ui-test/fixtures/mutual_contacts/keystore/0xc9424660d13562045a3cb387b296219dbdb819690936de3d0b3eccbcfb7dfdf0/UTC--2022-07-22T11-34-21.083447000Z--ea123f7beff45e3c9fdf54b324c29dbda14a639a diff --git a/test/ui-test/src/screens/StatusCommunityScreen.py b/test/ui-test/src/screens/StatusCommunityScreen.py index 687826974f..ae60a7c7e0 100644 --- a/test/ui-test/src/screens/StatusCommunityScreen.py +++ b/test/ui-test/src/screens/StatusCommunityScreen.py @@ -45,6 +45,11 @@ class CommunityScreenComponents(Enum): CHAT_INPUT_ROOT = "chatInput_Root" TOGGLE_PIN_MESSAGE_BUTTON = "chatView_TogglePinMessageButton" PIN_TEXT = "chatInfoButton_Pin_Text" + ADD_MEMBERS_BUTTON = "community_AddMembers_Button" + EXISTING_CONTACTS_LISTVIEW = "community_InviteFirends_Popup_ExistinContacts_ListView" + INVITE_POPUP_NEXT_BUTTON = "community_InviteFriendsToCommunityPopup_NextButton" + INVITE_POPUP_MESSAGE_INPUT = "community_ProfilePopupInviteMessagePanel_MessageInput" + INVITE_POPUP_SEND_BUTTON = "community_InviteFriend_SendButton" class CommunitySettingsComponents(Enum): EDIT_COMMUNITY_SCROLL_VIEW = "communitySettings_EditCommunity_ScrollView" @@ -322,3 +327,26 @@ class StatusCommunityScreen: def check_pin_count(self, wanted_pin_count: int): pin_text_obj = wait_and_get_obj(CommunityScreenComponents.PIN_TEXT.value) verify_equals(pin_text_obj.text, wanted_pin_count) + + def invite_user_to_community(self, user_name: str, message: str): + click_obj_by_name(CommunityScreenComponents.ADD_MEMBERS_BUTTON.value) + + contacts_list = wait_and_get_obj(CommunityScreenComponents.EXISTING_CONTACTS_LISTVIEW.value) + + contact_item = None + found = False + for index in range(contacts_list.count): + contact_item = contacts_list.itemAtIndex(index) + if (contact_item.userName.toLower() == user_name.lower()): + found = True + break + + if not found: + verify_failure("Contact with name " + user_name + " not found in the Existing Contacts list") + + click_obj(contact_item) + click_obj_by_name(CommunityScreenComponents.INVITE_POPUP_NEXT_BUTTON.value) + time.sleep(0.5) + type(CommunityScreenComponents.INVITE_POPUP_MESSAGE_INPUT.value, message) + click_obj_by_name(CommunityScreenComponents.INVITE_POPUP_SEND_BUTTON.value) + diff --git a/test/ui-test/testSuites/global_shared/scripts/global_names.py b/test/ui-test/testSuites/global_shared/scripts/global_names.py index 62da0048ed..c0f6d81e34 100644 --- a/test/ui-test/testSuites/global_shared/scripts/global_names.py +++ b/test/ui-test/testSuites/global_shared/scripts/global_names.py @@ -14,6 +14,8 @@ mainWindow_ScrollView_2 = {"container": statusDesktop_mainWindow, "occurrence": mainWindow_ProfileNavBarButton = {"container": statusDesktop_mainWindow, "objectName": "statusProfileNavBarTabButton", "type": "StatusNavBarTabButton", "visible": True} settings_navbar_settings_icon_StatusIcon = {"container": mainWindow_navBarListView_ListView, "objectName": "settings-icon", "type": "StatusIcon", "visible": True} splashScreen = {"container": statusDesktop_mainWindow, "objectName": "splashScreen", "type": "SplashScreen"} +navBarListView_Chat_navbar_StatusNavBarTabButton = {"checkable": True, "container": mainWindow_navBarListView_ListView, "objectName": "Chat-navbar", "type": "StatusNavBarTabButton", "visible": True} + # main right panel mainWindow_RighPanel= {"container": statusDesktop_mainWindow, "type": "ColumnLayout", "objectName": "mainRightView", "visible": True} diff --git a/test/ui-test/testSuites/global_shared/scripts/login_names.py b/test/ui-test/testSuites/global_shared/scripts/login_names.py index 2719b87419..2021e154a3 100644 --- a/test/ui-test/testSuites/global_shared/scripts/login_names.py +++ b/test/ui-test/testSuites/global_shared/scripts/login_names.py @@ -7,5 +7,5 @@ loginView_currentUserNameLabel = {"container": statusDesktop_mainWindow, "object loginView_submitBtn = {"container": statusDesktop_mainWindow, "type": "StatusRoundButton", "visible": True} loginView_main = {"container": statusDesktop_mainWindow, "type": "LoginView", "visible": True} loginView_errMsgLabel = {"container": statusDesktop_mainWindow, "objectName": "loginPassworkInputValidationErrorText", "type": "StatusBaseText", "visible": True} -accountsView_accountListPanel = {"container": statusDesktop_mainWindow, "type": "ListView", "visible": True} # This probably is missing an objectName +accountsView_accountListPanel = {"container": statusDesktop_mainWindow, "objectName": "LoginView_AccountsRepeater", "type": "Repeater", "visible": True} loginView_userImage = {"container": statusDesktop_mainWindow, "objectName": "loginViewUserImage", "type": "UserImage", "visible": True} diff --git a/test/ui-test/testSuites/suite_communities/config.xml b/test/ui-test/testSuites/suite_communities/config.xml new file mode 100644 index 0000000000..27738dbabd --- /dev/null +++ b/test/ui-test/testSuites/suite_communities/config.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/test/ui-test/testSuites/suite_communities/shared/scripts/community_names.py b/test/ui-test/testSuites/suite_communities/shared/scripts/community_names.py index 2ee934f5cc..fc689918eb 100644 --- a/test/ui-test/testSuites/suite_communities/shared/scripts/community_names.py +++ b/test/ui-test/testSuites/suite_communities/shared/scripts/community_names.py @@ -19,6 +19,14 @@ mainWindow_chatInfoBtnInHeader_StatusChatInfoButton = {"container": statusDeskto communityChatListCategories_Repeater = {"container": statusDesktop_mainWindow, "objectName": "communityChatListCategories", "type": "Repeater"} chatInput_Root = {"container": statusDesktop_mainWindow, "objectName": "statusChatInput", "type": "Rectangle", "visible": True} emojiPopup_Emoji_Button_Placeholder = {"container": statusDesktop_mainWindow, "objectName": "statusEmoji_%NAME%", "type": "StatusEmoji", "visible": True} +community_AddMembers_Button = {"container": statusDesktop_mainWindow, "objectName": "CommunityWelcomeBannerPanel_AddMembersButton", "type": "StatusButton", "visible": True} +community_InviteFirends_Popup_InvitePanel = {"container": statusDesktop_mainWindow_overlay, "objectName": "CommunityProfilePopupInviteFrindsPanel_ColumnLayout", "type": "ColumnLayout", "visible": True} +community_InviteFirends_Popup_ExistinContacts_ListView = {"container": community_InviteFirends_Popup_InvitePanel, "objectName": "ExistingContacts_ListView", "type": "StatusListView", "visible": True} +community_InviteFriendsToCommunityPopup_NextButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "InviteFriendsToCommunityPopup_NextButton", "type": "StatusButton", "visible": True} +community_InviteFriends_Popup_MessagePanel = {"container": statusDesktop_mainWindow_overlay, "objectName": "CommunityProfilePopupInviteMessagePanel_ColumnLayout", "type": "ColumnLayout", "visible": True} +community_ProfilePopupInviteMessagePanel_MessageInput = {"container": community_InviteFriends_Popup_MessagePanel, "objectName": "CommunityProfilePopupInviteMessagePanel_MessageInput", "type": "TextEdit", "visible": True} +community_InviteFriend_SendButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "InviteFriendsToCommunityPopup_SendButton", "type": "StatusButton", "visible": True} + # Community channel popup: createOrEditCommunityChannelNameInput_TextEdit = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelNameInput", "type": "TextEdit", "visible": True} diff --git a/test/ui-test/testSuites/suite_communities/shared/steps/communitySteps.py b/test/ui-test/testSuites/suite_communities/shared/steps/communitySteps.py index 2a7ca04c79..4430545caf 100644 --- a/test/ui-test/testSuites/suite_communities/shared/steps/communitySteps.py +++ b/test/ui-test/testSuites/suite_communities/shared/steps/communitySteps.py @@ -111,6 +111,9 @@ def step(context, emoji_description: str): def step(context): _statusCommunityScreen.delete_current_community_channel() +@When("the admin invites the user named |any| to the community with message |any|") +def step(context, user_name, message): + _statusCommunityScreen.invite_user_to_community(user_name, message) ######################### ### VERIFICATIONS region: @@ -184,4 +187,5 @@ def the_admin_creates_a_community_category(name: str, channels: str, method: str _statusCommunityScreen.create_community_category(name, channels, method) def the_category_contains_channels(category_name: str, channels: str): - _statusCommunityScreen.verify_category_contains_channels(category_name, channels) \ No newline at end of file + _statusCommunityScreen.verify_category_contains_channels(category_name, channels) + diff --git a/test/ui-test/testSuites/suite_communities/suite.conf b/test/ui-test/testSuites/suite_communities/suite.conf index c81e7a9acc..8a88e333b4 100644 --- a/test/ui-test/testSuites/suite_communities/suite.conf +++ b/test/ui-test/testSuites/suite_communities/suite.conf @@ -1,6 +1,7 @@ AUT=nim_status_client +ENVVARS=envvars LANGUAGE=Python OBJECTMAPSTYLE=script -TEST_CASES=tst_communityFlows tst_searchFlows tst_communityMessageFlows +TEST_CASES=tst_communityFlows tst_searchFlows tst_communityMessageFlows tst_communityMemberFlows VERSION=3 WRAPPERS=Qt diff --git a/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.feature b/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.feature new file mode 100644 index 0000000000..5061375909 --- /dev/null +++ b/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.feature @@ -0,0 +1,32 @@ +#****************************************************************************** +# Status.im +#*****************************************************************************/ +#/** +# * \file test.feature +# * +# * \test Status Desktop - Community Member Flows +# * \date August 2022 +# ** +# *****************************************************************************/ + +Feature: Status Desktop community members + + As a user I want to interact with members in a community + + + Background: + Given the user starts the application with a specific data folder "../../../fixtures/mutual_contacts" + When the user "tester123" logs in with password "TesTEr16843/!@00" + Then the user lands on the signed in app + Given the user opens the community portal section + And the user lands on the community portal section + And the user creates a community named "test_community", with description "Community description", intro "community intro" and outro "commmunity outro" + Then the user lands on the community named "test_community" + + + Scenario: User invites a mutual contact + When the admin invites the user named Athletic to the community with message You are invited to my community + And the user opens the chat section + And the user switches to "Athletic" chat + Then the last chat message contains "You are invited to my community" + diff --git a/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.py b/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.py new file mode 100644 index 0000000000..76d23a8ff1 --- /dev/null +++ b/test/ui-test/testSuites/suite_communities/tst_communityMemberFlows/test.py @@ -0,0 +1,9 @@ +source(findFile('scripts', 'python/bdd.py')) + +setupHooks('../../global_shared/scripts/bdd_hooks.py') +collectStepDefinitions('./steps', '../shared/steps/', '../../global_shared/steps/', '../../suite_onboarding/shared/steps/', '../../suite_messaging/shared/steps/') + + +def main(): + testSettings.throwOnFailure = True + runFeatureFile('test.feature') diff --git a/test/ui-test/testSuites/suite_messaging/config.xml b/test/ui-test/testSuites/suite_messaging/config.xml new file mode 100644 index 0000000000..27738dbabd --- /dev/null +++ b/test/ui-test/testSuites/suite_messaging/config.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/test/ui-test/testSuites/suite_messaging/shared/steps/chatSteps.py b/test/ui-test/testSuites/suite_messaging/shared/steps/chatSteps.py index 5e49defdf4..8fc05bf77f 100644 --- a/test/ui-test/testSuites/suite_messaging/shared/steps/chatSteps.py +++ b/test/ui-test/testSuites/suite_messaging/shared/steps/chatSteps.py @@ -40,7 +40,7 @@ def step(context): @Given("the group chat is created") def step(context): the_group_chat_is_created() - + @Given("the user clicks on \"|any|\" chat") def step(context, chatName): _statusMain.open_chat(chatName) @@ -81,6 +81,7 @@ def step(context): ### ACTIONS region: ######################### + @When("the user opens the chat section") def step(context): the_user_opens_the_chat_section() diff --git a/test/ui-test/testSuites/suite_messaging/suite.conf b/test/ui-test/testSuites/suite_messaging/suite.conf index 0c33262421..fd38d6f338 100644 --- a/test/ui-test/testSuites/suite_messaging/suite.conf +++ b/test/ui-test/testSuites/suite_messaging/suite.conf @@ -1,4 +1,5 @@ AUT=nim_status_client +ENVVARS=envvars LANGUAGE=Python OBJECTMAPSTYLE=script TEST_CASES=tst_ChatFlow tst_groupChat tst_adminGroupChat diff --git a/test/ui-test/testSuites/suite_messaging/tst_adminGroupChat/test.feature b/test/ui-test/testSuites/suite_messaging/tst_adminGroupChat/test.feature index 32f3de8fe6..652e1f485d 100644 --- a/test/ui-test/testSuites/suite_messaging/tst_adminGroupChat/test.feature +++ b/test/ui-test/testSuites/suite_messaging/tst_adminGroupChat/test.feature @@ -6,7 +6,7 @@ Feature: Status Desktop Group Chat Background: - Given the user starts the application with a specific data folder "../../../fixtures/group_chat" + Given the user starts the application with a specific data folder "../../../fixtures/mutual_contacts" When the user "tester123" logs in with password "TesTEr16843/!@00" Then the user lands on the signed in app diff --git a/test/ui-test/testSuites/suite_messaging/tst_groupChat/test.feature b/test/ui-test/testSuites/suite_messaging/tst_groupChat/test.feature index fe9c942533..82ed893fb5 100644 --- a/test/ui-test/testSuites/suite_messaging/tst_groupChat/test.feature +++ b/test/ui-test/testSuites/suite_messaging/tst_groupChat/test.feature @@ -6,7 +6,7 @@ Feature: Status Desktop Group Chat Background: - Given the user starts the application with a specific data folder "../../../fixtures/group_chat" + Given the user starts the application with a specific data folder "../../../fixtures/mutual_contacts" When the user "tester123" logs in with password "TesTEr16843/!@00" Then the user lands on the signed in app diff --git a/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteFriendsPanel.qml b/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteFriendsPanel.qml index d47dd147fd..6342a8e2cd 100644 --- a/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteFriendsPanel.qml +++ b/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteFriendsPanel.qml @@ -14,6 +14,7 @@ import shared.status 1.0 ColumnLayout { id: root + objectName: "CommunityProfilePopupInviteFrindsPanel_ColumnLayout" property string headerTitle: "" diff --git a/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteMessagePanel.qml b/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteMessagePanel.qml index f5b60076bf..28369dc924 100644 --- a/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteMessagePanel.qml +++ b/ui/app/AppLayouts/Chat/panels/communities/CommunityProfilePopupInviteMessagePanel.qml @@ -14,6 +14,7 @@ import shared.status 1.0 ColumnLayout { id: root + objectName: "CommunityProfilePopupInviteMessagePanel_ColumnLayout" property var pubKeys: ([]) @@ -33,6 +34,7 @@ ColumnLayout { StatusInput { id: messageInput + input.edit.objectName: "CommunityProfilePopupInviteMessagePanel_MessageInput" label: qsTr("Invitation Message") charLimit: d.maxMsgLength placeholderText: qsTr("The message a contact will get with community invitation") diff --git a/ui/app/AppLayouts/Chat/panels/communities/CommunityWelcomeBannerPanel.qml b/ui/app/AppLayouts/Chat/panels/communities/CommunityWelcomeBannerPanel.qml index 2fedc1abfa..30406008af 100644 --- a/ui/app/AppLayouts/Chat/panels/communities/CommunityWelcomeBannerPanel.qml +++ b/ui/app/AppLayouts/Chat/panels/communities/CommunityWelcomeBannerPanel.qml @@ -83,6 +83,7 @@ Rectangle { StatusButton { id: addMembersBtn + objectName:"CommunityWelcomeBannerPanel_AddMembersButton" text: qsTr("Add members") anchors.horizontalCenter: parent.horizontalCenter anchors.top: welcomeText.bottom diff --git a/ui/app/AppLayouts/Chat/popups/community/InviteFriendsToCommunityPopup.qml b/ui/app/AppLayouts/Chat/popups/community/InviteFriendsToCommunityPopup.qml index 953e601206..dbac63abcd 100644 --- a/ui/app/AppLayouts/Chat/popups/community/InviteFriendsToCommunityPopup.qml +++ b/ui/app/AppLayouts/Chat/popups/community/InviteFriendsToCommunityPopup.qml @@ -58,6 +58,7 @@ StatusStackModal { rightPadding: 0 nextButton: StatusButton { + objectName: "InviteFriendsToCommunityPopup_NextButton" text: qsTr("Next") enabled: root.pubKeys.length onClicked: { @@ -66,6 +67,7 @@ StatusStackModal { } finishButton: StatusButton { + objectName: "InviteFriendsToCommunityPopup_SendButton" enabled: root.pubKeys.length > 0 text: qsTr("Send Invites") onClicked: { diff --git a/ui/app/AppLayouts/Onboarding/views/LoginView.qml b/ui/app/AppLayouts/Onboarding/views/LoginView.qml index b6bd5b05d4..1b94762013 100644 --- a/ui/app/AppLayouts/Onboarding/views/LoginView.qml +++ b/ui/app/AppLayouts/Onboarding/views/LoginView.qml @@ -289,6 +289,9 @@ Item { width: parent.width Repeater { + objectName: "LoginView_AccountsRepeater" + width: parent.width + height: parent.height model: proxyModel delegate: AccountMenuItemPanel { diff --git a/ui/imports/shared/views/ExistingContacts.qml b/ui/imports/shared/views/ExistingContacts.qml index 707b1df9ec..77c570ca1b 100644 --- a/ui/imports/shared/views/ExistingContacts.qml +++ b/ui/imports/shared/views/ExistingContacts.qml @@ -40,6 +40,7 @@ Item { StatusListView { id: contactListView + objectName: "ExistingContacts_ListView" anchors.fill: parent rightMargin: 0 leftMargin: 0