diff options
Diffstat (limited to '__e2e__/util.ts')
-rw-r--r-- | __e2e__/util.ts | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/__e2e__/util.ts b/__e2e__/util.ts new file mode 100644 index 000000000..78d9f9f5d --- /dev/null +++ b/__e2e__/util.ts @@ -0,0 +1,96 @@ +import {resolveConfig} from 'detox/internals' + +const platform = device.getPlatform() + +export async function openApp(opts: any) { + opts = opts || {} + const config = await resolveConfig() + if (config.configurationName.split('.').includes('debug')) { + return await openAppForDebugBuild(platform, opts) + } else { + return await device.launchApp({ + ...opts, + newInstance: true, + }) + } +} + +export async function isVisible(id: string) { + try { + await expect(element(by.id(id))).toBeVisible() + return true + } catch (e) { + return false + } +} + +export async function login( + service: string, + username: string, + password: string, + {takeScreenshots} = {takeScreenshots: false}, +) { + await element(by.id('signInButton')).tap() + if (takeScreenshots) { + await device.takeScreenshot('1- opened sign-in screen') + } + if (await isVisible('chooseAccountForm')) { + await element(by.id('chooseNewAccountBtn')).tap() + } + await element(by.id('loginSelectServiceButton')).tap() + if (takeScreenshots) { + await device.takeScreenshot('2- opened service selector') + } + await element(by.id('customServerTextInput')).typeText(service) + await element(by.id('customServerSelectBtn')).tap() + if (takeScreenshots) { + await device.takeScreenshot('3- input custom service') + } + await element(by.id('loginUsernameInput')).typeText(username) + await element(by.id('loginPasswordInput')).typeText(password) + if (takeScreenshots) { + await device.takeScreenshot('4- entered username and password') + } + await element(by.id('loginNextButton')).tap() +} + +async function openAppForDebugBuild(platform: string, opts: any) { + const deepLinkUrl = // Local testing with packager + /*process.env.EXPO_USE_UPDATES + ? // Testing latest published EAS update for the test_debug channel + getDeepLinkUrl(getLatestUpdateUrl()) + : */ getDeepLinkUrl(getDevLauncherPackagerUrl(platform)) + + if (platform === 'ios') { + await device.launchApp({ + ...opts, + newInstance: true, + }) + sleep(3000) + await device.openURL({ + url: deepLinkUrl, + }) + } else { + await device.launchApp({ + ...opts, + newInstance: true, + url: deepLinkUrl, + }) + } + + await sleep(3000) +} + +export async function createServer(path = '') { + const res = await fetch(`http://localhost:1986/${path}`, {method: 'POST'}) + const resBody = await res.text() + return resBody +} + +const getDeepLinkUrl = (url: string) => + `expo+bluesky://expo-development-client/?url=${encodeURIComponent(url)}` + +const getDevLauncherPackagerUrl = (platform: string) => + `http://localhost:8081/index.bundle?platform=${platform}&dev=true&minify=false&disableOnboarding=1` + +export const sleep = (t: number) => new Promise(res => setTimeout(res, t)) |