Skip to content

Conversation

@DSingh0304
Copy link
Contributor

Why submit this pull request?

  • Bugfix
  • New feature provided
  • Improve performance
  • Backport patches

What changes will this PR take into?

This PR adds comprehensive E2E tests for the Services resource, covering all CRUD operations and list page functionality.

Test Coverage (5 tests, all passing ✅):

  • List page tests (services.list.spec.ts) - 3 tests

    • Navigation to services page
    • Pagination using table controls
    • Pagination using URL search parameters
  • CRUD with required fields (services.crud-required-fields.spec.ts) - 1 test

    • Uses minimal fields (name only)
    • Tests create, read, update, and delete operations
    • Verifies label addition during edit
  • CRUD with all fields (services.crud-all-fields.spec.ts) - 1 test

    • Uses all available fields (name, description, labels, upstream nodes, hosts, WebSocket)
    • Tests complete create and delete operations with complex configurations

Files Added:

  • e2e/utils/ui/services.ts - UI helper functions for form filling and verification with proper selector disambiguation
  • e2e/tests/services.list.spec.ts - List page and pagination tests
  • e2e/tests/services.crud-required-fields.spec.ts - Minimal fields CRUD tests
  • e2e/tests/services.crud-all-fields.spec.ts - All fields CRUD tests

Implementation Details:

  • Proper selector disambiguation using .first() to avoid conflicts between service and upstream fields (name, description, labels)
  • Handles hidden WebSocket switch using JavaScript evaluation
  • Upstream node configuration (host, port, weight) properly filled and verified
  • Follows test patterns from upstreams and routes
  • Proper cleanup with deleteAllServices helper
  • Auto-generated ID capture and verification

Related issues

resolve #3085

Checklist:

  • Did you explain what problem does this PR solve? Or what new features have been added?
  • Have you added corresponding test cases?
  • Have you modified the corresponding document? (N/A - E2E tests don't require documentation updates)
  • Is this PR backward compatible? If it is not backward compatible, please discuss on the mailing list first (Yes, only adds tests, no breaking changes)

@DSingh0304
Copy link
Contributor Author

@Baoyuantop i had to delete that PR because of some of git issues but I recovered the commits and raised the new PR the changes are same as they were in the previous PR the CI issue has also been resolved. I think it should pass the e2e test as it does locally.

@DSingh0304 DSingh0304 requested a review from SkyeYoung November 21, 2025 05:12
- Wrapped deletion calls in retry logic to handle transient 500 errors
- Added 404 error suppression to handle potential race conditions/idempotency
- Increase uiHasToastMsg default timeout to 30s (from 5s) for all toast messages
- Increase services.crud-required-fields timeout to 30s for backend responses
- Increase stream_routes.show-disabled-error timeout to 30s after Docker restart
- Add comments explaining CI-specific timeout requirements

These generous timeouts ensure tests pass reliably in slower CI environments
while still failing fast enough locally to catch real issues.

All 76 E2E tests pass successfully with these changes.
@DSingh0304
Copy link
Contributor Author

Fixed CI timing issues by increasing timeouts to 30s across all toast message assertions and critical backend operations. All 76 E2E tests now pass successfully. The changes ensure reliable test execution in slower CI environments while maintaining the principle that API calls are only used for setup/teardown all CRUD operations use UI interactions as required.

@Baoyuantop
Copy link
Contributor

Hi @DSingh0304, please confirm this comment: #3258 (comment)

@DSingh0304
Copy link
Contributor Author

DSingh0304 commented Dec 8, 2025

@SkyeYoung The 'serial' mode prevents race conditions during test cleanup. Services have dependent resources (routes/stream routes), and parallel execution was causing intermittent failures when tests tried to delete services that still had active dependencies.

CI likely passed before due to timing luck or fewer parallel tests. As we added more service tests, the race condition became more consistent.

Quoting #3258 (comment)

@DSingh0304 DSingh0304 requested a review from SkyeYoung December 8, 2025 09:04
@DSingh0304
Copy link
Contributor Author

Hi @DSingh0304, please confirm this comment: #3258 (comment)

Hey @Baoyuantop , Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test(resource): services

3 participants