Skip to content

ci: add integration test for session replication#281

Merged
heruan merged 18 commits into
mainfrom
feat/integration-test-session-replication
Apr 23, 2026
Merged

ci: add integration test for session replication#281
heruan merged 18 commits into
mainfrom
feat/integration-test-session-replication

Conversation

@heruan

@heruan heruan commented Apr 17, 2026

Copy link
Copy Markdown
Member

Summary

  • Adds a GitHub Actions workflow that builds the demo app as a Docker image (Spring Boot Buildpacks, Redis backend), deploys it to a kind cluster with Envoy Gateway and sticky session cookies, and runs a Playwright Java/JUnit test that verifies session replication works across pod failures
  • The test navigates to the PushCounterView, increments the counter, deletes the serving pod, waits for Vaadin's push reconnection, and asserts the counter state was preserved on the surviving pod
  • Adds an integration-test Maven profile to the demo module with Playwright and maven-failsafe-plugin dependencies

Test plan

  • Integration test workflow runs successfully on this branch (triggered via push)
  • Playwright test passes: counter value preserved after pod deletion, hostname changes
  • Revert the temporary branch trigger commit before merging

@github-actions

github-actions Bot commented Apr 17, 2026

Copy link
Copy Markdown

Test Results

 35 files  ±0   35 suites  ±0   29s ⏱️ ±0s
179 tests ±0  178 ✅ ±0   1 💤 ±0  0 ❌ ±0 
236 runs  ±0  203 ✅ ±0  33 💤 ±0  0 ❌ ±0 

Results for commit a76fa00. ± Comparison against base commit 66bd0e3.

♻️ This comment has been updated with latest results.

@heruan heruan self-assigned this Apr 17, 2026
@mshabarov mshabarov requested a review from mcollovati April 20, 2026 11:41

@mcollovati mcollovati left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be good to add integration tests that run with the serialization debug tool without the need for a Kubernetes cluster. Those tests could be executed locally to get early feedback about serialization issues; they could possibly run for every PR

Given that, I would rename the workflow file to something more specific, like kubernetes-test.yml for example.
In addition, I'd suggest adding a @Tag("kubernetes") to the integration test class and configuring failsafe to not run them by default. The workflow should then provide a system parameter to activate that tag only

Another point to consider is to run the same test also with Hazelcast. I'm not sure what could be the best way; it might be separated jobs or just conditional steps based on an input with default redis, so Hazelcast can only be dispatched manually.
But can be improved later or.

The last one (also doable separately) is to clean up the demo POM. It still runs prepare-frontend and has the separated production profile.

Comment thread .github/workflows/integration-test.yml Outdated
Comment thread .github/workflows/kubernetes-test.yml
Comment thread .github/workflows/integration-test.yml Outdated
Comment thread .github/workflows/integration-test.yml Outdated
heruan and others added 2 commits April 21, 2026 11:02
Co-authored-by: Giovanni Lovato <giovanni@lova.to>
- Rename workflow to kubernetes-test.yml (more specific)
- Add @tag("kubernetes") to IT, exclude from failsafe by default
- Fail step explicitly if port-forward never becomes ready
- Upload full app/redis/envoy logs as artifact on failure
@heruan

heruan commented Apr 23, 2026

Copy link
Copy Markdown
Member Author

Depends on #283 to fix flaky tests.

@heruan heruan merged commit 3d224e9 into main Apr 23, 2026
4 checks passed
@heruan heruan deleted the feat/integration-test-session-replication branch April 23, 2026 13:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants