@@ -146,6 +146,48 @@ jobs:
146146 src/**/coverage.xml
147147 utils/**/coverage.xml
148148 lambdas/**/coverage.xml
149+ test-contract :
150+ name : " Contract tests"
151+ runs-on : ubuntu-latest
152+ timeout-minutes : 4
153+ permissions :
154+ contents : read
155+ packages : read
156+ steps :
157+ - name : " Checkout code"
158+ uses : actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
159+ - uses : ./.github/actions/node-install
160+ with :
161+ node-version : ${{ inputs.nodejs_version }}
162+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
163+ - name : " Install dependencies"
164+ run : npm ci --ignore-scripts
165+ - name : " Cache generated dependencies"
166+ id : schema-cache
167+ uses : actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
168+ with :
169+ path : |
170+ schemas/digital-letters/
171+ output/digital-letters/
172+ src/digital-letters-events/types/
173+ src/digital-letters-events/validators/
174+ src/digital-letters-events/digital_letters_events/models/
175+ src/digital-letters-events/guard-functions/
176+ key : generated-deps-${{ runner.os }}-${{ hashFiles('src/cloudevents/**', 'src/typescript-schema-generator/**', 'src/python-schema-generator/**') }}
177+ - name : " Generate dependencies"
178+ if : steps.schema-cache.outputs.cache-hit != 'true'
179+ run : |
180+ npm run generate-dependencies
181+ - name : " Run contract test suite"
182+ run : |
183+ make test-contract
184+ - name : " Upload generated contracts"
185+ uses : actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
186+ with :
187+ name : pact-contracts
188+ path : " tests/pact-tests/.pacts"
189+ include-hidden-files : true
190+
149191 test-lint :
150192 name : " Linting"
151193 runs-on : ubuntu-latest
0 commit comments