diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-04-20 17:16:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-20 17:16:56 -0500 |
commit | 22884b53ad4daa2932aa8ed34fc5d5b928f8094d (patch) | |
tree | 15319118bfc342d63c9f320b0f2e4f6cc13fc79a /__e2e__ | |
parent | 3e78c7101815985241b2631432a023dc8f70d82e (diff) | |
download | voidsky-22884b53ad4daa2932aa8ed34fc5d5b928f8094d.tar.zst |
Thread muting [APP-29] (#500)
* Implement thread muting * Apply filtering on background fetched notifs * Implement thread-muting tests
Diffstat (limited to '__e2e__')
-rw-r--r-- | __e2e__/tests/thread-muting.test.ts | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/__e2e__/tests/thread-muting.test.ts b/__e2e__/tests/thread-muting.test.ts new file mode 100644 index 000000000..a5cefdb26 --- /dev/null +++ b/__e2e__/tests/thread-muting.test.ts @@ -0,0 +1,116 @@ +/* eslint-env detox/detox */ + +import {openApp, login, createServer} from '../util' + +describe('Thread muting', () => { + let service: string + beforeAll(async () => { + service = await createServer('?users&follows') + await openApp({permissions: {notifications: 'YES'}}) + }) + + it('Login, create a thread, and log out', async () => { + await login(service, 'alice', 'hunter2') + await element(by.id('homeScreenFeedTabs-Following')).tap() + await element(by.id('composeFAB')).tap() + await element(by.id('composerTextInput')).typeText('Test thread') + await element(by.id('composerPublishBtn')).tap() + await expect(element(by.id('composeFAB'))).toBeVisible() + await element(by.id('viewHeaderDrawerBtn')).tap() + await element(by.id('menuItemButton-Settings')).tap() + await element(by.id('signOutBtn')).tap() + }) + + it('Login, reply to the thread, and log out', async () => { + await login(service, 'bob', 'hunter2') + await element(by.id('homeScreenFeedTabs-Following')).tap() + const alicePosts = by.id('feedItem-by-alice.test') + await element(by.id('replyBtn').withAncestor(alicePosts)).atIndex(0).tap() + await element(by.id('composerTextInput')).typeText('Reply 1') + await element(by.id('composerPublishBtn')).tap() + await expect(element(by.id('composeFAB'))).toBeVisible() + await element(by.id('viewHeaderDrawerBtn')).tap() + await element(by.id('menuItemButton-Settings')).tap() + await element(by.id('signOutBtn')).tap() + }) + + it('Login, confirm notification exists, mute thread, and log out', async () => { + await login(service, 'alice', 'hunter2') + + await element(by.id('bottomBarNotificationsBtn')).tap() + const bobNotifs = by.id('feedItem-by-bob.test') + await expect( + element(by.id('postText').withAncestor(bobNotifs)).atIndex(0), + ).toHaveText('Reply 1') + await element(by.id('postDropdownBtn').withAncestor(bobNotifs)) + .atIndex(0) + .tap() + await element(by.id('postDropdownMuteThreadBtn')).tap() + // have to wait for the toast to clear + await waitFor(element(by.id('viewHeaderDrawerBtn'))) + .toBeVisible() + .withTimeout(5000) + + await element(by.id('viewHeaderDrawerBtn')).tap() + await element(by.id('menuItemButton-Settings')).tap() + await element(by.id('signOutBtn')).tap() + }) + + it('Login, reply to the thread twice, and log out', async () => { + await login(service, 'bob', 'hunter2') + + await element(by.id('bottomBarProfileBtn')).tap() + await element(by.id('selector-1')).tap() + const bobPosts = by.id('feedItem-by-bob.test') + await element(by.id('replyBtn').withAncestor(bobPosts)).atIndex(0).tap() + await element(by.id('composerTextInput')).typeText('Reply 2') + await element(by.id('composerPublishBtn')).tap() + await expect(element(by.id('composeFAB'))).toBeVisible() + + const alicePosts = by.id('feedItem-by-alice.test') + await element(by.id('replyBtn').withAncestor(alicePosts)).atIndex(0).tap() + await element(by.id('composerTextInput')).typeText('Reply 3') + await element(by.id('composerPublishBtn')).tap() + await expect(element(by.id('composeFAB'))).toBeVisible() + + await element(by.id('bottomBarHomeBtn')).tap() + await element(by.id('viewHeaderDrawerBtn')).tap() + await element(by.id('menuItemButton-Settings')).tap() + await element(by.id('signOutBtn')).tap() + }) + + it('Login, confirm notifications dont exist, unmute the thread, confirm notifications exist', async () => { + await login(service, 'alice', 'hunter2') + + await element(by.id('bottomBarNotificationsBtn')).tap() + const bobNotifs = by.id('feedItem-by-bob.test') + await expect( + element(by.id('postText').withAncestor(bobNotifs)).atIndex(0), + ).not.toExist() + + await element(by.id('bottomBarHomeBtn')).tap() + const alicePosts = by.id('feedItem-by-alice.test') + await element(by.id('postDropdownBtn').withAncestor(alicePosts)) + .atIndex(0) + .tap() + await element(by.id('postDropdownMuteThreadBtn')).tap() + + // TODO + // the swipe down to trigger PTR isnt working and I dont want to block on this + // -prf + // await element(by.id('bottomBarNotificationsBtn')).tap() + // await element(by.id('notifsFeed')).swipe('down', 'fast') + // await waitFor(element(by.id('postText').withAncestor(bobNotifs))) + // .toBeVisible() + // .withTimeout(5000) + // await expect( + // element(by.id('postText').withAncestor(bobNotifs)).atIndex(0), + // ).toHaveText('Reply 2') + // await expect( + // element(by.id('postText').withAncestor(bobNotifs)).atIndex(1), + // ).toHaveText('Reply 3') + // await expect( + // element(by.id('postText').withAncestor(bobNotifs)).atIndex(2), + // ).toHaveText('Reply 1') + }) +}) |