Skip to content

test(infra): pin Postgres test image to 17-alpine for prod parity#6

Merged
ANcpLua merged 1 commit into
mainfrom
feat/test-infra-orbstack-parity
May 12, 2026
Merged

test(infra): pin Postgres test image to 17-alpine for prod parity#6
ANcpLua merged 1 commit into
mainfrom
feat/test-infra-orbstack-parity

Conversation

@ANcpLua

@ANcpLua ANcpLua commented May 12, 2026

Copy link
Copy Markdown
Owner

Summary

.env.test ran postgres:16-alpine while the production compose stack runs Postgres 17 (per CLAUDE.md stack pins). Bumping the test image closes the parity gap so Testcontainers boot the same major Postgres the deployed REST + Services exercise — same migrations, same dialect, same JSONB / EF Core 10 surface.

Closes task #6

The rest of the test infrastructure was already OrbStack-backed:

  • Docker context defaults to orbstack (docker context lsorbstack *)
  • Every */Tests/Integration/ fixture spins real containers via Testcontainers (Postgres / RabbitMQ / MinIO / Elasticsearch)
  • The only intentional fake is FakeTextSummarizer — Gemini is third-party and out of scope for local containers (documented in CLAUDE.md gotchas)
  • Remaining Fake*.cs files are just FakeLoggerExtensions wrappers around Microsoft.Extensions.Diagnostics.Testing.FakeLogger — not a real-deps concern

Test plan

  • ./build.sh IntegrationTests locally — SetupTestcontainers / Restore / Compile / IntegrationTests all succeeded on bumped image
  • CI Build & Test (backend) green

.env.test ran postgres:16-alpine while the production compose stack runs
Postgres 17 (per CLAUDE.md stack pins). Bumping the test image closes the
parity gap so Testcontainers boot the same major Postgres the deployed
REST + Services exercise — same migrations, same dialect, same JSONB / EF
Core 10 surface.

Verified end-to-end:
  ./build.sh IntegrationTests
  -> SetupTestcontainers / Restore / Compile / IntegrationTests all succeeded.

This closes task #6. The rest of the test infrastructure was already
OrbStack-backed:
  - Docker context defaults to orbstack (`docker context ls` -> orbstack *).
  - Every */Tests/Integration/ fixture spins real containers via Testcontainers
    (Postgres / RabbitMQ / MinIO / Elasticsearch).
  - The only intentional fake is FakeTextSummarizer (Gemini is third-party
    and out of scope for local containers — documented in CLAUDE.md gotchas).
  - The remaining Fake*.cs files are FakeLoggerExtensions wrappers around
    Microsoft.Extensions.Diagnostics.Testing.FakeLogger — not a real-deps
    concern.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 12, 2026 10:44
@ANcpLua
ANcpLua merged commit db979a7 into main May 12, 2026
2 checks passed
@ANcpLua
ANcpLua deleted the feat/test-infra-orbstack-parity branch May 12, 2026 10:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Updates the integration test environment’s Postgres container image to match the production stack’s major version, reducing version skew between local/CI integration tests and the deployed compose environment.

Changes:

  • Pin POSTGRES_IMAGE in .env.test from postgres:16-alpine to postgres:17-alpine.
  • Expand the .env.test container image comment to describe the production-parity intent for test infrastructure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .env.test
Comment on lines +18 to +20
# MinIO latest, Elasticsearch 9.x). Bumping postgres 16 -> 17 closes the parity
# gap with the production compose stack so integration tests exercise the same
# migration / dialect surface the deployed REST + Services see.
Comment thread .env.test
# Container images — pinned to match production majors (Postgres 17, RabbitMQ 4,
# MinIO latest, Elasticsearch 9.x). Bumping postgres 16 -> 17 closes the parity
# gap with the production compose stack so integration tests exercise the same
# migration / dialect surface the deployed REST + Services see.
Comment thread .env.test
Comment on lines +21 to 22
POSTGRES_IMAGE=postgres:17-alpine
RABBITMQ_IMAGE=rabbitmq:4.1.4-management
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