# Minitest Rails Guide

> Follow the chapters in order with the Recipes app. From your first test through models, system tests, auth, jobs, and CI.

## Chapters

- [Introduction to Minitest Rails Guide](https://minitestrails.com/guide/introduction/): Why the Minitest Rails guide exists, who it's for (beginners and experienced alike), and how the Recipes app grows with you.
- [Setting up the Recipe app](https://minitestrails.com/guide/setting-up-minitest/): Spin up the Recipes app with the Rails default with one addition: system tests which has been removed from defaults from Rails 8. Enough Capybara wiring to follow later chapters.
- [Types of tests in the Rails world](https://minitestrails.com/guide/kinds-of-rails-tests/): How model, controller, integration, and system tests fit together in Minitest, where they live under test/, and when to pick each for the Recipes app.
- [Testing tools in the Minitest world](https://minitestrails.com/guide/testing-tools/): Minitest, fixtures, Capybara, and when something like WebMock or VCR earns a place.
- [How to approach testing](https://minitestrails.com/guide/how-to-approach-testing/): Build scenarios in plain language, manual checks in the reference Recipes app, and practice drills with hidden example answers. No automated tests in this chapter.
- [Your first test](https://minitestrails.com/guide/your-first-test/): Scenario first, then code: Recipe scaffold, a model test that fails then passes, first HTTP integration tests (list + create), one system smoke test, and how to read passing output.
- [Test data - fixtures](https://minitestrails.com/guide/test-data-fixtures/): YAML fixtures, associations, and keeping data predictable so later tests do not fight random state.
- [Testing simple CRUD (system tests)](https://minitestrails.com/guide/testing-simple-crud-system-tests/): Drive the browser through list, show, create, update, and delete for Recipes using the fixture data you set up earlier. System tests for CRUD with remaining integration tests for update and destroy.

## Markdown mirrors

Append `.md` to any chapter URL (for example `https://minitestrails.com/guide/introduction.md`).