4.5 KiB
Testing Guide
Automated Tests
Setup
- Clone and set up the Endorser server:
git clone https://github.com/time-endorser/endorser-ch.git
cd endorser-ch
npm install
test/test.sh
cp .env.local .env
NODE_ENV=test-local npm run dev
If that fails, follow the instructions in the endorser-ch directory's README.md.
- Install Playwright browsers:
npx playwright install
Running Tests
Full Test Suite
Run all local tests:
npm run test-all
Note: Tests may occasionally fail and succeed on rerun (especially if a different test fails).
Single Test
To run a single test with tracing enabled:
npx playwright test -c playwright.config-local.ts --trace on test-playwright/40-add-contact.spec.ts
Global Test Server
It's possible to use the global test Endorser (ledger) server, though not all tests currently succeed:
VITE_DEFAULT_ENDORSER_API_SERVER=https://test-ledger.time.com npm run dev
Minimal Test Data
To run with minimal test data:
rm ../endorser-ch-test-local.sqlite3
NODE_ENV=test-local npm run flyway migrate
NODE_ENV=test-local npm run test test/controller0
NODE_ENV=test-local npm run dev
Test User Setup
Register New User on Test Server
On the test server, User #0 has rights to register others. Import User #0 with this seed phrase:
rigid shrug mobile smart veteran half all pond toilet brave review universe ship congress found yard skate elite apology jar uniform subway slender luggage
This corresponds to: did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F
(Other test users can be found here.)
Manual Testing Steps
Identity Management
-
Create multiple identifiers:
- Go to "Your Identity" screen
- Click "Advanced"
- Click "Switch Identity / No Identity"
- Click "Add Another Identity..."
-
Create keys with alternate tools:
- See openssl_signing_console.rst for JWT creation with local keypairs
Web Push Testing
For web-push tests:
- Change push server URL in Advanced settings on the account page
- Install Time Safari & push server on the same domain
Manual Walk-through Test Checklist
-
Initial Setup
- Backup seed & data
- Get CSV dump from Endorser Mobile
- Check DB migration compatibility
- Verify version update
-
Environment Setup
- Clear browser data
- Add identity
- Import Time Safari contacts and CSV contacts
- Verify test API usage
-
Fresh Install Testing
- Clear browser data
- Check account page before home page
- Verify ID generation
- Test feed without names
- Verify contact URL copying
- Check messaging on all pages
- Verify project discovery
- Test contact addition without ID
-
PWA Installation
- Install PWA
- Test User 0 functions
- Verify image handling
- Test contact management
- Check feed display
- Verify name visibility
-
Feature Testing
- Test identifier switching
- Check registration limits
- Verify gift recording
- Test offer & delivery
- Check contact registration
- Test notifications
- Verify export/import
- Test location features
- Check third-user connections
- Test mobile image sharing
Data Reset Instructions
To clear/reset data:
-
Browser Cache:
- Chrome: Go to
chrome://settings/cookies
→ "all site data and permissions" - Firefox: Go to
about:preferences
→ search "cache" → "Manage Data" - Manually remove IndexedDB data if needed
- Chrome: Go to
-
Notification Permissions:
- Chrome: Go to
chrome://settings/content/notifications
- Firefox: Go to
about:preferences
→ search "notifications"
- Chrome: Go to
-
Service Worker:
- Chrome: Go to
chrome://serviceworker-internals
- Firefox: Go to
about:serviceworkers
- Chrome: Go to
-
Cache Storage:
- Chrome: Dev tools → Application
- Firefox: Dev tools → Storage
(Additional reset steps may be documented in HelpNotificationsView.vue)
Troubleshooting
-
Web Push Issues:
GET http://localhost:8080/web-push/vapid
errors indicate py-push-server is not running- Local notifications require special routing from browser's push service
-
Identity Errors:
- "No keys for ID" errors may occur when current account was erased
- Account switching can cause issues with erased accounts
-
Encryption Issues:
- "DEXIE ENCRYPT ADDON: Could not decrypt message!" indicates wrong encryption key
- May occur after clearing storage
- Usually requires storage erasure and identifier reload