# Learning Outcomes | Step | Title | Concept Covered | Learning objectives | Further Reading | |----------------------------------------------------------------------|---------------------------------------------------------|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| | [step 1](https://github.com/pact-foundation/pact-workshop-js/tree/step1) | Create our consumer before the Provider API even exists | Consumer-driven design | | | | | [step 2](https://github.com/pact-foundation/pact-workshop-js/tree/step2) | Write a unit test for our consumer | - | | | | [step 3](https://github.com/pact-foundation/pact-workshop-js/tree/step3) | Write a Pact test for our consumer | Consumer side pact test | | | | | [step 4](https://github.com/pact-foundation/pact-workshop-js/tree/step4) | Verify the consumer pact with the Provider API | Provider side pact test | | | | [step 5](https://github.com/pact-foundation/pact-workshop-js/tree/step5) | Fix the consumer's bad assumptions about the Provider | Humans talking to humans (collaboration) | | | | [step 6](https://github.com/pact-foundation/pact-workshop-js/tree/step6) | Write a pact test for `404` (missing User) in consumer | Testing API invariants | | | | [step 7](https://github.com/pact-foundation/pact-workshop-js/tree/step7) | Update API to handle `404` case | Provider States | | | | [step 8](https://github.com/pact-foundation/pact-workshop-js/tree/step8) | Write a pact test for the `401` case | Testing authenticated APIs | | | | [step 9](https://github.com/pact-foundation/pact-workshop-js/tree/step9) | Update API to handle `401` case | Service evolution | | | | [step 10](https://github.com/pact-foundation/pact-workshop-js/tree/step10) | Fix the provider to support the `401` case | Request filters | | | | [step 11](https://github.com/pact-foundation/pact-workshop-js/tree/step11) | Implement a broker workflow for integration with CI/CD | Automation | | |