/** * 登录账号凭据 —— 平台用例(登录/登出/注册收尾登回主账号)用。 * 分平台配置(Android / iOS 可用不同账号),取值优先级与 wifi.config 一致: * 平台专用 env(ACCOUNT_EMAIL_ANDROID / ACCOUNT_EMAIL_IOS) > 通用 env(ACCOUNT_EMAIL) > 默认 * 密码同理(ACCOUNT_PASSWORD_ANDROID / ACCOUNT_PASSWORD_IOS > ACCOUNT_PASSWORD > 默认)。 * * 注:注册/忘记密码/注销用例用临时邮箱(account-code.helper)自建账号,不用这里的主账号; * 主账号仅用于"登录"用例与各流程结尾登回。 */ export interface AccountCredentials { email: string; password: string; } // 主账号分平台默认(Android / iOS 不同账号,密码相同)。env 可覆盖: // ACCOUNT_EMAIL_ANDROID / ACCOUNT_EMAIL_IOS > ACCOUNT_EMAIL > 平台默认 const DEFAULT_EMAIL_ANDROID = 'oap107@uuf.me'; const DEFAULT_PASSWORD = '1234567b'; function pick(platformVar: string, genericVar: string, def: string): string { return process.env[platformVar] || process.env[genericVar] || def; } /** 取当前(或指定)平台的登录账号。platform 缺省读 PLATFORM env(android/ios)。 * 规则:**iOS 默认沿用 Android 账号** —— iOS 未显式设 ACCOUNT_EMAIL_IOS 时回落到 * ACCOUNT_EMAIL_ANDROID(再到通用 ACCOUNT_EMAIL、Android 默认),两端同一账号便于过夜跑批。 */ export function getAccountCredentials(platform?: 'android' | 'ios'): AccountCredentials { const isIos = (platform || process.env.PLATFORM || 'android').toLowerCase() === 'ios'; if (isIos) { return { email: process.env.ACCOUNT_EMAIL_IOS || process.env.ACCOUNT_EMAIL_ANDROID || process.env.ACCOUNT_EMAIL || DEFAULT_EMAIL_ANDROID, password: process.env.ACCOUNT_PASSWORD_IOS || process.env.ACCOUNT_PASSWORD_ANDROID || process.env.ACCOUNT_PASSWORD || DEFAULT_PASSWORD, }; } return { email: pick('ACCOUNT_EMAIL_ANDROID', 'ACCOUNT_EMAIL', DEFAULT_EMAIL_ANDROID), password: pick('ACCOUNT_PASSWORD_ANDROID', 'ACCOUNT_PASSWORD', DEFAULT_PASSWORD), }; } // 欧区账号(欧区账号登录必测项 ONES 227290 用)。env: ACCOUNT_EMAIL_EU / ACCOUNT_PASSWORD_EU 可覆盖。 const DEFAULT_EU_EMAIL = 'oeu5@uuf.me'; const DEFAULT_EU_PASSWORD = '88888888'; /** 取欧区登录账号。 */ export function getEuAccountCredentials(): AccountCredentials { return { email: process.env.ACCOUNT_EMAIL_EU || DEFAULT_EU_EMAIL, password: process.env.ACCOUNT_PASSWORD_EU || DEFAULT_EU_PASSWORD, }; }