# Testing Guide

Start with [README.md](./README.md). This file has more details.

## 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