diff --git a/playbooks/run-test-command/run.yaml b/playbooks/run-test-command/run.yaml
index aa87128c0..fb6963169 100644
--- a/playbooks/run-test-command/run.yaml
+++ b/playbooks/run-test-command/run.yaml
@@ -1,7 +1,18 @@
 - hosts: all
 
   tasks:
+    - name: Convert test_command to list
+      set_fact:
+        test_commands: ['{{ test_command }}']
+      when: test_command | type_debug != 'list'
+
+    - name: Use test_command list
+      set_fact:
+        test_commands: '{{ test_command }}'
+      when: test_command | type_debug == 'list'
+
     - name: Run test_command
-      command: '{{ test_command }}'
+      command: '{{ item }}'
       args:
         chdir: '{{ zuul.project.src_dir }}'
+      with_items: '{{ test_commands }}'
diff --git a/zuul.yaml b/zuul.yaml
index c9aeb376f..32cd900cf 100644
--- a/zuul.yaml
+++ b/zuul.yaml
@@ -481,7 +481,9 @@
     description: |
       Run simple command as test.
 
-      To use this, set the ``test_command`` variable.
+      To use this, set the ``test_command`` variable to a single command or
+      a list of commands. For complex list of commands, it is recommended to
+      use a single command that run a proper script.
     run: playbooks/run-test-command/run.yaml
     vars:
       test_command: "exit 1"