mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 13:32:23 +00:00
* feat: add E2E tests for auth access control and billing/subscription flows Add comprehensive E2E test coverage for authentication, access control, and billing/subscription lifecycle using Appium mac2 + WebDriverIO. New test cases (11 total): - 1.1 User registration via deep link - 1.1.1 Duplicate account handling - 1.2 Multi-device sessions - 3.1.1 Default FREE plan allocation - 3.2.1 Upgrade flow (Stripe purchase API + polling) - 3.2.2 Downgrade flow verification - 3.3.1 Active subscription display - 3.3.2 Renewal date handling - 3.3.3 Cancellation via Stripe portal - 1.3 Logout via Settings - 1.3.1 Revoked session auto-logout Mock server additions: - Dynamic team data with subscription controlled by mockBehavior - /payments/stripe/currentPlan, purchasePlan, portal routes - /payments/coinbase/charge route Split e2e.sh into per-flow scripts (e2e-login.sh, e2e-auth.sh) to prevent Redux Persist state leaking between specs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: fix Prettier formatting for E2E test files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address review findings for E2E auth spec - clickFirstCandidate: check retry result, return null with tree dump on failure - navigateToHome: throw on failure instead of silently continuing - 3.2.2: assert exactly 1 Upgrade element (PRO only) and verify PRO visible Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add E2E tests for card payment processing flow Add 8 new E2E tests covering checkout sessions, payment confirmation via polling, duplicate prevention, and billing events for Stripe card and Coinbase crypto payment flows. New files: - test/e2e/specs/card-payment-flow.spec.ts (8 test cases) - scripts/e2e-payment.sh (standalone runner) Modified: - mock-server.ts: add purchaseError/coinbaseError behavior toggles - package.json: add test:e2e:payment script and chain into test:e2e Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add assertions to waitForTextToDisappear calls and guard purchaseError cleanup Ensure all waitForTextToDisappear results are asserted with expect().toBe(true) instead of silently discarding the return value. Wrap 5.2.2 test body in try/finally so the purchaseError mock flag is always reset even if assertions throw. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: fix Prettier formatting in card payment spec Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: fix pre-existing Prettier formatting issues Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add E2E tests for cryptocurrency payment processing flow Covers invoice creation (Coinbase charge), confirmation handling (success, underpayment, overpayment), and payment status updates (polling, API errors, expired charges). Extends mock server with crypto payment status endpoint and adds test runner script. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add E2E tests for Telegram integration flows Covers sections 7.1-7.5: account linking, permission levels, command processing, webhook handling, and disconnect/re-setup flows (13 tests). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add E2E tests for Notion integration flows Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add E2E tests for Gmail integration flows Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
117 lines
4.3 KiB
JSON
117 lines
4.3 KiB
JSON
{
|
|
"name": "alphahuman",
|
|
"private": true,
|
|
"version": "0.47.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"dev:web": "vite",
|
|
"dev:app": "source scripts/load-dotenv.sh && tauri dev",
|
|
"build": "tsc && vite build",
|
|
"build:app": "yarn skills:build && tsc && vite build",
|
|
"compile": "tsc --noEmit",
|
|
"preview": "vite preview",
|
|
"tauri": "tauri",
|
|
"macos:build:debug": "yarn macos:build:release --debug",
|
|
"macos:build:release": "source scripts/load-dotenv.sh && tauri build --bundles app dmg",
|
|
"macos:build:sign:release": "source scripts/load-env.sh && tauri build --bundles app dmg",
|
|
"macos:run": "open 'src-tauri/target/debug/bundle/macos/AlphaHuman.app'",
|
|
"macos:dev": "yarn macos:build:debug && open 'src-tauri/target/debug/bundle/macos/AlphaHuman.app'",
|
|
"android:dev": "tauri android dev",
|
|
"android:build": "tauri android build",
|
|
"test": "vitest run",
|
|
"test:unit": "vitest run",
|
|
"test:unit:watch": "vitest",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:rust": "source $HOME/.cargo/env 2>/dev/null; cargo test --manifest-path src-tauri/Cargo.toml",
|
|
"test:e2e:build": "bash scripts/e2e-build.sh",
|
|
"test:e2e:login": "bash scripts/e2e-login.sh",
|
|
"test:e2e:auth": "bash scripts/e2e-auth.sh",
|
|
"test:e2e:payment": "bash scripts/e2e-payment.sh",
|
|
"test:e2e:crypto-payment": "bash scripts/e2e-crypto-payment.sh",
|
|
"test:e2e:telegram": "bash scripts/e2e-telegram.sh",
|
|
"test:e2e:notion": "bash scripts/e2e-notion.sh",
|
|
"test:e2e:gmail": "bash scripts/e2e-gmail.sh",
|
|
"test:e2e": "yarn test:e2e:build && yarn test:e2e:login && yarn test:e2e:auth && yarn test:e2e:payment && yarn test:e2e:crypto-payment && yarn test:e2e:telegram && yarn test:e2e:notion && yarn test:e2e:gmail",
|
|
"test:all": "yarn test:coverage && yarn test:rust && yarn test:e2e",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"lint": "eslint . --ext .ts,.tsx",
|
|
"lint:fix": "eslint . --ext .ts,.tsx --fix",
|
|
"skills:build": "cd skills && yarn build",
|
|
"skills:watch": "cd skills && yarn build:watch",
|
|
"prepare": "husky"
|
|
},
|
|
"dependencies": {
|
|
"@heroicons/react": "^2.2.0",
|
|
"@reduxjs/toolkit": "^2.11.2",
|
|
"@sentry/react": "^10.38.0",
|
|
"@tauri-apps/api": "^2",
|
|
"@tauri-apps/plugin-deep-link": "^2",
|
|
"@tauri-apps/plugin-opener": "^2",
|
|
"@tauri-apps/plugin-os": "^2.3.2",
|
|
"@tauri-apps/plugin-shell": "~2",
|
|
"@types/react-router-dom": "^5.3.3",
|
|
"buffer": "^6.0.3",
|
|
"debug": "^4.4.3",
|
|
"immer": "^11.1.3",
|
|
"lottie-react": "^2.4.1",
|
|
"os-browserify": "^0.3.0",
|
|
"process": "^0.11.10",
|
|
"qrcode.react": "^4.2.0",
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-redux": "^9.2.0",
|
|
"react-router-dom": "^7.13.0",
|
|
"redux-logger": "^3.0.6",
|
|
"redux-persist": "^6.0.0",
|
|
"socket.io-client": "^4.8.3",
|
|
"telegram": "^2.26.22",
|
|
"util": "^0.12.5",
|
|
"zustand": "^5.0.10"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.2",
|
|
"@tailwindcss/forms": "^0.5.11",
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@tauri-apps/cli": "^2",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
"@types/debug": "^4.1.12",
|
|
"@types/node": "^25.0.10",
|
|
"@types/react": "^19.1.8",
|
|
"@types/react-dom": "^19.1.6",
|
|
"@types/redux-logger": "^3.0.13",
|
|
"@typescript-eslint/eslint-plugin": "^8.54.0",
|
|
"@typescript-eslint/parser": "^8.54.0",
|
|
"@vitejs/plugin-react": "^4.6.0",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"@wdio/appium-service": "^9.24.0",
|
|
"@wdio/cli": "^9.24.0",
|
|
"@wdio/local-runner": "^9.24.0",
|
|
"@wdio/mocha-framework": "^9.24.0",
|
|
"@wdio/spec-reporter": "^9.24.0",
|
|
"autoprefixer": "^10.4.23",
|
|
"eslint": "^9.39.2",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-import": "^2.32.0",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^28.0.0",
|
|
"msw": "^2.12.10",
|
|
"postcss": "^8.5.6",
|
|
"prettier": "^3.8.1",
|
|
"tailwindcss": "^3.4.19",
|
|
"typescript": "~5.8.3",
|
|
"vite": "^7.0.4",
|
|
"vite-plugin-node-polyfills": "^0.25.0",
|
|
"vitest": "^4.0.18"
|
|
}
|
|
}
|