# Testing Guide ## Automated Tests ### Setup 1. Clone and set up the Endorser server: ```bash 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. 2. Install Playwright browsers: ```bash npx playwright install ``` ### Running Tests #### Full Test Suite Run all local tests: ```bash 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: ```bash 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: ```bash VITE_DEFAULT_ENDORSER_API_SERVER=https://test-ledger.time.com npm run dev ``` #### Minimal Test Data To run with minimal test data: ```bash 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: ```bash 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](https://github.com/trentlarson/endorser-ch/blob/master/test/util.js).) ## Manual Testing Steps ### Identity Management 1. Create multiple identifiers: - Go to "Your Identity" screen - Click "Advanced" - Click "Switch Identity / No Identity" - Click "Add Another Identity..." 2. Create keys with alternate tools: - See [openssl_signing_console.rst](openssl_signing_console.rst) for JWT creation with local keypairs ### Web Push Testing For web-push tests: 1. Change push server URL in Advanced settings on the account page 2. Install Time Safari & push server on the same domain ### Manual Walk-through Test Checklist 1. Initial Setup - Backup seed & data - Get CSV dump from Endorser Mobile - Check DB migration compatibility - Verify version update 2. Environment Setup - Clear browser data - Add identity - Import Time Safari contacts and CSV contacts - Verify test API usage 3. 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 4. PWA Installation - Install PWA - Test User 0 functions - Verify image handling - Test contact management - Check feed display - Verify name visibility 5. 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: 1. 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 2. Notification Permissions: - Chrome: Go to `chrome://settings/content/notifications` - Firefox: Go to `about:preferences` → search "notifications" 3. Service Worker: - Chrome: Go to `chrome://serviceworker-internals` - Firefox: Go to `about:serviceworkers` 4. Cache Storage: - Chrome: Dev tools → Application - Firefox: Dev tools → Storage (Additional reset steps may be documented in HelpNotificationsView.vue) ## Troubleshooting 1. 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 2. Identity Errors: - "No keys for ID" errors may occur when current account was erased - Account switching can cause issues with erased accounts 3. 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