In 2025, we kicked off an internal Itenium learning series focused on testing: three sessions, each with a different angle, each hands-on and immediately useful in day-to-day project work. From test strategy and pyramid thinking, to unit testing and Testcontainers, to end-to-end testing with Playwright — less slides, more real examples, demos, and practical takeaways.

Part 1: Testing Pyramid
Finding the right test mix: from unit to e2e
We started with the fundamentals: how do you build a healthy test strategy without over-investing in UI tests or skipping unit coverage? We explored how to balance unit, integration, and end-to-end tests, what the trade-offs are, and how to avoid the classic pitfalls. The outcome: clearer decisions on where to place which tests — and why.
What we covered
- Test structure across layers
- Best practices and trade-offs per test type
- Common pitfalls (too much UI, too little unit, fragile suites)
- Practical guidelines to evaluate your own project context
Part 2 – Unit Testing (.NET & Java)
TDD, maintainable tests, and Testcontainers
In part 2 we went deep on unit testing and TDD through a practical exercise that started from existing code. Step by step, we built test coverage, added new features using a TDD approach, and used a hexagonal architecture setup to sharpen decisions around boundaries, dependency management, and testability.
We also discussed how to test realistic dependencies without making your suite slow or brittle — including when Testcontainers is a better fit than mocks.
What we covered
- Unit testing best practices for .NET and Java
- TDD in practice: iterate fast with tight feedback loops
- Hexagonal architecture as a driver for testability
- Realistic integration tests with Testcontainers

Part 3 – End-to-end Testing with Playwright
From cross-browser to CI and flaky tests
In the third part, we explored Playwright — Microsoft’s end-to-end testing framework. Through practical demos and exercises, we looked at how to write e2e tests that stay stable, maintainable, and CI-friendly. We also tackled common pain points like flaky tests and async behavior, and how to address them with better patterns and discipline.
What we covered
- Cross-browser e2e testing with Playwright
- Stability patterns and handling flaky tests
- Async patterns and best practices
- CI integration and practical workflows


