* delete old onboarding files and code * add custom FollowButton component to Post, FeedItem, & ProfileCard * move building suggested feed into helper lib * show suggested posts/feed if follower list is empty * Update tsconfig.json * add pagination to getting new onboarding * remove unnecessary console log * fix naming, add better null check for combinedCursor * In locally-combined feeds, correctly produce an undefined cursor when out of data * Minor refactors of the suggested posts lib functions * Show 'follow button' style of post meta in certain conditions only * Only show follow btn in posts on the main feed and the discovery feed * Add a welcome notice to the home feed * Tune the timing of when the welcome banner shows or hides * Make the follow button an observer (closes #244) * Update postmeta to keep the follow btn after press until next render * A couple of fixes that ensure consistent welcome screen * Fix lint * Rework the welcome banner * Fix cache invalidation of follows model on user switch * Show welcome banner while loading * Update the home onboarding feed to get top posts from hardcode recommends * Drop unused helper function * Update happy path tests --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
70 lines
2.7 KiB
JavaScript
70 lines
2.7 KiB
JavaScript
/* eslint-env detox/detox */
|
|
|
|
describe('Happy paths', () => {
|
|
async function grantAccessToUserWithValidCredentials(
|
|
username,
|
|
{takeScreenshots} = {takeScreenshots: false},
|
|
) {
|
|
await element(by.id('signInButton')).tap()
|
|
if (takeScreenshots) {
|
|
await device.takeScreenshot('1- opened sign-in screen')
|
|
}
|
|
await element(by.id('loginSelectServiceButton')).tap()
|
|
if (takeScreenshots) {
|
|
await device.takeScreenshot('2- opened service selector')
|
|
}
|
|
await element(by.id('localDevServerButton')).tap()
|
|
if (takeScreenshots) {
|
|
await device.takeScreenshot('3- selected local dev server')
|
|
}
|
|
await element(by.id('loginUsernameInput')).typeText(username)
|
|
await element(by.id('loginPasswordInput')).typeText('hunter2')
|
|
if (takeScreenshots) {
|
|
await device.takeScreenshot('4- entered username and password')
|
|
}
|
|
await element(by.id('loginNextButton')).tap()
|
|
}
|
|
|
|
beforeEach(async () => {
|
|
await device.uninstallApp()
|
|
await device.installApp()
|
|
await device.launchApp({permissions: {notifications: 'YES'}})
|
|
})
|
|
|
|
it('As Alice, I can login', async () => {
|
|
await expect(element(by.id('signInButton'))).toBeVisible()
|
|
await grantAccessToUserWithValidCredentials('alice', {
|
|
takeScreenshots: true,
|
|
})
|
|
await device.takeScreenshot('5- opened home screen')
|
|
})
|
|
|
|
it('As Alice, I can login, and post a text', async () => {
|
|
await grantAccessToUserWithValidCredentials('alice')
|
|
await element(by.id('composeFAB')).tap()
|
|
await device.takeScreenshot('1- opened composer')
|
|
await element(by.id('composerTextInput')).typeText(
|
|
'Greetings earthlings, I come in peace... and to run some tests.',
|
|
)
|
|
await device.takeScreenshot('2- entered text')
|
|
await element(by.id('composerPublishButton')).tap()
|
|
await device.takeScreenshot('3- opened general section')
|
|
await expect(element(by.id('composeFAB'))).toBeVisible()
|
|
})
|
|
|
|
it('I can create a new account', async () => {
|
|
await element(by.id('createAccountButton')).tap()
|
|
await device.takeScreenshot('1- opened create account screen')
|
|
await element(by.id('registerSelectServiceButton')).tap()
|
|
await device.takeScreenshot('2- opened service selector')
|
|
await element(by.id('localDevServerButton')).tap()
|
|
await device.takeScreenshot('3- selected local dev server')
|
|
await element(by.id('registerEmailInput')).typeText('example@test.com')
|
|
await element(by.id('registerPasswordInput')).typeText('hunter2')
|
|
await element(by.id('registerHandleInput')).typeText('e2e-test')
|
|
await element(by.id('registerIs13Input')).tap()
|
|
await device.takeScreenshot('4- entered account details')
|
|
await element(by.id('createAccountButton')).tap()
|
|
await expect(element(by.id('welcomeBanner'))).toBeVisible()
|
|
})
|
|
})
|