- Fix syntax error in logger.ts: change 'typeof import' to 'typeof import.meta'
to resolve ESBuild compilation error preventing web build
- Align CapacitorPlatformService.insertNewDidIntoSettings with WebPlatformService:
* Add dynamic constants import to avoid circular dependencies
* Use INSERT OR REPLACE for data integrity
* Set proper default values (finishedOnboarding=false, API servers)
* Remove TODO comment as implementation is now parallel
- Fix Playwright test timing issues in 60-new-activity.spec.ts:
* Replace generic alert selectors with specific alert type targeting
* Change Info alerts from 'Success' to 'Info' filter for proper targeting
* Fix "strict mode violation" errors caused by multiple simultaneous alerts
* Improve test reliability by using established alert handling patterns
- Update migrationService.ts and vite.config.common.mts with related improvements
Test Results: Improved from 2 failed tests to 42/44 passing (95.5% success rate)
Build Status: Web build now compiles successfully without syntax errors
After calling OnboardingDialog from ProjectsView, route back to projects page again
The onboarding dialog was designed to route back to HomeView when called from ProjectsView. The tests need to be updated to account for this intended behavior.
- Fix onboarding dialog handling in project creation tests
* Replace blocking onboarding dismissal with try-catch approach
* Use short timeout (2000ms) to detect dialog presence
* Gracefully handle missing onboarding dialogs on projects page
* Add console logging for debugging dialog state
- Improve project creation timing and synchronization
* Add networkidle wait after project save operation
* Add networkidle wait before project list search
* Increase timeout for project visibility check (10s)
* Add debug logging to show all projects in list
- Apply consistent pattern across both test files
* 20-create-project.spec.ts: Enhanced with timing fixes
* 25-create-project-x10.spec.ts: Applied onboarding fix
These changes resolve test failures caused by UI timing issues
and onboarding dialog state variability, improving test reliability
from 42/44 passing to expected 44/44 passing tests.
- Fix 50-record-offer.spec.ts multiple alert button conflict
* Replace generic alert selector with success-specific selector
* Use getByRole('alert').filter({ hasText: 'Success' }) pattern
- Fix 20-create-project.spec.ts onboarding dialog timeout
* Replace unreliable div > svg.fa-xmark selector
* Use established closeOnboardingAndFinish testId pattern
* Add waitForFunction to ensure dialog dismissal
- Fix 25-create-project-x10.spec.ts onboarding dialog timeout
* Apply same onboarding dismissal pattern as other tests
* Ensure consistent dialog handling across test suite
These fixes use established patterns from working tests to resolve
6 failing tests caused by UI selector conflicts and timing issues.
**Type Safety Improvements:**
- Replace `unknown[]` with proper `SqlValue[]` type in database query methods
- Add `SqlValue` import to PlatformServiceMixin.ts for better type definitions
- Update interface definitions for `$dbGetOneRow` and `$one` methods
- Fix database row mapping to use `Array<SqlValue>` instead of `unknown[]`
**Test Reliability Fix:**
- Add backup seed modal handling to 60-new-activity.spec.ts
- Follow established dialog handling pattern from 00-noid-tests.spec.ts
- Use `waitForFunction` to detect backup seed modal appearance
- Gracefully handle modal dismissal with "No, Remind me Later" button
- Add error handling for cases where backup modal doesn't appear
**Files Changed:**
- src/utils/PlatformServiceMixin.ts: Enhanced type safety for database operations
- test-playwright/60-new-activity.spec.ts: Fixed dialog interception causing test failures
**Impact:**
- Eliminates TypeScript linting errors for database query types
- Resolves Playwright test timeout caused by backup seed modal blocking clicks
- Improves test reliability by following established dialog handling patterns
- Maintains backward compatibility while enhancing type safety
**Testing:**
- TypeScript compilation passes without errors
- Linting checks pass with improved type definitions
- Playwright test now handles backup seed modal properly
- Fix dialog overlay handling across multiple test files
- Implement adaptive timeouts and retry logic for load resilience
- Add robust activity feed verification in gift recording tests
- Resolve Vue reactivity issues with proper type assertions
- Achieve 98% test success rate (88/90 tests passing across 3 runs)
The test suite now passes consistently under normal conditions with only
intermittent load-related timeouts remaining.
- Implement comprehensive dialog overlay handling for all test files
- Add robust page state checking for Firefox navigation issues
- Fix alert button timing issues with combined find/click approach
- Add force close dialog overlay as fallback for persistent dialogs
- Handle page close scenarios during dialog dismissal
- Add page readiness checks before interactions
- Resolve race conditions between dialog close and page navigation
- Achieve consistent 40/40 test runs with systematic fixes
- Remove redundant "import User Zero" action
- Remove out-of-scope actions from test (sending a gift to an unrelated entity, deleting the contact)
- Update imports based on changes
- Add NOTIFY_DUPLICATE_ACCOUNT_IMPORT constant for import warnings
- Add NOTIFY_DUPLICATE_DERIVED_ACCOUNT constant for derived account warnings
- Update ImportAccountView.vue to use notification constants
- Update ImportDerivedAccountView.vue to use notification constants
- Update test file to use notification constants for assertions
Centralizes notification messages for better maintainability and consistency
with the existing notification system.
Files modified:
- src/constants/notifications.ts: Add new notification constants
- src/views/ImportAccountView.vue: Replace hardcoded messages with constants
- src/views/ImportDerivedAccountView.vue: Replace hardcoded messages with constants
- test-playwright/duplicate-import-test.spec.ts: Update test assertions
- Add duplicate check in ImportAccountView before account import
- Add duplicate check in ImportDerivedAccountView for derived accounts
- Add safety check in saveNewIdentity function to prevent duplicate saves
- Implement user-friendly warning messages for duplicate attempts
- Add comprehensive error handling to catch duplicate errors from saveNewIdentity
- Create Playwright tests to verify duplicate prevention functionality
- Add documentation for duplicate prevention implementation
The system now prevents users from importing the same account multiple times
by checking for existing DIDs both before import (pre-check) and during
save (post-check). Users receive clear warning messages instead of
technical errors when attempting to import duplicate accounts.
Files modified:
- src/views/ImportAccountView.vue: Add duplicate check and error handling
- src/views/ImportDerivedAccountView.vue: Add duplicate check for derived accounts
- src/libs/util.ts: Add duplicate prevention in saveNewIdentity
- test-playwright/duplicate-import-test.spec.ts: Add comprehensive tests
- doc/duplicate-account-import-implementation.md: Add implementation docs
Resolves: Prevent duplicate account imports in IdentitySwitcherView
- Update BUILDING.md with current build system information
- Modernize various README files across the project
- Update CHANGELOG.md with recent changes
- Improve documentation consistency and formatting
- Update platform-specific documentation (iOS, Electron, Docker)
- Enhance test documentation and build guides
- Add DID validation using isDid() function to prevent invalid DIDs from loading current user's info
- Show error message and redirect to HomeView for invalid DID formats (e.g., /did/0)
- Import NOTIFY_CONTACT_INVALID_DID constant for consistent error messaging
Resolves: DIDView loading current user's info for invalid DID parameters
- Stricter targeting of buttons since Register and Export Data dialogs appear on screen at the same time
- Locate success notification first since it appears first (and cannot be "clicked" through the overlapping dialog-overlay)
Fix ClaimView component to use $accountSettings() instead of $settings() to
get the current user's registration status. This resolves the issue where
User #0 appeared unregistered in ClaimView despite having isRegistered: true
in the database.
- Changed created() method to use $accountSettings() for user-specific settings
- Ensures ClaimView reads correct isRegistered value for current user
- Fixes "You posted that. false" display issue for registered users
Add comprehensive breakdown of the --headed test debugging command, explaining each parameter and its purpose for visual test debugging. Resolves "New offers for another user" test debugging workflow.
- Extract test user data (seed phrases, DIDs, usernames) from importUser into separate getTestUserData function
- Refactor importUser to use getTestUserData internally, maintaining backward compatibility
- Update "New offers for another user" test to use new getTestUserData function
- Replace hardcoded seed phrase with programmatic retrieval using getTestUserData('00')
- Add proper TypeScript type annotations to array functions in testUtils
- Improve test maintainability by centralizing test user data management
This allows tests to access user data without executing import flow, providing more flexibility for test scenarios.
Remove duplicate APP_SERVER imports in ContactsView.vue and ClaimView.vue that were causing compilation errors during testing. The duplicate imports occurred when both files had APP_SERVER imported from constants/app and also assigned as class properties.
- ContactsView.vue: Remove duplicate import, keep class property assignment
- ClaimView.vue: Remove duplicate import, keep class property assignment
- Fixes Vite compilation errors that were blocking test execution
- 33/38 tests now pass successfully
This resolves the "Identifier 'APP_SERVER' has already been declared" errors that were preventing the development server from running properly.