diff --git a/docs/en/docs/side_quests/img/nf-test/snapshot-vs-content.excalidraw.svg b/docs/en/docs/side_quests/img/nf-test/snapshot-vs-content.excalidraw.svg
new file mode 100644
index 0000000000..ac3d81e7b7
--- /dev/null
+++ b/docs/en/docs/side_quests/img/nf-test/snapshot-vs-content.excalidraw.svg
@@ -0,0 +1,126 @@
+
diff --git a/docs/en/docs/side_quests/img/nf-test/test-execution-flow.excalidraw.svg b/docs/en/docs/side_quests/img/nf-test/test-execution-flow.excalidraw.svg
new file mode 100644
index 0000000000..398df84032
--- /dev/null
+++ b/docs/en/docs/side_quests/img/nf-test/test-execution-flow.excalidraw.svg
@@ -0,0 +1,119 @@
+
diff --git a/docs/en/docs/side_quests/img/nf-test/test-structure-anatomy.excalidraw.svg b/docs/en/docs/side_quests/img/nf-test/test-structure-anatomy.excalidraw.svg
new file mode 100644
index 0000000000..ad276fdce4
--- /dev/null
+++ b/docs/en/docs/side_quests/img/nf-test/test-structure-anatomy.excalidraw.svg
@@ -0,0 +1,89 @@
+
diff --git a/docs/en/docs/side_quests/img/nf-test/testing-strategy.excalidraw.svg b/docs/en/docs/side_quests/img/nf-test/testing-strategy.excalidraw.svg
new file mode 100644
index 0000000000..696edec07b
--- /dev/null
+++ b/docs/en/docs/side_quests/img/nf-test/testing-strategy.excalidraw.svg
@@ -0,0 +1,95 @@
+
diff --git a/docs/en/docs/side_quests/img/nf-test/workflow-data-flow.excalidraw.svg b/docs/en/docs/side_quests/img/nf-test/workflow-data-flow.excalidraw.svg
new file mode 100644
index 0000000000..41f007caee
--- /dev/null
+++ b/docs/en/docs/side_quests/img/nf-test/workflow-data-flow.excalidraw.svg
@@ -0,0 +1,100 @@
+
diff --git a/docs/en/docs/side_quests/nf-test.md b/docs/en/docs/side_quests/nf-test.md
index 62c18e184f..5f83a4d3d2 100644
--- a/docs/en/docs/side_quests/nf-test.md
+++ b/docs/en/docs/side_quests/nf-test.md
@@ -104,6 +104,14 @@ The workflow we'll be testing is a subset of the Hello workflow built in [Hello
In this side quest, we use an intermediate form of the Hello workflow that only contains the first two processes.
The subset we'll be working with is composed of two processes: `sayHello` and `convertToUpper`.
+The following diagram shows how data flows through the workflow.
+
+
+
+--8<-- "docs/en/docs/side_quests/img/nf-test/workflow-data-flow.excalidraw.svg"
+
+
+
You can see the full workflow code below.
??? example "Workflow code"
@@ -385,6 +393,12 @@ ERROR ~ No such file or directory: /workspaces/training/side-quests/nf-test/.nf-
So what was the issue? Remember the pipeline has a greetings.csv file in the project directory. When nf-test runs the pipeline, it will look for this file, but it can't find it. The file is there, what's happening? Well, if we look at the path we can see the test is occurring in the path `./nf-test/tests/longHashString/`. Just like Nextflow, nf-test creates a new directory for each test to keep everything isolated. The data file is not located in there so we must correct the path to the file in the original test.
+
+
+--8<-- "docs/en/docs/side_quests/img/nf-test/test-execution-flow.excalidraw.svg"
+
+
+
Let's go back to the test file and change the path to the file in the `when` block.
You may be wondering how we're going to point to the root of the pipeline in the test. Since this is a common situation, nf-test has a range of global variables that we can use to make our lives easier. You can find the full list [here](https://www.nf-test.com/docs/testcases/global_variables/) but in the meantime we'll use the `projectDir` variable, which means the root of the pipeline project.
@@ -693,6 +707,14 @@ nextflow_process {
As before, we start with the test details, followed by the `when` and `then` blocks. However, we also have an additional `process` block which allows us to define the inputs to the process.
+The following diagram compares the structure of pipeline-level and process-level tests side by side.
+
+
+
+--8<-- "docs/en/docs/side_quests/img/nf-test/test-structure-anatomy.excalidraw.svg"
+
+
+
Let's run the test to see if it works.
```bash title="nf-test pipeline pass"
@@ -859,6 +881,12 @@ Success! The test passes because the `sayHello` process ran successfully and the
### 2.3. Alternative to Snapshots: Direct Content Assertions
+
+
+--8<-- "docs/en/docs/side_quests/img/nf-test/snapshot-vs-content.excalidraw.svg"
+
+
+
While snapshots are great for catching any changes in output, sometimes you want to verify specific content without being so strict about the entire file matching. For example:
- When parts of the output might change (timestamps, random IDs, etc.) but certain key content must be present
@@ -1108,6 +1136,12 @@ Running nf-test on each component is fine, but laborious and error prone. Can't
Yes we can!
+
+
+--8<-- "docs/en/docs/side_quests/img/nf-test/testing-strategy.excalidraw.svg"
+
+
+
Let's run nf-test on the entire repo.
### 3.1. Run nf-test on the entire repo