You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

4.7 KiB

Testing Guide

Automated Tests

Setup

  1. 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.

  1. Install Playwright browsers:
npx playwright install

Running Tests

Full Test Suite

To run all tests, make sure XCode is started and either Android Studio is started or an Android device is connected.

npm run test:all

Run only web tests:

npm run test:web

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

  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:

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