- Increase timeout to 90 seconds for multiple operations
- Add page stabilization waits after critical operations
- Implement retry logic for hover interactions (3 retries)
- Add scrollIntoViewIfNeeded before hovering to ensure visibility
- Use force:true for hover to handle overlapping elements
- Clear input field before filling time values
- Add explicit waits for dialog state transitions
- Use .first() consistently to avoid multiple element issues
- Implement toPass() with retry for dynamic content verification
- Add small delays between operations to prevent race conditions
The test was flaky due to:
1. Hover interactions not always revealing buttons reliably
2. Race conditions between task creation and scheduling
3. Dialog state transitions happening too quickly
4. Multiple similar elements causing selector conflicts
The reminders test was failing with 'strict mode violation' because after
scheduling a task, there can be multiple schedule buttons in the DOM.
Fixed by using .first() to select only the first matching element when
checking for schedule button visibility after scheduling tasks.
Refactored tests to remove arbitrary timeouts and use proper wait conditions:
plugin-iframe.spec.ts:
- Removed all waitForTimeout() calls and waitForLoadState('networkidle')
- Replaced with specific waitForSelector() and waitFor() conditions
- Used better selectors with :has() and attribute selectors
- Simplified toggle state checking with count() instead of evaluate()
reminders-schedule-page.spec.ts:
- Removed all waitForTimeout() calls
- Replaced with waitFor() on specific elements
- Better selector constants for dialog elements
- Removed unnecessary waitForLoadState() calls
These changes make tests deterministic and faster by waiting for specific
conditions rather than arbitrary time periods.
- Re-enable previously skipped tests
- Add robust waits and timeouts for CI stability
- Improve task selection using filter with hasText
- Add helper function to reduce code duplication
- Increase schedule times to 1-2 minutes for better reliability
- Fix task order verification to handle dynamic ordering
- Remove unused constants and fix linting issues
Tests now pass consistently both locally and should work in CI
- Fix artifact upload path from e2e-test-results to .tmp/e2e-test-results
- Re-enable serial execution for plugin-iframe tests to avoid race conditions
- Skip flaky reminders-schedule-page tests in CI temporarily
- Update both build.yml and lint-and-test-pr.yml workflows
The CI was failing because test results were being written to .tmp/e2e-test-results
but the artifact upload was looking in e2e-test-results (without .tmp prefix)
- Remove serial test execution from plugin-iframe tests to prevent blocking
- Add explicit timeouts to prevent indefinite hanging
- Make reminders tests independent (not relying on previous test state)
- Improve plugin enablement logic to handle already-enabled state
- Enable previously skipped tests that now work properly
- Fix selectors and improve error handling
All planner-navigation tests now pass consistently
- Remove all console.log statements from E2E test files
- Replace console.error with throw new Error for proper error handling
- Remove console.warn statements
- Fix unused variable linting errors in plugin tests