feat(EM-36): Configure Automated Testing Pipeline (Unit, Integration, E2E)#53
Open
devin-ai-integration[bot] wants to merge 1 commit intofeat/microservices-migration-v2from
Conversation
…ion, and E2E stages - Add .github/workflows/test-pipeline.yml with sequential stages: unit -> integration -> E2E - Update ftgo.testing-conventions with JaCoCo coverage, Testcontainers dependencies - Add testcontainers-kafka and testcontainers-core to version catalog - Add integration test scaffolding with Testcontainers for all 4 services - Create E2E test framework (services/e2e-tests) with OrderFlowE2ETest example - Add testing documentation under docs/testing/ - Coverage reports uploaded as CI artifacts (HTML + XML) Co-Authored-By: Alex Baker <alexandercommander453@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(EM-36): Configure Automated Testing Pipeline (Unit, Integration, E2E)
Summary
Adds a three-stage GitHub Actions test pipeline (
unit → integration → E2E) with JaCoCo coverage reporting and Testcontainers-based integration test scaffolding for all four microservices.Key changes:
.github/workflows/test-pipeline.yml— New workflow with matrix-based unit tests, integration tests (with Testcontainers), E2E tests, and a coverage aggregation job. All stages gate sequentially. Modules not yet registered insettings.gradleare gracefully skipped.build-logic/ftgo.testing-conventions.gradle.kts— Added JaCoCo plugin, Testcontainers dependencies (MySQL, Kafka),jacocoTestReport/jacocoIntegrationTestReporttasks, and wired coverage intofinalizedBy.gradle/libs.versions.toml— Addedtestcontainers-kafka,testcontainers-core, and atestcontainers-allbundle.@Tag("integration")) with Testcontainers MySQL/Kafka andapplication-integration-test.ymlprofiles for all 4 services.services/e2e-testsmodule withE2ETestBase(shared Docker network, MySQL + Kafka containers) and an exampleOrderFlowE2ETest.docs/testing/README.md— Comprehensive documentation covering all stages, conventions, and how to add new tests.Review & Testing Checklist for Human
./gradlew buildwas run before pushing. Verify the convention plugin changes compile — particularly the JaCoCo + Testcontainers additions inftgo.testing-conventions.gradle.ktsand the newservices/e2e-tests/build.gradle. Check for dependency resolution errors.@SpringBootTestannotation on integration tests needs a@SpringBootApplication-annotated class in each service'ssrc/main/java. The service source directories are currently empty — these tests will fail at runtime until application classes are added. Decide if this is acceptable as scaffolding or if it should be fixed now.services/e2e-testsnot insettings.gradle: The task forbids modifying rootsettings.gradle, so this module will be silently skipped by the workflow's guard check. Confirm this is the intended behavior and that registering it is tracked as a follow-up.testImplementationdeps for every module that appliesftgo.testing-conventions— including pure libs likeftgo-common. Consider whether this should be opt-in per module instead.finalizedBy(tasks.withType<JacocoReport>())pattern could cause unexpected task ordering issues.Test Plan
./gradlew buildto ensure Gradle resolves all dependencies and compiles successfully../gradlew test -x integrationTestand verify tests pass (or are skipped if no tests exist yet)../gradlew integrationTeston a service (requires Docker). Expect failures if no@SpringBootApplicationexists — confirm this is expected scaffolding../gradlew :services:e2e-tests:test(will be skipped until module is registered insettings.gradle).feat/microservices-migration-v2and verify the workflow runs all three stages and uploads coverage artifacts.Notes
order-serviceintegration tests use Kafka; other services don't. This is intentional scaffolding but may need alignment later.E2ETestBase.javahas unused imports (GenericContainer,Wait,Duration,RestAssured) — minor cleanup opportunity.com.mysql.cj.jdbc.Driverbutorder-service/application.ymluses the deprecatedcom.mysql.jdbc.Driver. Not critical but worth noting.