- Implement Next.js middleware for route protection - Create Zustand auth store for web (similar to mobile) - Add comprehensive tests for middleware and auth store - Protect authenticated routes (/dashboard, /profile) - Redirect unauthenticated users to /login - Redirect authenticated users from auth routes to /dashboard - Handle session expiration with 401 callback - Set access token cookie for middleware - All tests passing (105 tests total)
115 lines
2.0 KiB
YAML
115 lines
2.0 KiB
YAML
appId: com.wellnuo.app
|
|
---
|
|
# Full subscription E2E test
|
|
|
|
# Launch app
|
|
- launchApp:
|
|
clearState: true
|
|
|
|
# Wait for app to load
|
|
- extendedWaitUntil:
|
|
visible: "Continue"
|
|
timeout: 10000
|
|
|
|
# Enter test email
|
|
- tapOn: "Enter your email"
|
|
- inputText: "wellnuo_test_o4934@yopmail.com"
|
|
- hideKeyboard
|
|
|
|
# Tap Continue
|
|
- tapOn: "Continue"
|
|
|
|
# Wait for OTP screen
|
|
- extendedWaitUntil:
|
|
visible: "Check your email"
|
|
timeout: 10000
|
|
|
|
# Enter OTP code - test bypass code 000000
|
|
- tapOn:
|
|
point: "15%,25%"
|
|
- inputText: "000000"
|
|
- tapOn: "Verify"
|
|
|
|
# Wait for main screen
|
|
- extendedWaitUntil:
|
|
visible: "My Loved Ones"
|
|
timeout: 15000
|
|
|
|
# Take screenshot BEFORE
|
|
- takeScreenshot: /tmp/e2e-before-subscription.png
|
|
|
|
# Tap on Grandma
|
|
- tapOn: "Grandma"
|
|
|
|
# Wait for detail page
|
|
- extendedWaitUntil:
|
|
visible: "Subscription"
|
|
timeout: 5000
|
|
|
|
# Go to subscription page
|
|
- tapOn: "Subscription"
|
|
|
|
# Wait for subscription screen
|
|
- extendedWaitUntil:
|
|
visible: "Subscribe"
|
|
timeout: 5000
|
|
|
|
# Take screenshot
|
|
- takeScreenshot: /tmp/e2e-subscription-screen.png
|
|
|
|
# Tap Subscribe
|
|
- tapOn: "Subscribe"
|
|
|
|
# Wait for Stripe Payment Sheet
|
|
- extendedWaitUntil:
|
|
visible: "Card number"
|
|
timeout: 10000
|
|
|
|
# Fill card number
|
|
- tapOn: "Card number"
|
|
- inputText: "4242424242424242"
|
|
|
|
# Fill expiration date
|
|
- tapOn:
|
|
point: "25%,60%"
|
|
- inputText: "1230"
|
|
|
|
# Fill CVC
|
|
- tapOn: "CVC"
|
|
- inputText: "123"
|
|
|
|
# Fill ZIP
|
|
- tapOn: "ZIP Code"
|
|
- inputText: "10001"
|
|
- hideKeyboard
|
|
|
|
# Take screenshot
|
|
- takeScreenshot: /tmp/e2e-payment-form.png
|
|
|
|
# Tap Pay button
|
|
- tapOn:
|
|
point: "50%,82%"
|
|
|
|
# Wait for result
|
|
- extendedWaitUntil:
|
|
visible: "Subscription Active"
|
|
timeout: 30000
|
|
|
|
# Take screenshot after payment
|
|
- takeScreenshot: /tmp/e2e-after-payment.png
|
|
|
|
# Close success modal if present
|
|
- runFlow:
|
|
when:
|
|
visible: "Continue"
|
|
commands:
|
|
- tapOn: "Continue"
|
|
|
|
# Wait for main list
|
|
- extendedWaitUntil:
|
|
visible: "My Loved Ones"
|
|
timeout: 10000
|
|
|
|
# Final screenshot
|
|
- takeScreenshot: /tmp/e2e-final-result.png
|