From ddfc5ccdb1cc18bc40526d3c028013e9c3b3866c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandru=20G=C3=A2nju?= <43420432+Gabjea@users.noreply.github.com> Date: Fri, 2 Oct 2026 17:53:56 +0200 Subject: [PATCH 1/3] Add README for contract testing tutorial proposal This README outlines the proposal for a tutorial on contract testing using Pact and Docker. It details the tutorial's structure, intended learning outcomes, and relevance to DevOps practices. --- .../ganju-yasmines/README.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 contributions/executable-tutorial/ganju-yasmines/README.md diff --git a/contributions/executable-tutorial/ganju-yasmines/README.md b/contributions/executable-tutorial/ganju-yasmines/README.md new file mode 100644 index 000000000..54a9e45c2 --- /dev/null +++ b/contributions/executable-tutorial/ganju-yasmines/README.md @@ -0,0 +1,42 @@ +# Assignment Proposal + +## Title + +Contract Testing: Pact and the Pact Broker + +## Names and KTH ID + +- Alexandru Gânju (ganju@kth.se) +- Yasmine Schüllerqvist (yasmines@kth.se) + +## Deadline + +- Task 2 + +## Category + +- Executable tutorial + +## Description + +We will create an executable Killercoda tutorial on contract testing between microservices +with Pact. Everything runs in Docker (two Python services, the Pact Broker and its database), +with a Git hook standing in for CI, so no accounts are needed. + +A user service renames a JSON field: its own tests pass, but the order service that depends +on it breaks. The learner writes a consumer contract with Pact (using type matchers so the +provider can still evolve), verifies the real provider against it using provider states, and +publishes the results to the Pact Broker. They then verify two consumer versions against three +provider versions and explore the resulting compatibility matrix. Starting from what is +recorded as deployed in production, they use `can-i-deploy` to discover that the rename can +only be released safely in three steps (expand, migrate, contract), with a Git pre-push hook +blocking unsafe deployments. Each step has an automated check, and the tutorial ends with a +reflection on when contract testing is worth it and its limits. + +**Intended learning outcomes.** The learner can explain why separate test suites miss +breaking API changes, write and verify a Pact contract, read the compatibility matrix, and +use `can-i-deploy` to decide a safe deployment order. + +**Relevance to DevOps.** Contract testing lets teams deploy services independently: API +compatibility is checked in seconds in CI instead of in slow end-to-end environments, and +`can-i-deploy` acts as an automated deployment gate. From 5e7c2c021ea3cb3825041d3f4b703c80a893dc41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandru=20G=C3=A2nju?= <43420432+Gabjea@users.noreply.github.com> Date: Fri, 2 Oct 2026 17:57:06 +0200 Subject: [PATCH 2/3] Update deadline from Task 2 to Task 1 --- contributions/executable-tutorial/ganju-yasmines/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributions/executable-tutorial/ganju-yasmines/README.md b/contributions/executable-tutorial/ganju-yasmines/README.md index 54a9e45c2..91d9cc1b8 100644 --- a/contributions/executable-tutorial/ganju-yasmines/README.md +++ b/contributions/executable-tutorial/ganju-yasmines/README.md @@ -11,7 +11,7 @@ Contract Testing: Pact and the Pact Broker ## Deadline -- Task 2 +- Task 1 ## Category From 927227a679dbcb86b04319f47187f40207e033ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandru=20G=C3=A2nju?= <43420432+Gabjea@users.noreply.github.com> Date: Fri, 2 Oct 2026 18:04:48 +0200 Subject: [PATCH 3/3] match pr comment --- contributions/executable-tutorial/ganju-yasmines/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contributions/executable-tutorial/ganju-yasmines/README.md b/contributions/executable-tutorial/ganju-yasmines/README.md index 91d9cc1b8..3c628fb39 100644 --- a/contributions/executable-tutorial/ganju-yasmines/README.md +++ b/contributions/executable-tutorial/ganju-yasmines/README.md @@ -37,6 +37,8 @@ reflection on when contract testing is worth it and its limits. breaking API changes, write and verify a Pact contract, read the compatibility matrix, and use `can-i-deploy` to decide a safe deployment order. -**Relevance to DevOps.** Contract testing lets teams deploy services independently: API +**Relevance** +Contract testing lets teams deploy services independently: API compatibility is checked in seconds in CI instead of in slow end-to-end environments, and `can-i-deploy` acts as an automated deployment gate. +