forked from jsnbuchanan/crowd-funder-for-time-pwa
refactor: improve logging levels and environment configuration
- Fix logging levels: change verbose debugging from info to debug level - TestView: component mounting, boot-time config, URL flow testing - main.capacitor.ts: deeplink processing steps and router state - HomeView: API call details, component state updates, template rendering - Remove redundant environment variable override in vite.config.common.mts - Environment loading via dotenv works correctly - Manual override was defensive programming but unnecessary - Simplifies configuration and reduces maintenance burden - Add comprehensive Playwright timeout behavior documentation - README.md: detailed timeout types, failure behavior, debugging guide - TESTING.md: timeout failure troubleshooting and common scenarios - Clarifies that timeout failures indicate real issues, not flaky tests - Fix TypeScript configuration for .mts imports - tsconfig.node.json: add allowImportingTsExtensions for Vite config files - Resolves import path linting errors for .mts extensions All changes maintain existing functionality while improving code quality and reducing log noise in production environments.
This commit is contained in:
@@ -85,13 +85,57 @@ mkdir -p profiles/dev2 && \
|
||||
firefox --no-remote --profile $(realpath profiles/dev2) --devtools --new-window http://localhost:8080
|
||||
```
|
||||
|
||||
## Timeout Behavior
|
||||
|
||||
**Critical Understanding**: Playwright tests will **fail immediately** if any timeout is exceeded. This is intentional behavior to catch performance issues and ensure tests don't hang indefinitely.
|
||||
|
||||
### Key Timeout Facts
|
||||
|
||||
- **Test Timeout**: 45 seconds (entire test must complete)
|
||||
- **Expect Timeout**: 5 seconds (assertions must pass)
|
||||
- **Function Timeout**: As specified (e.g., `{ timeout: 5000 }` = 5 seconds)
|
||||
- **Action Timeout**: No default limit (can be set per action)
|
||||
|
||||
### What Happens on Timeout
|
||||
|
||||
```typescript
|
||||
// This will FAIL the test if buttons don't appear within 5 seconds
|
||||
await page.waitForFunction(() => {
|
||||
const buttons = document.querySelectorAll('div[role="alert"] button');
|
||||
return Array.from(buttons).some(button => button.textContent?.includes('No'));
|
||||
}, { timeout: 5000 });
|
||||
```
|
||||
|
||||
**If timeout exceeded**: Test fails immediately with `TimeoutError` - no recovery, no continuation.
|
||||
|
||||
### Debugging Timeout Failures
|
||||
|
||||
1. **Visual Debugging**: Run with `--headed` to watch test execution
|
||||
2. **Tracing**: Use `--trace on` for detailed execution logs
|
||||
3. **Server Check**: Verify Endorser server is responding quickly
|
||||
4. **Performance**: Check if UI elements are loading slowly
|
||||
5. **Timeout Adjustment**: Temporarily increase timeout to isolate performance vs functionality issues
|
||||
|
||||
### Common Timeout Scenarios
|
||||
|
||||
- **UI Elements Not Appearing**: Check if alerts/dialogs are rendering correctly
|
||||
- **Network Delays**: Verify server response times
|
||||
- **Race Conditions**: Elements not ready when expected
|
||||
- **Browser Issues**: Slow rendering or JavaScript execution
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
1. Identity Errors:
|
||||
- "No keys for ID" errors may occur when current account was erased
|
||||
- Account switching can cause issues with erased accounts
|
||||
|
||||
2. If you find yourself wanting to see the testing process try something like this:
|
||||
2. **Timeout Failures**:
|
||||
- **These are NOT flaky tests** - they indicate real performance or functionality issues
|
||||
- Check server logs for slow responses
|
||||
- Verify UI elements are rendering correctly
|
||||
- Use `--headed` mode to visually debug the issue
|
||||
|
||||
3. If you find yourself wanting to see the testing process try something like this:
|
||||
|
||||
```
|
||||
npx playwright test -c playwright.config-local.ts test-playwright/60-new-activity.spec.ts --grep "New offers for another user" --headed
|
||||
|
||||
Reference in New Issue
Block a user