You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/08/08 06:56:21 UTC

[airflow] branch main updated: Helm Unit testing use new Breeze command (#25581)

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new a562cc3962 Helm Unit testing use new Breeze command (#25581)
a562cc3962 is described below

commit a562cc396212e4d21484088ac5f363ade9ac2b8d
Author: Jarek Potiuk <ja...@polidea.com>
AuthorDate: Mon Aug 8 08:56:15 2022 +0200

    Helm Unit testing use new Breeze command (#25581)
    
    * Helm Unit testing uses now new Breeze command
    
    The unit testing used bash scrips - now it uses breeze command
    and we have nicer instructions describing the ways how you can
    iterate with the tests not only run complete set of tests.
    
    Closes: #25580
---
 .github/workflows/ci.yml                           |  12 +-
 BREEZE.rst                                         |  24 +++-
 TESTING.rst                                        |  45 +++++-
 .../airflow_breeze/commands/testing_commands.py    |  84 +++++++++--
 .../commands/testing_commands_config.py            |  12 +-
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output_testing.svg                   |  78 ++++++-----
 images/breeze/output_testing_helm-tests.svg        | 132 +++++++++++++++++
 images/breeze/output_testing_tests.svg             | 156 ++++++++++-----------
 scripts/in_container/check_environment.sh          |   2 +-
 10 files changed, 397 insertions(+), 150 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 23acb4068b..1008716335 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -921,7 +921,7 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
 
   tests-helm:
     timeout-minutes: 80
-    name: "Python unit tests for helm chart"
+    name: "Python unit tests for Helm chart"
     runs-on: ${{ fromJson(needs.build-info.outputs.runs-on) }}
     needs: [build-info, wait-for-ci-images]
     env:
@@ -957,9 +957,8 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
         env:
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Tests: Helm"
-        run: ./scripts/ci/testing/ci_run_airflow_testing.sh
+        run: breeze testing helm-tests
         env:
-          PR_LABELS: "${{ needs.build-info.outputs.pull-request-labels }}"
           IMAGE_TAG: ${{ env.IMAGE_TAG_FOR_THE_BUILD }}
       - name: "Upload airflow logs"
         uses: actions/upload-artifact@v3
@@ -975,13 +974,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}"
           name: container-logs-helm
           path: "./files/container_logs*"
           retention-days: 7
-      - name: "Upload artifact for coverage"
-        uses: actions/upload-artifact@v3
-        if: needs.build-info.outputs.run-coverage == 'true'
-        with:
-          name: coverage-helm
-          path: "./files/coverage*.xml"
-          retention-days: 7
       - name: "Fix ownership"
         run: breeze ci fix-ownership
         if: always()
diff --git a/BREEZE.rst b/BREEZE.rst
index c70590ced9..23fb349e96 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -705,6 +705,7 @@ Here is the detailed set of options for the ``breeze testing`` command.
   :width: 100%
   :alt: Breeze testing
 
+
 Iterate on tests interactively via ``shell`` command
 ....................................................
 
@@ -735,6 +736,8 @@ re-running the test to iterate over the tests. You can also add more flags when
 in the ``TESTING.rst <TESTING.rst#>`` where all the test types of our are explained and more information
 on how to run them.
 
+This apply to all kind of tests - all our tests can be run using pytest.
+
 Here is the part of Breeze video which is relevant (note that it refers to the old ``./breeze-legacy``
 command and it is not yet available in the new ``breeze`` command):
 
@@ -768,16 +771,35 @@ Here is the detailed set of options for the ``breeze testing tests`` command.
   :width: 100%
   :alt: Breeze testing tests
 
+Running Helm tests
+..................
+
+You can use Breeze to run all Helm tests. Those tests are run inside the breeze image as there are all
+necessary tools installed there.
+
+.. image:: ./images/breeze/output_testing_helm-tests.svg
+  :width: 100%
+  :alt: Breeze testing helm-tests
+
+You can also iterate over those tests with pytest commands, similarly as in case of regular unit tests.
+The helm tests can be found in ``tests/chart`` folder in the main repo.
+
 Running docker-compose tests
 ............................
 
-You can use Breeze to run docker-compose tests. Those tests are run using Production image
+You can use Breeze to run all docker-compose tests. Those tests are run using Production image
 and they are running test with the Quick-start docker compose we have.
 
 .. image:: ./images/breeze/output_testing_docker-compose-tests.svg
   :width: 100%
   :alt: Breeze testing docker-compose-tests
 
+You can also iterate over those tests with pytest command, but - unlike regular unit tests and
+Helm tests, they need to be run in local virtual environment. They also require to have
+``DOCKER_IMAGE`` environment variable set, pointing to the image to test if you do not run them
+through ``breeze testing docker-compose-tests`` command.
+
+The docker-compose tests are in ``docker-tests/`` folder in the main repo.
 
 Running Kubernetes tests
 ........................
diff --git a/TESTING.rst b/TESTING.rst
index 37d23c16f8..b7cf9213ba 100644
--- a/TESTING.rst
+++ b/TESTING.rst
@@ -229,13 +229,13 @@ kinds of test types:
 
   .. code-block:: bash
 
-       ./breeze-legacy --test-type Core  --db-reset tests
+       breeze testing tests --test-type Core  --db-reset tests
 
   Runs all provider tests:
 
   .. code-block:: bash
 
-       ./breeze-legacy --test-type Providers --db-reset tests
+       breeze testing tests --test-type Providers --db-reset tests
 
 * Special kinds of tests - Integration, Quarantined, Postgres, MySQL, which are marked with pytest
   marks and for those you need to select the type using test-type switch. If you want to run such tests
@@ -247,13 +247,13 @@ kinds of test types:
 
   .. code-block:: bash
 
-       ./breeze-legacy --test-type Quarantined tests tests/cli/commands/test_task_command.py --db-reset
+       breeze testing tests --test-type Quarantined tests tests/cli/commands/test_task_command.py --db-reset
 
   Run all Quarantined tests:
 
   .. code-block:: bash
 
-       ./breeze-legacy --test-type Quarantined tests --db-reset
+       breeze testing tests --test-type Quarantined tests --db-reset
 
 Helm Unit Tests
 ===============
@@ -297,11 +297,44 @@ Example test here:
             dep: k8s.V1Deployment = render_k8s_object(res[0], k8s.V1Deployment)
             assert "dags" == dep.spec.template.spec.volumes[1].name
 
-To run tests using breeze run the following command
+
+To execute all Helm tests using breeze command and utilize parallel pytest tests, you can run the
+following command (but it takes quite a long time even in a multi-processor machine).
+
+.. code-block:: bash
+
+    breeze testing helm-tests
+
+You can also run Helm tests individually via the usual ``breeze`` command. Just enter breeze and run the
+tests with pytest as you would do with regular unit tests (you can add ``-n auto`` command to run Helm
+tests in parallel - unlike most of the regular unit tests of ours that require a database, the Helm tests are
+perfectly safe to be run in parallel (and if you have multiple processors, you can gain significant
+speedups when using parallel runs):
 
 .. code-block:: bash
 
-    ./breeze-legacy --test-type Helm tests
+    breeze
+
+This enters breeze container.
+
+.. code-block:: bash
+
+    pytest tests/chart -n auto
+
+This runs all chart tests using all processors you have available.
+
+.. code-block:: bash
+
+    pytest tests/charts/test_airflow_common.py -n auto
+
+This will run all tests from ``tests_airflow_common.py`` file using all processors you have available.
+
+.. code-block:: bash
+
+    pytest tests/charts/test_airflow_common.py
+
+This will run all tests from ``tests_airflow_common.py`` file sequentially.
+
 
 Airflow Integration Tests
 =========================
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 1427e4551a..786c6934b2 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -155,11 +155,12 @@ def run_with_progress(
     test_type: str,
     python: str,
     backend: str,
-    version: str,
     verbose: bool,
     dry_run: bool,
+    version: Optional[str] = None,
 ) -> RunCommandResult:
-    title = f"Running tests: {test_type}, Python: {python}, Backend: {backend}:{version}"
+    backend_version = backend + (":" + version) if version else backend
+    title = f"Running tests: {test_type}, Python: {python}, Backend: {backend_version}"
     try:
         with tempfile.NamedTemporaryFile(mode='w+t', delete=False) as tf:
             get_console().print(f"[info]Starting test = {title}[/]")
@@ -188,7 +189,7 @@ def run_with_progress(
 
 @testing.command(
     name='tests',
-    help="Run the specified unit test targets. Multiple targets may be specified separated by spaces.",
+    help="Run the specified unit test targets.",
     context_settings=dict(
         ignore_unknown_options=True,
         allow_extra_args=True,
@@ -234,18 +235,6 @@ def tests(
     image_tag: Optional[str],
     mount_sources: str,
 ):
-    os.environ["RUN_TESTS"] = "true"
-    if test_type:
-        os.environ["TEST_TYPE"] = test_type
-        if "[" in test_type and not test_type.startswith("Providers"):
-            get_console().print("[error]Only 'Providers' test type can specify actual tests with \\[\\][/]")
-            sys.exit(1)
-    if integration:
-        if "trino" in integration:
-            integration = integration + ("kerberos",)
-        os.environ["LIST_OF_INTEGRATION_TESTS_TO_RUN"] = ' '.join(list(integration))
-    if db_reset:
-        os.environ["DB_RESET"] = "true"
     exec_shell_params = ShellParams(
         verbose=verbose,
         dry_run=dry_run,
@@ -258,6 +247,18 @@ def tests(
         mount_sources=mount_sources,
     )
     env_variables = get_env_variables_for_docker_commands(exec_shell_params)
+    env_variables['RUN_TESTS'] = "true"
+    if test_type:
+        env_variables["TEST_TYPE"] = test_type
+        if "[" in test_type and not test_type.startswith("Providers"):
+            get_console().print("[error]Only 'Providers' test type can specify actual tests with \\[\\][/]")
+            sys.exit(1)
+    if integration:
+        if "trino" in integration:
+            integration = integration + ("kerberos",)
+        env_variables["LIST_OF_INTEGRATION_TESTS_TO_RUN"] = ' '.join(list(integration))
+    if db_reset:
+        env_variables["DB_RESET"] = "true"
     perform_environment_checks(verbose=verbose)
     cmd = ['docker-compose', 'run', '--service-ports', '--rm', 'airflow']
     cmd.extend(list(extra_pytest_args))
@@ -284,3 +285,56 @@ def tests(
     else:
         result = run_command(cmd, verbose=verbose, dry_run=dry_run, env=env_variables, check=False)
     sys.exit(result.returncode)
+
+
+@testing.command(
+    name='helm-tests',
+    help="Run Helm chart tests.",
+    context_settings=dict(
+        ignore_unknown_options=True,
+        allow_extra_args=True,
+    ),
+)
+@option_dry_run
+@option_verbose
+@click.option(
+    '--limit-progress-output',
+    help="Limit progress to percentage only and just show the summary when tests complete.",
+    is_flag=True,
+)
+@option_image_tag_for_running
+@option_mount_sources
+@click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
+def helm_tests(
+    dry_run: bool,
+    verbose: bool,
+    extra_pytest_args: Tuple,
+    image_tag: Optional[str],
+    limit_progress_output: bool,
+    mount_sources: str,
+):
+    exec_shell_params = ShellParams(
+        verbose=verbose,
+        dry_run=dry_run,
+        image_tag=image_tag,
+        mount_sources=mount_sources,
+    )
+    env_variables = get_env_variables_for_docker_commands(exec_shell_params)
+    env_variables['RUN_TESTS'] = "true"
+    env_variables['TEST_TYPE'] = 'Helm'
+    perform_environment_checks(verbose=verbose)
+    cmd = ['docker-compose', 'run', '--service-ports', '--rm', 'airflow']
+    cmd.extend(list(extra_pytest_args))
+    if limit_progress_output:
+        result = run_with_progress(
+            cmd=cmd,
+            python=exec_shell_params.python,
+            backend=exec_shell_params.backend,
+            test_type='Helm',
+            env_variables=env_variables,
+            verbose=verbose,
+            dry_run=dry_run,
+        )
+    else:
+        result = run_command(cmd, verbose=verbose, dry_run=dry_run, env=env_variables, check=False)
+    sys.exit(result.returncode)
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index c91b336f7a..90a3e20348 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -18,7 +18,7 @@ from typing import Dict, List, Union
 
 TESTING_COMMANDS: Dict[str, Union[str, List[str]]] = {
     "name": "Testing",
-    "commands": ["tests", "docker-compose-tests"],
+    "commands": ["tests", "helm-tests", "docker-compose-tests"],
 }
 TESTING_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
     "breeze testing tests": [
@@ -44,6 +44,16 @@ TESTING_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
             ],
         },
     ],
+    "breeze testing helm-tests": [
+        {
+            "name": "Advanced flag for helms-tests command",
+            "options": [
+                "--limit-progress-output",
+                "--image-tag",
+                "--mount-sources",
+            ],
+        },
+    ],
     "breeze testing docker-compose-tests": [
         {
             "name": "Docker-compose tests flag",
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 7294da7fa9..fd1866da43 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -57,7 +57,7 @@ start-airflow:3e793b11dc2158c54bfc189bfe20d6f2
 static-checks:03e96245e60c225ed94514ad7b42ceb0
 stop:8ebd8a42f1003495d37b884de5ac7ce6
 testing:chain:68934a3e9455fa72420237eb05902327
-testing:commands:52beb8911b727d83e048cec69ba1f4a6
+testing:commands:3e5405800cfc798409e101e845cdd30a
 testing:deprecated:68934a3e9455fa72420237eb05902327
 testing:epilog:37a6259cc0c1dae299a7866489dff0bd
 testing:help:590a1f3d30c4015a1df4acb1a622c66d
diff --git a/images/breeze/output_testing.svg b/images/breeze/output_testing.svg
index 5ed3d12806..c9cad972c0 100644
--- a/images/breeze/output_testing.svg
+++ b/images/breeze/output_testing.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 342.79999999999995" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 367.2" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,88 +19,92 @@
         font-weight: 700;
     }
 
-    .terminal-1367429185-matrix {
+    .terminal-120806650-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-1367429185-title {
+    .terminal-120806650-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-1367429185-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-1367429185-r2 { fill: #c5c8c6 }
-.terminal-1367429185-r3 { fill: #d0b344;font-weight: bold }
-.terminal-1367429185-r4 { fill: #868887 }
-.terminal-1367429185-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-1367429185-r6 { fill: #98a84b;font-weight: bold }
+    .terminal-120806650-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-120806650-r2 { fill: #c5c8c6 }
+.terminal-120806650-r3 { fill: #d0b344;font-weight: bold }
+.terminal-120806650-r4 { fill: #868887 }
+.terminal-120806650-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-120806650-r6 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-1367429185-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="291.79999999999995" />
+    <clipPath id="terminal-120806650-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="316.2" />
     </clipPath>
-    <clipPath id="terminal-1367429185-line-0">
+    <clipPath id="terminal-120806650-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-1">
+<clipPath id="terminal-120806650-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-2">
+<clipPath id="terminal-120806650-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-3">
+<clipPath id="terminal-120806650-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-4">
+<clipPath id="terminal-120806650-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-5">
+<clipPath id="terminal-120806650-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-6">
+<clipPath id="terminal-120806650-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-7">
+<clipPath id="terminal-120806650-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-8">
+<clipPath id="terminal-120806650-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-9">
+<clipPath id="terminal-120806650-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-1367429185-line-10">
+<clipPath id="terminal-120806650-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-120806650-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="340.8" rx="8"/><text class="terminal-1367429185-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="365.2" rx="8"/><text class="terminal-120806650-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" clip-path="url(#terminal-1367429185-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-120806650-clip-terminal)">
     
-    <g class="terminal-1367429185-matrix">
-    <text class="terminal-1367429185-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1367429185-line-0)">
-</text><text class="terminal-1367429185-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1367429185-line-1)">Usage:&#160;</text><text class="terminal-1367429185-r1" x="97.6" y="44.4" textLength="512.4" clip-path="url(#terminal-1367429185-line-1)">breeze&#160;testing&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-1367429185-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1367429185-line-1)">
-</text><text class="terminal-1367429185-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1367429185-line-2)">
-</text><text class="terminal-1367429185-r2" x="12.2" y="93.2" textLength="512.4" clip-path="url(#terminal-1367429185-line-3)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;run&#160;tests</text><text class="terminal-1367429185-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1367429185-line-3)">
-</text><text class="terminal-1367429185-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1367429185-line-4)">
-</text><text class="terminal-1367429185-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1367429185-line-5)">╭─</text><text class="terminal-1367429185-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1367429185-line-5)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1367429185-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-136742 [...]
-</text><text class="terminal-1367429185-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1367429185-line-6)">│</text><text class="terminal-1367429185-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1367429185-line-6)">-</text><text class="terminal-1367429185-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-1367429185-line-6)">-help</text><text class="terminal-1367429185-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#terminal-1367429 [...]
-</text><text class="terminal-1367429185-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-1367429185-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1367429185-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-1367429185-line-7)">
-</text><text class="terminal-1367429185-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-1367429185-line-8)">╭─</text><text class="terminal-1367429185-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-1367429185-line-8)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1367429185-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-13674 [...]
-</text><text class="terminal-1367429185-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1367429185-line-9)">│</text><text class="terminal-1367429185-r5" x="24.4" y="239.6" textLength="256.2" clip-path="url(#terminal-1367429185-line-9)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-1367429185-r2" x="305" y="239.6" textLength="1134.6" clip-path="url(#terminal-1367429185-line-9)">Run&#160;the& [...]
-</text><text class="terminal-1367429185-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1367429185-line-10)">│</text><text class="terminal-1367429185-r5" x="24.4" y="264" textLength="256.2" clip-path="url(#terminal-1367429185-line-10)">docker-compose-tests&#160;</text><text class="terminal-1367429185-r2" x="305" y="264" textLength="1134.6" clip-path="url(#terminal-1367429185-line-10)">Run&#160;docker-compose&#160;tests.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&# [...]
-</text><text class="terminal-1367429185-r4" x="0" y="288.4" textLength="1464" clip-path="url(#terminal-1367429185-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1367429185-r2" x="1464" y="288.4" textLength="12.2" clip-path="url(#terminal-1367429185-line-11)">
+    <g class="terminal-120806650-matrix">
+    <text class="terminal-120806650-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-120806650-line-0)">
+</text><text class="terminal-120806650-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-120806650-line-1)">Usage:&#160;</text><text class="terminal-120806650-r1" x="97.6" y="44.4" textLength="512.4" clip-path="url(#terminal-120806650-line-1)">breeze&#160;testing&#160;[OPTIONS]&#160;COMMAND&#160;[ARGS]...</text><text class="terminal-120806650-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-120806650-line-1)">
+</text><text class="terminal-120806650-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-120806650-line-2)">
+</text><text class="terminal-120806650-r2" x="12.2" y="93.2" textLength="512.4" clip-path="url(#terminal-120806650-line-3)">Tools&#160;that&#160;developers&#160;can&#160;use&#160;to&#160;run&#160;tests</text><text class="terminal-120806650-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-120806650-line-3)">
+</text><text class="terminal-120806650-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-120806650-line-4)">
+</text><text class="terminal-120806650-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-120806650-line-5)">╭─</text><text class="terminal-120806650-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-120806650-line-5)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-120806650-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-120806650-l [...]
+</text><text class="terminal-120806650-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-120806650-line-6)">│</text><text class="terminal-120806650-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-120806650-line-6)">-</text><text class="terminal-120806650-r5" x="36.6" y="166.4" textLength="61" clip-path="url(#terminal-120806650-line-6)">-help</text><text class="terminal-120806650-r6" x="122" y="166.4" textLength="24.4" clip-path="url(#terminal-120806650-line [...]
+</text><text class="terminal-120806650-r4" x="0" y="190.8" textLength="1464" clip-path="url(#terminal-120806650-line-7)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-120806650-r2" x="1464" y="190.8" textLength="12.2" clip-path="url(#terminal-120806650-line-7)">
+</text><text class="terminal-120806650-r4" x="0" y="215.2" textLength="24.4" clip-path="url(#terminal-120806650-line-8)">╭─</text><text class="terminal-120806650-r4" x="24.4" y="215.2" textLength="1415.2" clip-path="url(#terminal-120806650-line-8)">&#160;Testing&#160;───────────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-120806650-r4" x="1439.6" y="215.2" textLength="24.4" clip-path="url(#terminal-120806650- [...]
+</text><text class="terminal-120806650-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-120806650-line-9)">│</text><text class="terminal-120806650-r5" x="24.4" y="239.6" textLength="500.2" clip-path="url(#terminal-120806650-line-9)">tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="term [...]
+</text><text class="terminal-120806650-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-120806650-line-10)">│</text><text class="terminal-120806650-r5" x="24.4" y="264" textLength="500.2" clip-path="url(#terminal-120806650-line-10)">helm-tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-120806650-r2" x="549"  [...]
+</text><text class="terminal-120806650-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-120806650-line-11)">│</text><text class="terminal-120806650-r5" x="24.4" y="288.4" textLength="500.2" clip-path="url(#terminal-120806650-line-11)">docker-compose-tests&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text class="terminal-120806650-r2" x="549" y="288.4" textLength="890.6" clip-path="url(#t [...]
+</text><text class="terminal-120806650-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-120806650-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-120806650-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-120806650-line-12)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_testing_helm-tests.svg b/images/breeze/output_testing_helm-tests.svg
new file mode 100644
index 0000000000..e36605649c
--- /dev/null
+++ b/images/breeze/output_testing_helm-tests.svg
@@ -0,0 +1,132 @@
+<svg class="rich-terminal" viewBox="0 0 1482 489.2" xmlns="http://www.w3.org/2000/svg">
+    <!-- Generated with Rich https://www.textualize.io -->
+    <style>
+
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Regular"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
+        font-style: normal;
+        font-weight: 400;
+    }
+    @font-face {
+        font-family: "Fira Code";
+        src: local("FiraCode-Bold"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
+                url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
+        font-style: bold;
+        font-weight: 700;
+    }
+
+    .terminal-1380836579-matrix {
+        font-family: Fira Code, monospace;
+        font-size: 20px;
+        line-height: 24.4px;
+        font-variant-east-asian: full-width;
+    }
+
+    .terminal-1380836579-title {
+        font-size: 18px;
+        font-weight: bold;
+        font-family: arial;
+    }
+
+    .terminal-1380836579-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-1380836579-r2 { fill: #c5c8c6 }
+.terminal-1380836579-r3 { fill: #d0b344;font-weight: bold }
+.terminal-1380836579-r4 { fill: #868887 }
+.terminal-1380836579-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-1380836579-r6 { fill: #98a84b;font-weight: bold }
+.terminal-1380836579-r7 { fill: #8d7b39 }
+    </style>
+
+    <defs>
+    <clipPath id="terminal-1380836579-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="438.2" />
+    </clipPath>
+    <clipPath id="terminal-1380836579-line-0">
+    <rect x="0" y="1.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-1">
+    <rect x="0" y="25.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-2">
+    <rect x="0" y="50.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-3">
+    <rect x="0" y="74.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-4">
+    <rect x="0" y="99.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-5">
+    <rect x="0" y="123.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-6">
+    <rect x="0" y="147.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-7">
+    <rect x="0" y="172.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-8">
+    <rect x="0" y="196.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-9">
+    <rect x="0" y="221.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-10">
+    <rect x="0" y="245.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-11">
+    <rect x="0" y="269.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-12">
+    <rect x="0" y="294.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-13">
+    <rect x="0" y="318.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-14">
+    <rect x="0" y="343.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-15">
+    <rect x="0" y="367.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-1380836579-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+    </defs>
+
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="487.2" rx="8"/><text class="terminal-1380836579-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;helm-tests</text>
+            <g transform="translate(26,22)">
+            <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
+            <circle cx="22" cy="0" r="7" fill="#febc2e"/>
+            <circle cx="44" cy="0" r="7" fill="#28c840"/>
+            </g>
+        
+    <g transform="translate(9, 41)" clip-path="url(#terminal-1380836579-clip-terminal)">
+    
+    <g class="terminal-1380836579-matrix">
+    <text class="terminal-1380836579-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-1380836579-line-0)">
+</text><text class="terminal-1380836579-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-1380836579-line-1)">Usage:&#160;</text><text class="terminal-1380836579-r1" x="97.6" y="44.4" textLength="707.6" clip-path="url(#terminal-1380836579-line-1)">breeze&#160;testing&#160;helm-tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-1380836579-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-1)">
+</text><text class="terminal-1380836579-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-1380836579-line-2)">
+</text><text class="terminal-1380836579-r2" x="12.2" y="93.2" textLength="244" clip-path="url(#terminal-1380836579-line-3)">Run&#160;Helm&#160;chart&#160;tess.</text><text class="terminal-1380836579-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-1380836579-line-3)">
+</text><text class="terminal-1380836579-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-1380836579-line-4)">
+</text><text class="terminal-1380836579-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-1380836579-line-5)">╭─</text><text class="terminal-1380836579-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-1380836579-line-5)">&#160;Advanced&#160;flag&#160;for&#160;helms-tests&#160;command&#160;─────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1380836579-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-1380836579-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-6)">│</text><text class="terminal-1380836579-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-6)">-</text><text class="terminal-1380836579-r5" x="36.6" y="166.4" textLength="73.2" clip-path="url(#terminal-1380836579-line-6)">-limit</text><text class="terminal-1380836579-r5" x="109.8" y="166.4" textLength="195.2" clip-path="url(#terminal-1 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-1380836579-line-7)">│</text><text class="terminal-1380836579-r5" x="24.4" y="190.8" textLength="12.2" clip-path="url(#terminal-1380836579-line-7)">-</text><text class="terminal-1380836579-r5" x="36.6" y="190.8" textLength="73.2" clip-path="url(#terminal-1380836579-line-7)">-image</text><text class="terminal-1380836579-r5" x="109.8" y="190.8" textLength="48.8" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-1380836579-line-8)">│</text><text class="terminal-1380836579-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-1380836579-line-8)">-</text><text class="terminal-1380836579-r5" x="36.6" y="215.2" textLength="73.2" clip-path="url(#terminal-1380836579-line-8)">-mount</text><text class="terminal-1380836579-r5" x="109.8" y="215.2" textLength="97.6" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-1380836579-line-9)">│</text><text class="terminal-1380836579-r2" x="378.2" y="239.6" textLength="1061.4" clip-path="url(#terminal-1380836579-line-9)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-1380836579-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-1380836579-line-10)">│</text><text class="terminal-1380836579-r7" x="378.2" y="264" textLength="1061.4" clip-path="url(#terminal-1380836579-line-10)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-11)">│</text><text class="terminal-1380836579-r4" x="378.2" y="288.4" textLength="1061.4" clip-path="url(#terminal-1380836579-line-11)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="312.8" textLength="1464" clip-path="url(#terminal-1380836579-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1380836579-r2" x="1464" y="312.8" textLength="12.2" clip-path="url(#terminal-1380836579-line-12)">
+</text><text class="terminal-1380836579-r4" x="0" y="337.2" textLength="24.4" clip-path="url(#terminal-1380836579-line-13)">╭─</text><text class="terminal-1380836579-r4" x="24.4" y="337.2" textLength="1415.2" clip-path="url(#terminal-1380836579-line-13)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-1380836579-r4" x="1439.6" y="337.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-1380836579-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-1380836579-line-14)">│</text><text class="terminal-1380836579-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-1380836579-line-14)">-</text><text class="terminal-1380836579-r5" x="36.6" y="361.6" textLength="48.8" clip-path="url(#terminal-1380836579-line-14)">-dry</text><text class="terminal-1380836579-r5" x="85.4" y="361.6" textLength="48.8" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-1380836579-line-15)">│</text><text class="terminal-1380836579-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-1380836579-line-15)">-</text><text class="terminal-1380836579-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-1380836579-line-15)">-verbose</text><text class="terminal-1380836579-r6" x="158.6" y="386" textLength="24.4" clip-path="url(#terminal-13808 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-16)">│</text><text class="terminal-1380836579-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-1380836579-line-16)">-</text><text class="terminal-1380836579-r5" x="36.6" y="410.4" textLength="61" clip-path="url(#terminal-1380836579-line-16)">-help</text><text class="terminal-1380836579-r6" x="158.6" y="410.4" textLength="24.4" clip-path="url(#terminal-13 [...]
+</text><text class="terminal-1380836579-r4" x="0" y="434.8" textLength="1464" clip-path="url(#terminal-1380836579-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-1380836579-r2" x="1464" y="434.8" textLength="12.2" clip-path="url(#terminal-1380836579-line-17)">
+</text>
+    </g>
+    </g>
+</svg>
diff --git a/images/breeze/output_testing_tests.svg b/images/breeze/output_testing_tests.svg
index 207aab3dd6..0168ab61e1 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -19,173 +19,173 @@
         font-weight: 700;
     }
 
-    .terminal-3272502210-matrix {
+    .terminal-2523094625-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-3272502210-title {
+    .terminal-2523094625-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-3272502210-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-3272502210-r2 { fill: #c5c8c6 }
-.terminal-3272502210-r3 { fill: #d0b344;font-weight: bold }
-.terminal-3272502210-r4 { fill: #868887 }
-.terminal-3272502210-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-3272502210-r6 { fill: #8d7b39 }
-.terminal-3272502210-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-2523094625-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-2523094625-r2 { fill: #c5c8c6 }
+.terminal-2523094625-r3 { fill: #d0b344;font-weight: bold }
+.terminal-2523094625-r4 { fill: #868887 }
+.terminal-2523094625-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-2523094625-r6 { fill: #8d7b39 }
+.terminal-2523094625-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-3272502210-clip-terminal">
+    <clipPath id="terminal-2523094625-clip-terminal">
       <rect x="0" y="0" width="1463.0" height="804.1999999999999" />
     </clipPath>
-    <clipPath id="terminal-3272502210-line-0">
+    <clipPath id="terminal-2523094625-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-1">
+<clipPath id="terminal-2523094625-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-2">
+<clipPath id="terminal-2523094625-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-3">
+<clipPath id="terminal-2523094625-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-4">
+<clipPath id="terminal-2523094625-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-5">
+<clipPath id="terminal-2523094625-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-6">
+<clipPath id="terminal-2523094625-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-7">
+<clipPath id="terminal-2523094625-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-8">
+<clipPath id="terminal-2523094625-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-9">
+<clipPath id="terminal-2523094625-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-10">
+<clipPath id="terminal-2523094625-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-11">
+<clipPath id="terminal-2523094625-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-12">
+<clipPath id="terminal-2523094625-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-13">
+<clipPath id="terminal-2523094625-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-14">
+<clipPath id="terminal-2523094625-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-15">
+<clipPath id="terminal-2523094625-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-16">
+<clipPath id="terminal-2523094625-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-17">
+<clipPath id="terminal-2523094625-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-18">
+<clipPath id="terminal-2523094625-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-19">
+<clipPath id="terminal-2523094625-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-20">
+<clipPath id="terminal-2523094625-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-21">
+<clipPath id="terminal-2523094625-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-22">
+<clipPath id="terminal-2523094625-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-23">
+<clipPath id="terminal-2523094625-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-24">
+<clipPath id="terminal-2523094625-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-25">
+<clipPath id="terminal-2523094625-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-26">
+<clipPath id="terminal-2523094625-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-27">
+<clipPath id="terminal-2523094625-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-28">
+<clipPath id="terminal-2523094625-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-29">
+<clipPath id="terminal-2523094625-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-30">
+<clipPath id="terminal-2523094625-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-3272502210-line-31">
+<clipPath id="terminal-2523094625-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="853.2" rx="8"/><text class="terminal-3272502210-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="853.2" rx="8"/><text class="terminal-2523094625-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" clip-path="url(#terminal-3272502210-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-2523094625-clip-terminal)">
     
-    <g class="terminal-3272502210-matrix">
-    <text class="terminal-3272502210-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-3272502210-line-0)">
-</text><text class="terminal-3272502210-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-3272502210-line-1)">Usage:&#160;</text><text class="terminal-3272502210-r1" x="97.6" y="44.4" textLength="646.6" clip-path="url(#terminal-3272502210-line-1)">breeze&#160;testing&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-3272502210-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-1)">
-</text><text class="terminal-3272502210-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-2)">
-</text><text class="terminal-3272502210-r2" x="12.2" y="93.2" textLength="1110.2" clip-path="url(#terminal-3272502210-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.&#160;Multiple&#160;targets&#160;may&#160;be&#160;specified&#160;separated&#160;by&#160;spaces.</text><text class="terminal-3272502210-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-3)">
-</text><text class="terminal-3272502210-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-4)">
-</text><text class="terminal-3272502210-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-3272502210-line-5)">╭─</text><text class="terminal-3272502210-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-3272502210-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3272502210-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-3272502210-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-6)">│</text><text class="terminal-3272502210-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-6)">-</text><text class="terminal-3272502210-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-3272502210-line-6)">-integration</text><text class="terminal-3272502210-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
-</text><text class="terminal-3272502210-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-7)">│</text><text class="terminal-3272502210-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-3272502210-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-3272502210-r4" x="1451.8" y=" [...]
-</text><text class="terminal-3272502210-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-8)">│</text><text class="terminal-3272502210-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-8)">-</text><text class="terminal-3272502210-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-3272502210-line-8)">-test</text><text class="terminal-3272502210-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-32725022 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-9)">│</text><text class="terminal-3272502210-r2" x="317.2" y="239.6" textLength="341.6" clip-path="url(#terminal-3272502210-line-9)">should&#160;be&#160;run&#160;-&#160;for&#160;example&#160;</text><text class="terminal-3272502210-r5" x="658.8" y="239.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-9)">-</text><text class="terminal-3272502210-r5" x="671" y= [...]
-</text><text class="terminal-3272502210-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-3272502210-line-10)">│</text><text class="terminal-3272502210-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-3272502210-line-10)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-32725 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-11)">│</text><text class="terminal-3272502210-r6" x="317.2" y="288.4" textLength="1122.4" clip-path="url(#terminal-3272502210-line-11)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
-</text><text class="terminal-3272502210-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-12)">│</text><text class="terminal-3272502210-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-12)">-</text><text class="terminal-3272502210-r5" x="36.6" y="312.8" textLength="36.6" clip-path="url(#terminal-3272502210-line-12)">-db</text><text class="terminal-3272502210-r5" x="73.2" y="312.8" textLength="73.2" clip-path="url(#terminal-327 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-13)">│</text><text class="terminal-3272502210-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-13)">-</text><text class="terminal-3272502210-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-3272502210-line-13)">-backend</text><text class="terminal-3272502210-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-3272502210-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-14)">│</text><text class="terminal-3272502210-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-14)">-</text><text class="terminal-3272502210-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-3272502210-line-14)">-python</text><text class="terminal-3272502210-r7" x="268.4" y="361.6" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3272502210-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-3272502210-line-15)">│</text><text class="terminal-3272502210-r4" x="317.2" y="386" textLength="732" clip-path="url(#terminal-3272502210-line-15)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-16)">│</text><text class="terminal-3272502210-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-16)">-</text><text class="terminal-3272502210-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-3272502210-line-16)">-postgres</text><text class="terminal-3272502210-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-3272502210-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-17)">│</text><text class="terminal-3272502210-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-17)">-</text><text class="terminal-3272502210-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-3272502210-line-17)">-mysql</text><text class="terminal-3272502210-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3272502210-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-18)">│</text><text class="terminal-3272502210-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-18)">-</text><text class="terminal-3272502210-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-3272502210-line-18)">-mssql</text><text class="terminal-3272502210-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3272502210-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-3272502210-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3272502210-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-19)">
-</text><text class="terminal-3272502210-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-3272502210-line-20)">╭─</text><text class="terminal-3272502210-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-3272502210-line-20)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3272502210-r4" x="1439.6" y="508" textLength="24.4" clip-path="url [...]
-</text><text class="terminal-3272502210-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-21)">│</text><text class="terminal-3272502210-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-21)">-</text><text class="terminal-3272502210-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-3272502210-line-21)">-limit</text><text class="terminal-3272502210-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-3272502210-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-22)">│</text><text class="terminal-3272502210-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-22)">-</text><text class="terminal-3272502210-r5" x="36.6" y="556.8" textLength="73.2" clip-path="url(#terminal-3272502210-line-22)">-image</text><text class="terminal-3272502210-r5" x="109.8" y="556.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-3272502210-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-23)">│</text><text class="terminal-3272502210-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-3272502210-line-23)">-</text><text class="terminal-3272502210-r5" x="36.6" y="581.2" textLength="73.2" clip-path="url(#terminal-3272502210-line-23)">-mount</text><text class="terminal-3272502210-r5" x="109.8" y="581.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-3272502210-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-24)">│</text><text class="terminal-3272502210-r2" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#terminal-3272502210-line-24)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-3272502210-line-25)">│</text><text class="terminal-3272502210-r6" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-3272502210-line-25)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-26)">│</text><text class="terminal-3272502210-r4" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-3272502210-line-26)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-3272502210-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3272502210-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-27)">
-</text><text class="terminal-3272502210-r4" x="0" y="703.2" textLength="24.4" clip-path="url(#terminal-3272502210-line-28)">╭─</text><text class="terminal-3272502210-r4" x="24.4" y="703.2" textLength="1415.2" clip-path="url(#terminal-3272502210-line-28)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-3272502210-r4" x="1439.6" y="703.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-3272502210-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-29)">│</text><text class="terminal-3272502210-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-3272502210-line-29)">-</text><text class="terminal-3272502210-r5" x="36.6" y="727.6" textLength="48.8" clip-path="url(#terminal-3272502210-line-29)">-dry</text><text class="terminal-3272502210-r5" x="85.4" y="727.6" textLength="48.8" clip-path="url(#terminal-32 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-3272502210-line-30)">│</text><text class="terminal-3272502210-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-3272502210-line-30)">-</text><text class="terminal-3272502210-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-3272502210-line-30)">-verbose</text><text class="terminal-3272502210-r7" x="158.6" y="752" textLength="24.4" clip-path="url(#terminal-32725 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-31)">│</text><text class="terminal-3272502210-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-3272502210-line-31)">-</text><text class="terminal-3272502210-r5" x="36.6" y="776.4" textLength="61" clip-path="url(#terminal-3272502210-line-31)">-help</text><text class="terminal-3272502210-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#terminal-32 [...]
-</text><text class="terminal-3272502210-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-3272502210-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-3272502210-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-3272502210-line-32)">
+    <g class="terminal-2523094625-matrix">
+    <text class="terminal-2523094625-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2523094625-line-0)">
+</text><text class="terminal-2523094625-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2523094625-line-1)">Usage:&#160;</text><text class="terminal-2523094625-r1" x="97.6" y="44.4" textLength="646.6" clip-path="url(#terminal-2523094625-line-1)">breeze&#160;testing&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2523094625-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-1)">
+</text><text class="terminal-2523094625-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-2)">
+</text><text class="terminal-2523094625-r2" x="12.2" y="93.2" textLength="439.2" clip-path="url(#terminal-2523094625-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.</text><text class="terminal-2523094625-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-3)">
+</text><text class="terminal-2523094625-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-4)">
+</text><text class="terminal-2523094625-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2523094625-line-5)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2523094625-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
+</text><text class="terminal-2523094625-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-6)">│</text><text class="terminal-2523094625-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-6)">-</text><text class="terminal-2523094625-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-2523094625-line-6)">-integration</text><text class="terminal-2523094625-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
+</text><text class="terminal-2523094625-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-7)">│</text><text class="terminal-2523094625-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-2523094625-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-2523094625-r4" x="1451.8" y=" [...]
+</text><text class="terminal-2523094625-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-8)">│</text><text class="terminal-2523094625-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-8)">-</text><text class="terminal-2523094625-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2523094625-line-8)">-test</text><text class="terminal-2523094625-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-25230946 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-9)">│</text><text class="terminal-2523094625-r2" x="317.2" y="239.6" textLength="341.6" clip-path="url(#terminal-2523094625-line-9)">should&#160;be&#160;run&#160;-&#160;for&#160;example&#160;</text><text class="terminal-2523094625-r5" x="658.8" y="239.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-9)">-</text><text class="terminal-2523094625-r5" x="671" y= [...]
+</text><text class="terminal-2523094625-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2523094625-line-10)">│</text><text class="terminal-2523094625-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-2523094625-line-10)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-25230 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-11)">│</text><text class="terminal-2523094625-r6" x="317.2" y="288.4" textLength="1122.4" clip-path="url(#terminal-2523094625-line-11)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
+</text><text class="terminal-2523094625-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-12)">│</text><text class="terminal-2523094625-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-12)">-</text><text class="terminal-2523094625-r5" x="36.6" y="312.8" textLength="36.6" clip-path="url(#terminal-2523094625-line-12)">-db</text><text class="terminal-2523094625-r5" x="73.2" y="312.8" textLength="73.2" clip-path="url(#terminal-252 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-13)">│</text><text class="terminal-2523094625-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-13)">-</text><text class="terminal-2523094625-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2523094625-line-13)">-backend</text><text class="terminal-2523094625-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termin [...]
+</text><text class="terminal-2523094625-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-14)">│</text><text class="terminal-2523094625-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-14)">-</text><text class="terminal-2523094625-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-2523094625-line-14)">-python</text><text class="terminal-2523094625-r7" x="268.4" y="361.6" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2523094625-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2523094625-line-15)">│</text><text class="terminal-2523094625-r4" x="317.2" y="386" textLength="732" clip-path="url(#terminal-2523094625-line-15)">[default:&#160;3.7]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-16)">│</text><text class="terminal-2523094625-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-16)">-</text><text class="terminal-2523094625-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-2523094625-line-16)">-postgres</text><text class="terminal-2523094625-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#term [...]
+</text><text class="terminal-2523094625-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-17)">│</text><text class="terminal-2523094625-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-17)">-</text><text class="terminal-2523094625-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2523094625-line-17)">-mysql</text><text class="terminal-2523094625-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2523094625-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-18)">│</text><text class="terminal-2523094625-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-18)">-</text><text class="terminal-2523094625-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-2523094625-line-18)">-mssql</text><text class="terminal-2523094625-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2523094625-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-2523094625-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-19)">
+</text><text class="terminal-2523094625-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-2523094625-line-20)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-2523094625-line-20)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="508" textLength="24.4" clip-path="url [...]
+</text><text class="terminal-2523094625-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-21)">│</text><text class="terminal-2523094625-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-21)">-</text><text class="terminal-2523094625-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-2523094625-line-21)">-limit</text><text class="terminal-2523094625-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
+</text><text class="terminal-2523094625-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-22)">│</text><text class="terminal-2523094625-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-22)">-</text><text class="terminal-2523094625-r5" x="36.6" y="556.8" textLength="73.2" clip-path="url(#terminal-2523094625-line-22)">-image</text><text class="terminal-2523094625-r5" x="109.8" y="556.8" textLength="48.8" clip-path="url(#terminal [...]
+</text><text class="terminal-2523094625-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-23)">│</text><text class="terminal-2523094625-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-23)">-</text><text class="terminal-2523094625-r5" x="36.6" y="581.2" textLength="73.2" clip-path="url(#terminal-2523094625-line-23)">-mount</text><text class="terminal-2523094625-r5" x="109.8" y="581.2" textLength="97.6" clip-path="url(#terminal [...]
+</text><text class="terminal-2523094625-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-24)">│</text><text class="terminal-2523094625-r2" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#terminal-2523094625-line-24)">selected).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2523094625-line-25)">│</text><text class="terminal-2523094625-r6" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-2523094625-line-25)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-26)">│</text><text class="terminal-2523094625-r4" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-2523094625-line-26)">[default:&#160;selected]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-2523094625-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-27)">
+</text><text class="terminal-2523094625-r4" x="0" y="703.2" textLength="24.4" clip-path="url(#terminal-2523094625-line-28)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="703.2" textLength="1415.2" clip-path="url(#terminal-2523094625-line-28)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="703.2" textLength="24.4" clip-path="url(#termina [...]
+</text><text class="terminal-2523094625-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-29)">│</text><text class="terminal-2523094625-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-29)">-</text><text class="terminal-2523094625-r5" x="36.6" y="727.6" textLength="48.8" clip-path="url(#terminal-2523094625-line-29)">-dry</text><text class="terminal-2523094625-r5" x="85.4" y="727.6" textLength="48.8" clip-path="url(#terminal-25 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2523094625-line-30)">│</text><text class="terminal-2523094625-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2523094625-line-30)">-</text><text class="terminal-2523094625-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-2523094625-line-30)">-verbose</text><text class="terminal-2523094625-r7" x="158.6" y="752" textLength="24.4" clip-path="url(#terminal-25230 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-31)">│</text><text class="terminal-2523094625-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-31)">-</text><text class="terminal-2523094625-r5" x="36.6" y="776.4" textLength="61" clip-path="url(#terminal-2523094625-line-31)">-help</text><text class="terminal-2523094625-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#terminal-25 [...]
+</text><text class="terminal-2523094625-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-2523094625-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-32)">
 </text>
     </g>
     </g>
diff --git a/scripts/in_container/check_environment.sh b/scripts/in_container/check_environment.sh
index 3d9247e095..de9f45cdef 100755
--- a/scripts/in_container/check_environment.sh
+++ b/scripts/in_container/check_environment.sh
@@ -183,6 +183,6 @@ startairflow_if_requested
 
 if [[ -n ${DISABLED_INTEGRATIONS=} && (${VERBOSE=} == "true" || ${VERBOSE} == "True") ]]; then
     echo
-    echo "${COLOR_BLUE}Those integrations are disabled: ${DISABLED_INTEGRATIONS}"
+    echo "${COLOR_BLUE}Those integrations are disabled: ${DISABLED_INTEGRATIONS}${COLOR_RESET}"
     echo
 fi