Browse Source
- Add proxy configuration for API requests in dev/test - Target default endorser API server in development - Add proxy for /api endpoints to handle CORS - Enhance contact management test reliability - Add comprehensive error handling and debugging - Extract test helper functions Breaking: None
2 changed files with 179 additions and 1 deletions
@ -0,0 +1,172 @@ |
|||||
|
# Testing Guide |
||||
|
|
||||
|
## Automated Tests |
||||
|
|
||||
|
### Setup |
||||
|
|
||||
|
1. Clone and set up the Endorser server: |
||||
|
|
||||
|
```bash |
||||
|
git clone https://github.com/time-endorser/endorser-api.git |
||||
|
cd endorser-api |
||||
|
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 |
Loading…
Reference in new issue