Files
Charon/validate-dns-tests.sh
GitHub Actions db48daf0e8 test: fix E2E timing for DNS provider field visibility
Resolved timing issues in DNS provider type selection E2E tests
(Manual, Webhook, RFC2136, Script) caused by React re-render delays
with conditional rendering.

Changes:
- Simplified field wait strategy in tests/dns-provider-types.spec.ts
- Removed intermediate credentials-section wait
- Use direct visibility check for provider-specific fields
- Reduced timeout from 10s to 5s (sufficient for 2x safety margin)

Technical Details:
- Root cause: Tests attempted to find fields before React completed
  state update cycle (setState → re-render → conditional eval)
- Firefox SpiderMonkey 2x slower than Chromium V8 (30-50ms vs 10-20ms)
- Solution confirms full React cycle by waiting for actual target field

Results:
- 544/602 E2E tests passing (90%)
- All DNS provider tests verified on Chromium
- Backend coverage: 85.2% (meets ≥85% threshold)
- TypeScript compilation clean
- Zero ESLint errors introduced

Documentation:
- Updated CHANGELOG.md with fix entry
- Created docs/reports/e2e_fix_v2_qa_report.md (detailed)
- Created docs/reports/e2e_fix_v2_summary.md (quick reference)
- Created docs/security/advisory_2026-02-01_base_image_cves.md (7 HIGH CVEs)

Related: PR #583, CI run https://github.com/Wikid82/Charon/actions/runs/21558579945
2026-02-01 14:17:58 +00:00

71 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set +e # Don't exit on error
echo "========================================="
echo "Validating Webhook and RFC2136 Tests"
echo "========================================="
echo ""
# Test Webhook provider 10 times
echo "Testing Webhook Provider (10 runs)..."
webhook_passed=0
webhook_failed=0
for i in {1..10}; do
echo " Run $i/10..."
if npx playwright test tests/dns-provider-types.spec.ts \
--grep "should show URL field when Webhook type is selected" \
--project=firefox \
--quiet >/dev/null 2>&1; then
((webhook_passed++))
echo " ✓ Passed"
else
((webhook_failed++))
echo " ✗ Failed"
fi
done
echo ""
echo "Webhook Results: $webhook_passed passed, $webhook_failed failed"
echo ""
# Test RFC2136 provider 10 times
echo "Testing RFC2136 Provider (10 runs)..."
rfc2136_passed=0
rfc2136_failed=0
for i in {1..10}; do
echo " Run $i/10..."
if npx playwright test tests/dns-provider-types.spec.ts \
--grep "should show server field when RFC2136 type is selected" \
--project=firefox \
--quiet >/dev/null 2>&1; then
((rfc2136_passed++))
echo " ✓ Passed"
else
((rfc2136_failed++))
echo " ✗ Failed"
fi
done
echo ""
echo "RFC2136 Results: $rfc2136_passed passed, $rfc2136_failed failed"
echo ""
# Summary
echo "========================================="
echo "FINAL RESULTS"
echo "========================================="
echo "Webhook: $webhook_passed/10 passed"
echo "RFC2136: $rfc2136_passed/10 passed"
echo "Total: $((webhook_passed + rfc2136_passed))/20 passed"
echo ""
if [ $webhook_passed -eq 10 ] && [ $rfc2136_passed -eq 10 ]; then
echo "✅ SUCCESS: All 20 tests passed!"
exit 0
else
echo "❌ FAILURE: Some tests failed"
exit 1
fi