diff --git a/docs/contributing.md b/docs/contributing.md
index 020dbfca..1d3143fb 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -78,23 +78,30 @@ the invocation of CMake configuration step.
Bringing this all together, the steps below should configure, build,
and run all tests in the `Debug` compilation.
-1. Regenerate the amalgamated distribution
+
+
+```sh
+# 1. Regenerate the amalgamated distribution
+./tools/scripts/generateAmalgamatedFiles.py
+
+# 2. Configure the full test build
+cmake -Bdebug-build -H. -DCMAKE_BUILD_TYPE=Debug -DCATCH_BUILD_EXAMPLES=ON -DCATCH_BUILD_EXTRA_TESTS=ON
+
+# 3. Run the actual build
+cmake --build debug-build
+
+# 4. Run the tests using CTest
+cd debug-build
+ctest -j 4 --output-on-failure -C Debug
```
-$ cd Catch2
-$ ./tools/scripts/generateAmalgamatedFiles.py
-```
-2. Configure the full test build
-```
-$ cmake -Bdebug-build -H. -DCMAKE_BUILD_TYPE=Debug -DCATCH_BUILD_EXAMPLES=ON -DCATCH_BUILD_EXTRA_TESTS=ON
-```
-3. Run the actual build
-```
-$ cmake --build debug-build
-```
-4. Run the tests using CTest
-```
-$ cd debug-build
-$ ctest -j 4 --output-on-failure -C Debug
+snippet source | anchor
+
+
+For convenience, the above commands are in the script `tools/scripts/buildAndTest.sh`, and can be run like this:
+
+```bash
+cd Catch2
+./tools/scripts/buildAndTest.sh
```
If you added new tests, you will likely see `ApprovalTests` failure.
diff --git a/tools/scripts/buildAndTest.sh b/tools/scripts/buildAndTest.sh
index 42a7f6e1..d5bca96d 100755
--- a/tools/scripts/buildAndTest.sh
+++ b/tools/scripts/buildAndTest.sh
@@ -3,6 +3,7 @@
# Start at the root of the Catch project directory, for example:
# cd Catch2
+# begin-snippet: catch2-build-and-test
# 1. Regenerate the amalgamated distribution
./tools/scripts/generateAmalgamatedFiles.py
@@ -15,3 +16,4 @@ cmake --build debug-build
# 4. Run the tests using CTest
cd debug-build
ctest -j 4 --output-on-failure -C Debug
+# end-snippet