Imagine 100s of services in an organization - using different specification frameworks and with dependencies between. While end-to-end tests are an important strategy to assert the behaviour of the system as a whole, they are hard to orchestrate at such a scale. How to validate continuous code changes across services? How to bring up infrastructure, isolated deployments, dependencies, and scale for parallel test runs? What abstractions to have?
With an architecture of pluggable components and employing a bunch of open source tools, Razorpay's team has attempted to abstract the problem of end-to-end tests execution- standardizing the test's executable interface, Github Actions, and status checks to invoke declaratively managed Argo workflows, and Devstack for ephemeral infrastructure.
We will cover: