fix(tests): enhance system settings tests with feature flag propagation and retry logic

- Added initial feature flag state verification before tests to ensure a stable starting point.
- Implemented retry logic with exponential backoff for toggling feature flags, improving resilience against transient failures.
- Introduced `waitForFeatureFlagPropagation` utility to replace hard-coded waits with condition-based verification for feature flag states.
- Added advanced test scenarios for handling concurrent toggle operations and retrying on network failures.
- Updated existing tests to utilize the new retry and propagation utilities for better reliability and maintainability.
This commit is contained in:
GitHub Actions
2026-02-02 01:14:30 +00:00
parent 9f7ed657cd
commit f19632cdf8
14 changed files with 5668 additions and 811 deletions

View File

@@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- **E2E Tests**: Fixed timeout failures in feature flag toggle tests caused by backend N+1 query pattern
- **Backend Optimization**: Replaced N+1 query pattern with single batch query in `/api/v1/feature-flags` endpoint
- **Performance Improvement**: 3-6x latency reduction (600ms → 200ms P99 in CI environment)
- **Test Refactoring**: Replaced hard-coded waits with condition-based polling using `waitForFeatureFlagPropagation()`
- **Retry Logic**: Added exponential backoff retry wrapper for transient failures (3 attempts: 2s, 4s, 8s delays)
- **Comprehensive Edge Cases**: Added tests for concurrent toggles, network failures, and rollback scenarios
- **CI Pass Rate**: Improved from ~70% to 100% with zero timeout errors
- **Affected Tests**: `tests/settings/system-settings.spec.ts` (Cerberus, CrowdSec, Uptime, Persist toggles)
- See [Feature Flags Performance Documentation](docs/performance/feature-flags-endpoint.md)
- **E2E Tests**: Fixed feature toggle timeout failures and clipboard access errors
- **Feature Toggles**: Replaced race-prone `Promise.all()` with sequential wait pattern (PUT 15s, GET 10s timeouts)
- **Clipboard**: Added browser-specific verification (Chromium reads clipboard, Firefox/WebKit verify toast)
@@ -56,6 +65,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Enables mocking of proxy host service in unit tests
- Coverage improvement: 43.7% → 86.2% on `import_handler.go`
### Added
- **Performance Documentation**: Added comprehensive feature flags endpoint performance guide
- File: `docs/performance/feature-flags-endpoint.md`
- Covers architecture decisions, benchmarking, monitoring, and troubleshooting
- Documents N+1 query pattern elimination and transaction wrapping optimization
- Includes metrics tracking (P50/P95/P99 latency before/after optimization)
- Provides guidance for E2E test integration and timeout strategies
- **E2E Test Helpers**: Enhanced Playwright test infrastructure for feature flag toggle tests
- `waitForFeatureFlagPropagation()` - Polls API until expected state confirmed (30s timeout)
- `retryAction()` - Exponential backoff retry wrapper (3 attempts: 2s, 4s, 8s delays)
- Condition-based polling replaces hard-coded waits for improved reliability
- Added comprehensive edge case tests (concurrent toggles, network failures, rollback)
- See `tests/utils/wait-helpers.ts` for implementation details
### Fixed
- **CI/CD Workflows**: Fixed multiple GitHub Actions workflow failures