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 68aaa077adc Add timeout on total pytest execution time in parallel 
tests (#44772)
68aaa077adc is described below

commit 68aaa077adc3dc771ea6528af91c27b453d7346e
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Dec 8 18:01:35 2024 +0100

    Add timeout on total pytest execution time in parallel tests (#44772)
    
    When there is a test that does not allow pytest command to quit
    cleanly, in case of parallell commands, we have no chance to see
    the outputs of test command that failed, because whole CI job is
    cancelled and we only upload the logs on failure in the following
    step of the job.
    
    Adding timeout for parallel tests that is a little shorter than
    the job timeout will give a chance for our tests to get cancelled
    before the job timeout occur, and even if we will not see the logs
    in the output of the cancelled `breeze testing` command, the logs
    should be uploaded as artifacts in this case.
    
    Also we are serving "cancelled" status of job, because it's likely
    that will also be possible to do "something" in case test gets
    cancelled due to timeout.
---
 .github/workflows/run-unit-tests.yml               |   2 +-
 .../doc/images/output_testing_core-tests.svg       | 118 ++++++++++--------
 .../doc/images/output_testing_core-tests.txt       |   2 +-
 .../doc/images/output_testing_providers-tests.svg  | 136 ++++++++++++---------
 .../doc/images/output_testing_providers-tests.txt  |   2 +-
 .../doc/images/output_testing_task-sdk-tests.svg   |  48 ++------
 .../doc/images/output_testing_task-sdk-tests.txt   |   2 +-
 .../airflow_breeze/commands/testing_commands.py    |  59 ++++++---
 .../commands/testing_commands_config.py            |  47 +------
 9 files changed, 201 insertions(+), 215 deletions(-)

diff --git a/.github/workflows/run-unit-tests.yml 
b/.github/workflows/run-unit-tests.yml
index 26674cbc63e..6b491f6bff4 100644
--- a/.github/workflows/run-unit-tests.yml
+++ b/.github/workflows/run-unit-tests.yml
@@ -183,4 +183,4 @@ jobs:
         if: success()
       - name: "Post Tests failure"
         uses: ./.github/actions/post_tests_failure
-        if: failure()
+        if: failure() || cancelled()
diff --git a/dev/breeze/doc/images/output_testing_core-tests.svg 
b/dev/breeze/doc/images/output_testing_core-tests.svg
index 6c30d1b090f..65f7343b99b 100644
--- a/dev/breeze/doc/images/output_testing_core-tests.svg
+++ b/dev/breeze/doc/images/output_testing_core-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2587.6" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 2685.2" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-core-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2536.6" />
+      <rect x="0" y="0" width="1463.0" height="2634.2" />
     </clipPath>
     <clipPath id="breeze-testing-core-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -354,9 +354,21 @@
 <clipPath id="breeze-testing-core-tests-line-102">
     <rect x="0" y="2490.3" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-testing-core-tests-line-103">
+    <rect x="0" y="2514.7" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-core-tests-line-104">
+    <rect x="0" y="2539.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-core-tests-line-105">
+    <rect x="0" y="2563.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-core-tests-line-106">
+    <rect x="0" y="2587.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="2585.6" rx="8"/><text 
class="breeze-testing-core-tests-title" fill="#c5c8c6" text-anchor="middle" 
x="740" y="27">Command:&#160;testing&#160;core-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2683.2" rx="8"/><text 
class="breeze-testing-core-tests-title" fill="#c5c8c6" text-anchor="middle" 
x="740" y="27">Command:&#160;testing&#160;core-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"/>
@@ -422,54 +434,58 @@
 </text><text class="breeze-testing-core-tests-r5" x="0" y="1313.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-53)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1313.2" textLength="170.8" 
clip-path="url(#breeze-testing-core-tests-line-53)">--skip-cleanup</text><text 
class="breeze-testing-core-tests-r1" x="378.2" y="1313.2" textLength="732" 
clip-path="url(#breeze-testing-core-tests-line-53)">Skip&#160;cleanup&#160;of&#160;temporary&#160;files&#160;cr
 [...]
 </text><text class="breeze-testing-core-tests-r5" x="0" y="1337.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-54)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1337.6" textLength="207.4" 
clip-path="url(#breeze-testing-core-tests-line-54)">--debug-resources</text><text
 class="breeze-testing-core-tests-r1" x="378.2" y="1337.6" textLength="768.6" 
clip-path="url(#breeze-testing-core-tests-line-54)">Whether&#160;to&#160;show&#160;resource&#160;informati
 [...]
 </text><text class="breeze-testing-core-tests-r5" x="0" y="1362" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-55)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1362" textLength="305" 
clip-path="url(#breeze-testing-core-tests-line-55)">--include-success-outputs</text><text
 class="breeze-testing-core-tests-r1" x="378.2" y="1362" textLength="927.2" 
clip-path="url(#breeze-testing-core-tests-line-55)">Whether&#160;to&#160;include&#160;outputs&#160;of&#160
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1386.4" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-56)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1386.4" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-56)">
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1410.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-57)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1410.8" textLength="610" 
clip-path="url(#breeze-testing-core-tests-line-57)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text
 class="breeze-testing-core-tests-r5" x="634.4" y="1410.8" textLength="805.2" 
clip-path="url(#breeze-testing-core-tests-line-57)">── [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1435.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-58)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1435.2" textLength="170.8" 
clip-path="url(#breeze-testing-core-tests-line-58)">--upgrade-boto</text><text 
class="breeze-testing-core-tests-r1" x="341.6" y="1435.2" textLength="866.2" 
clip-path="url(#breeze-testing-core-tests-line-58)">Remove&#160;aiobotocore&#160;and&#160;upgrade&#160;botoco
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1459.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-59)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1459.6" textLength="268.4" 
clip-path="url(#breeze-testing-core-tests-line-59)">--downgrade-sqlalchemy</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1459.6" textLength="610" 
clip-path="url(#breeze-testing-core-tests-line-59)">Downgrade&#160;SQLAlchemy&#160;to&#160;minimum&#160
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1484" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-60)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1484" textLength="244" 
clip-path="url(#breeze-testing-core-tests-line-60)">--downgrade-pendulum</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1484" textLength="585.6" 
clip-path="url(#breeze-testing-core-tests-line-60)">Downgrade&#160;Pendulum&#160;to&#160;minimum&#160;supported
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1508.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-61)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1508.4" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-61)">--remove-arm-packages</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1508.4" textLength="817.4" 
clip-path="url(#breeze-testing-core-tests-line-61)">Removes&#160;arm&#160;packages&#160;from&#160;the&
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1532.8" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1532.8" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-62)">
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1557.2" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-63)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1557.2" textLength="402.6" 
clip-path="url(#breeze-testing-core-tests-line-63)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-core-tests-r5" x="427" y="1557.2" textLength="1012.6" 
clip-path="url(#breeze-testing-core-tests-line-63)">──────── [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1581.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-64)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1581.6" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-64)">--github-repository</text><text
 class="breeze-testing-core-tests-r7" x="366" y="1581.6" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-64)">-g</text><text 
class="breeze-testing-core-tests-r1" x=" [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1606" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-65)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1606" textLength="134.2" 
clip-path="url(#breeze-testing-core-tests-line-65)">--image-tag</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1606" textLength="695.4" 
clip-path="url(#breeze-testing-core-tests-line-65)">Tag&#160;of&#160;the&#160;image&#160;which&#160;is&#160;used&#160;
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1630.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-66)">│</text><text 
class="breeze-testing-core-tests-r6" x="414.8" y="1630.4" textLength="963.8" 
clip-path="url(#breeze-testing-core-tests-line-66)">(TEXT)&#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="breeze-testing-core-tests-r5" x="0" y="1654.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-67)">│</text><text 
class="breeze-testing-core-tests-r5" x="414.8" y="1654.8" textLength="963.8" 
clip-path="url(#breeze-testing-core-tests-line-67)">[default:&#160;latest]&#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;&#16
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1679.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-68)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1679.2" textLength="183" 
clip-path="url(#breeze-testing-core-tests-line-68)">--mount-sources</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1679.2" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-68)">Choose&#160;scope&#160;of&#160;local&#160;sources&#160;th
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1703.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-69)">│</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1703.6" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-69)">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;&#1
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1728" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-70)">│</text><text 
class="breeze-testing-core-tests-r6" x="414.8" y="1728" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-70)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove&#160;|&#160;tests&#160;|&#160;providers-and-tests)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1752.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-71)">│</text><text 
class="breeze-testing-core-tests-r5" x="414.8" y="1752.4" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-71)">[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;&
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1776.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-72)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1776.8" textLength="317.2" 
clip-path="url(#breeze-testing-core-tests-line-72)">--skip-docker-compose-down</text><text
 class="breeze-testing-core-tests-r1" x="414.8" y="1776.8" textLength="549" 
clip-path="url(#breeze-testing-core-tests-line-72)">Skips&#160;running&#160;docker-compose&#160;dow
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1801.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-73)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1801.2" textLength="244" 
clip-path="url(#breeze-testing-core-tests-line-73)">--keep-env-variables</text><text
 class="breeze-testing-core-tests-r1" x="414.8" y="1801.2" textLength="1000.4" 
clip-path="url(#breeze-testing-core-tests-line-73)">Do&#160;not&#160;clear&#160;environment&#160;variabl
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1825.6" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1825.6" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-74)">
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1850" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-75)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1850" textLength="622.2" 
clip-path="url(#breeze-testing-core-tests-line-75)">&#160;Advanced&#160;flag&#160;for&#160;installing&#160;airflow&#160;in&#160;container&#160;</text><text
 class="breeze-testing-core-tests-r5" x="646.6" y="1850" textLength="793" 
clip-path="url(#breeze-testing-core-tes [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1874.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-76)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1874.4" textLength="378.2" 
clip-path="url(#breeze-testing-core-tests-line-76)">--airflow-constraints-reference</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="1874.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-76)">Constraint&#160;reference&#160;to&#160;u
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1898.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-77)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="1898.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-77)">(used&#160;in&#160;calculated&#160;constraints&#160;URL).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-t [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1923.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-78)">│</text><text 
class="breeze-testing-core-tests-r6" x="756.4" y="1923.2" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-78)">(TEXT)&#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="breeze-testing-core-tests-r5" x="0" y="1947.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-79)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1947.6" textLength="341.6" 
clip-path="url(#breeze-testing-core-tests-line-79)">--clean-airflow-installation</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="1947.6" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-79)">Clean&#160;the&#160;airflow&#160;installati
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1972" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-80)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="1972" textLength="158.6" 
clip-path="url(#breeze-testing-core-tests-line-80)">specified&#160;by&#160;</text><text
 class="breeze-testing-core-tests-r4" x="915" y="1972" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-80)">--use-airflow-version</text><text
 class="breeze-testing [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="1996.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-81)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1996.4" textLength="329.4" 
clip-path="url(#breeze-testing-core-tests-line-81)">--force-lowest-dependencies</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="1996.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-81)">Run&#160;tests&#160;for&#160;the&#160;lowest
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2020.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-82)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2020.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-82)">or&#160;selected&#160;provider&#160;if&#160;`Provider[PROVIDER_ID]`&#160;is&#160;used&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2020.8" textLength="12.2" 
clip-path="url(#breeze-testing- [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2045.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-83)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2045.2" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-83)">as&#160;test&#160;type.&#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="breeze-testing-core-tests-r5" x="0" y="2069.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-84)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2069.6" textLength="414.8" 
clip-path="url(#breeze-testing-core-tests-line-84)">--install-airflow-with-constraints</text><text
 class="breeze-testing-core-tests-r1" x="439.2" y="2069.6" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-84)">/</text><text 
class="breeze-testing-co [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2094" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-85)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2094" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-85)">determined&#160;from&#160;package&#160;or&#160;airflow&#160;version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2094"  [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2118.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-86)">│</text><text 
class="breeze-testing-core-tests-r5" x="756.4" y="2118.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-86)">[default:&#160;no-install-airflow-with-constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2118.4" textLength="12.2" 
clip-path=" [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2142.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-87)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2142.8" textLength="195.2" 
clip-path="url(#breeze-testing-core-tests-line-87)">--package-format</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2142.8" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-87)">Format&#160;of&#160;packages.</text><text
 class="breeze [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2167.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-88)">│</text><text 
class="breeze-testing-core-tests-r5" x="756.4" y="2167.2" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-88)">[default:&#160;wheel]&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2167.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-88)">│</text><text 
class="breeze-tes [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2191.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-89)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2191.6" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-89)">--use-airflow-version</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2191.6" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-89)">Use&#160;(reinstall&#160;at&#160;entry)&#160;Airfl
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2216" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-90)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2216" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-90)">can&#160;also&#160;be&#160;version&#160;(to&#160;install&#160;from&#160;PyPI),&#160;`none`,&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2216" textLength="12.2" 
clip-pa [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2240.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-91)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2240.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-91)">`wheel`,&#160;or&#160;`sdist`&#160;to&#160;install&#160;from&#160;`dist`&#160;folder,&#160;or&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2240.4" textLength="12.2" 
clip-path=" [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2264.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-92)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2264.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-92)">VCS&#160;URL&#160;to&#160;install&#160;from&#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="breeze-testing-core-tests-r5" x="0" y="2289.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-93)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2289.2" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-93)">(https://pip.pypa.io/en/stable/topics/vcs-support/).&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2289.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2313.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-94)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2313.6" textLength="97.6" 
clip-path="url(#breeze-testing-core-tests-line-94)">Implies&#160;</text><text 
class="breeze-testing-core-tests-r4" x="854" y="2313.6" textLength="183" 
clip-path="url(#breeze-testing-core-tests-line-94)">--mount-sources</text><text 
class="breeze-testing-core-tests-r [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2338" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-95)">│</text><text 
class="breeze-testing-core-tests-r6" x="756.4" y="2338" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-95)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2362.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-96)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2362.4" textLength="292.8" 
clip-path="url(#breeze-testing-core-tests-line-96)">--use-packages-from-dist</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2362.4" textLength="341.6" 
clip-path="url(#breeze-testing-core-tests-line-96)">Install&#160;all&#160;found&#160;packages&#160;
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2386.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-97)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2386.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-97)">type)&#160;from&#160;&#x27;dist&#x27;&#160;folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="23 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2411.2" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-98)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="2411.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-98)">
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2435.6" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-99)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="2435.6" textLength="195.2" 
clip-path="url(#breeze-testing-core-tests-line-99)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-core-tests-r5" x="219.6" y="2435.6" textLength="1220" 
clip-path="url(#breeze-testing-core-tests-line-99)">────────────────────────────────────────
 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2460" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-100)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2460" textLength="109.8" 
clip-path="url(#breeze-testing-core-tests-line-100)">--dry-run</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2460" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-100)">-D</text><text 
class="breeze-testing-core-tests-r1" x="207.4" y="2 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2484.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-101)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2484.4" textLength="109.8" 
clip-path="url(#breeze-testing-core-tests-line-101)">--verbose</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2484.4" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-101)">-v</text><text 
class="breeze-testing-core-tests-r1" x="207.4 [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2508.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-102)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2508.8" textLength="73.2" 
clip-path="url(#breeze-testing-core-tests-line-102)">--help</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2508.8" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-102)">-h</text><text 
class="breeze-testing-core-tests-r1" x="207.4" y= [...]
-</text><text class="breeze-testing-core-tests-r5" x="0" y="2533.2" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-103)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="2533.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-103)">
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1386.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-56)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1386.4" textLength="244" 
clip-path="url(#breeze-testing-core-tests-line-56)">--total-test-timeout</text><text
 class="breeze-testing-core-tests-r1" x="378.2" y="1386.4" textLength="1061.4" 
clip-path="url(#breeze-testing-core-tests-line-56)">Total&#160;test&#160;timeout&#160;in&#160;seconds.&#
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1410.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-57)">│</text><text 
class="breeze-testing-core-tests-r1" x="378.2" y="1410.8" textLength="1061.4" 
clip-path="url(#breeze-testing-core-tests-line-57)">there&#160;is&#160;an&#160;underlying&#160;pytest&#160;command&#160;that&#160;hangs,&#160;the&#160;process&#160;will&#160;be&#160;stop&#160;with&#160;system&#160;</text><text
 class="breeze-testing-core-tests-r5" [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1435.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-58)">│</text><text 
class="breeze-testing-core-tests-r1" x="378.2" y="1435.2" textLength="1061.4" 
clip-path="url(#breeze-testing-core-tests-line-58)">exit&#160;after&#160;that&#160;time.&#160;This&#160;should&#160;give&#160;a&#160;chance&#160;to&#160;upload&#160;logs&#160;as&#160;artifacts&#160;on&#160;CI.&#160;&#160;&#160;&#160;&#160;</text><text
 class="bree [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1459.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-59)">│</text><text 
class="breeze-testing-core-tests-r6" x="378.2" y="1459.6" textLength="1061.4" 
clip-path="url(#breeze-testing-core-tests-line-59)">(INTEGER)&#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;&#16
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1484" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1484" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-60)">
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1508.4" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-61)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1508.4" textLength="610" 
clip-path="url(#breeze-testing-core-tests-line-61)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text
 class="breeze-testing-core-tests-r5" x="634.4" y="1508.4" textLength="805.2" 
clip-path="url(#breeze-testing-core-tests-line-61)">── [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1532.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-62)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1532.8" textLength="170.8" 
clip-path="url(#breeze-testing-core-tests-line-62)">--upgrade-boto</text><text 
class="breeze-testing-core-tests-r1" x="341.6" y="1532.8" textLength="866.2" 
clip-path="url(#breeze-testing-core-tests-line-62)">Remove&#160;aiobotocore&#160;and&#160;upgrade&#160;botoco
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1557.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-63)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1557.2" textLength="268.4" 
clip-path="url(#breeze-testing-core-tests-line-63)">--downgrade-sqlalchemy</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1557.2" textLength="610" 
clip-path="url(#breeze-testing-core-tests-line-63)">Downgrade&#160;SQLAlchemy&#160;to&#160;minimum&#160
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1581.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-64)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1581.6" textLength="244" 
clip-path="url(#breeze-testing-core-tests-line-64)">--downgrade-pendulum</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1581.6" textLength="585.6" 
clip-path="url(#breeze-testing-core-tests-line-64)">Downgrade&#160;Pendulum&#160;to&#160;minimum&#160;sup
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1606" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-65)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1606" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-65)">--remove-arm-packages</text><text
 class="breeze-testing-core-tests-r1" x="341.6" y="1606" textLength="817.4" 
clip-path="url(#breeze-testing-core-tests-line-65)">Removes&#160;arm&#160;packages&#160;from&#160;the&#160;i
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1630.4" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1630.4" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-66)">
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1654.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-67)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1654.8" textLength="402.6" 
clip-path="url(#breeze-testing-core-tests-line-67)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-core-tests-r5" x="427" y="1654.8" textLength="1012.6" 
clip-path="url(#breeze-testing-core-tests-line-67)">──────── [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1679.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-68)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1679.2" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-68)">--github-repository</text><text
 class="breeze-testing-core-tests-r7" x="366" y="1679.2" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-68)">-g</text><text 
class="breeze-testing-core-tests-r1" x=" [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1703.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-69)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1703.6" textLength="134.2" 
clip-path="url(#breeze-testing-core-tests-line-69)">--image-tag</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1703.6" textLength="695.4" 
clip-path="url(#breeze-testing-core-tests-line-69)">Tag&#160;of&#160;the&#160;image&#160;which&#160;is&#160;used
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1728" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-70)">│</text><text 
class="breeze-testing-core-tests-r6" x="414.8" y="1728" textLength="963.8" 
clip-path="url(#breeze-testing-core-tests-line-70)">(TEXT)&#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="breeze-testing-core-tests-r5" x="0" y="1752.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-71)">│</text><text 
class="breeze-testing-core-tests-r5" x="414.8" y="1752.4" textLength="963.8" 
clip-path="url(#breeze-testing-core-tests-line-71)">[default:&#160;latest]&#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;&#16
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1776.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-72)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1776.8" textLength="183" 
clip-path="url(#breeze-testing-core-tests-line-72)">--mount-sources</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1776.8" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-72)">Choose&#160;scope&#160;of&#160;local&#160;sources&#160;th
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1801.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-73)">│</text><text 
class="breeze-testing-core-tests-r1" x="414.8" y="1801.2" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-73)">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;&#1
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1825.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-74)">│</text><text 
class="breeze-testing-core-tests-r6" x="414.8" y="1825.6" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-74)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove&#160;|&#160;tests&#160;|&#160;providers-and-tests)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1850" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-75)">│</text><text 
class="breeze-testing-core-tests-r5" x="414.8" y="1850" textLength="1024.8" 
clip-path="url(#breeze-testing-core-tests-line-75)">[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
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1874.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-76)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1874.4" textLength="317.2" 
clip-path="url(#breeze-testing-core-tests-line-76)">--skip-docker-compose-down</text><text
 class="breeze-testing-core-tests-r1" x="414.8" y="1874.4" textLength="549" 
clip-path="url(#breeze-testing-core-tests-line-76)">Skips&#160;running&#160;docker-compose&#160;dow
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1898.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-77)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1898.8" textLength="244" 
clip-path="url(#breeze-testing-core-tests-line-77)">--keep-env-variables</text><text
 class="breeze-testing-core-tests-r1" x="414.8" y="1898.8" textLength="1000.4" 
clip-path="url(#breeze-testing-core-tests-line-77)">Do&#160;not&#160;clear&#160;environment&#160;variabl
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1923.2" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-78)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="1923.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-78)">
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1947.6" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-79)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="1947.6" textLength="622.2" 
clip-path="url(#breeze-testing-core-tests-line-79)">&#160;Advanced&#160;flag&#160;for&#160;installing&#160;airflow&#160;in&#160;container&#160;</text><text
 class="breeze-testing-core-tests-r5" x="646.6" y="1947.6" textLength="793" 
clip-path="url(#breeze-testing-co [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1972" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-80)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="1972" textLength="378.2" 
clip-path="url(#breeze-testing-core-tests-line-80)">--airflow-constraints-reference</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="1972" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-80)">Constraint&#160;reference&#160;to&#160;use&#16
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="1996.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-81)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="1996.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-81)">(used&#160;in&#160;calculated&#160;constraints&#160;URL).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-t [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2020.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-82)">│</text><text 
class="breeze-testing-core-tests-r6" x="756.4" y="2020.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-82)">(TEXT)&#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="breeze-testing-core-tests-r5" x="0" y="2045.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-83)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2045.2" textLength="341.6" 
clip-path="url(#breeze-testing-core-tests-line-83)">--clean-airflow-installation</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2045.2" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-83)">Clean&#160;the&#160;airflow&#160;installati
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2069.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-84)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2069.6" textLength="158.6" 
clip-path="url(#breeze-testing-core-tests-line-84)">specified&#160;by&#160;</text><text
 class="breeze-testing-core-tests-r4" x="915" y="2069.6" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-84)">--use-airflow-version</text><text
 class="breeze-t [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2094" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-85)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2094" textLength="329.4" 
clip-path="url(#breeze-testing-core-tests-line-85)">--force-lowest-dependencies</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2094" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-85)">Run&#160;tests&#160;for&#160;the&#160;lowest&#160;
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2118.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-86)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2118.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-86)">or&#160;selected&#160;provider&#160;if&#160;`Provider[PROVIDER_ID]`&#160;is&#160;used&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2118.4" textLength="12.2" 
clip-path="url(#breeze-testing- [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2142.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-87)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2142.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-87)">as&#160;test&#160;type.&#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="breeze-testing-core-tests-r5" x="0" y="2167.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-88)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2167.2" textLength="414.8" 
clip-path="url(#breeze-testing-core-tests-line-88)">--install-airflow-with-constraints</text><text
 class="breeze-testing-core-tests-r1" x="439.2" y="2167.2" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-88)">/</text><text 
class="breeze-testing-co [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2191.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-89)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2191.6" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-89)">determined&#160;from&#160;package&#160;or&#160;airflow&#160;version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="21 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2216" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-90)">│</text><text 
class="breeze-testing-core-tests-r5" x="756.4" y="2216" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-90)">[default:&#160;no-install-airflow-with-constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2216" textLength="12.2" 
clip-path="url(#b [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2240.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-91)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2240.4" textLength="195.2" 
clip-path="url(#breeze-testing-core-tests-line-91)">--package-format</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2240.4" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-91)">Format&#160;of&#160;packages.</text><text
 class="breeze [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2264.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-92)">│</text><text 
class="breeze-testing-core-tests-r5" x="756.4" y="2264.8" textLength="231.8" 
clip-path="url(#breeze-testing-core-tests-line-92)">[default:&#160;wheel]&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2264.8" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-92)">│</text><text 
class="breeze-tes [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2289.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-93)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2289.2" textLength="256.2" 
clip-path="url(#breeze-testing-core-tests-line-93)">--use-airflow-version</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2289.2" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-93)">Use&#160;(reinstall&#160;at&#160;entry)&#160;Airfl
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2313.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-94)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2313.6" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-94)">can&#160;also&#160;be&#160;version&#160;(to&#160;install&#160;from&#160;PyPI),&#160;`none`,&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2313.6" textLength="12.2" c 
[...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2338" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-95)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2338" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-95)">`wheel`,&#160;or&#160;`sdist`&#160;to&#160;install&#160;from&#160;`dist`&#160;folder,&#160;or&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2338" textLength="12.2" 
clip-path="url(#b [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2362.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-96)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2362.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-96)">VCS&#160;URL&#160;to&#160;install&#160;from&#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="breeze-testing-core-tests-r5" x="0" y="2386.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-97)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2386.8" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-97)">(https://pip.pypa.io/en/stable/topics/vcs-support/).&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y="2386.8" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2411.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-98)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2411.2" textLength="97.6" 
clip-path="url(#breeze-testing-core-tests-line-98)">Implies&#160;</text><text 
class="breeze-testing-core-tests-r4" x="854" y="2411.2" textLength="183" 
clip-path="url(#breeze-testing-core-tests-line-98)">--mount-sources</text><text 
class="breeze-testing-core-tests-r [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2435.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-99)">│</text><text 
class="breeze-testing-core-tests-r6" x="756.4" y="2435.6" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-99)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5"  [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2460" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-100)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2460" textLength="292.8" 
clip-path="url(#breeze-testing-core-tests-line-100)">--use-packages-from-dist</text><text
 class="breeze-testing-core-tests-r1" x="756.4" y="2460" textLength="341.6" 
clip-path="url(#breeze-testing-core-tests-line-100)">Install&#160;all&#160;found&#160;packages&#160;(</
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2484.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-101)">│</text><text 
class="breeze-testing-core-tests-r1" x="756.4" y="2484.4" textLength="683.2" 
clip-path="url(#breeze-testing-core-tests-line-101)">type)&#160;from&#160;&#x27;dist&#x27;&#160;folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-core-tests-r5" x="1451.8" y=" [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2508.8" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-102)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="2508.8" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-102)">
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2533.2" 
textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-103)">╭─</text><text 
class="breeze-testing-core-tests-r5" x="24.4" y="2533.2" textLength="195.2" 
clip-path="url(#breeze-testing-core-tests-line-103)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-core-tests-r5" x="219.6" y="2533.2" textLength="1220" 
clip-path="url(#breeze-testing-core-tests-line-103)">─────────────────────────────────────
 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2557.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-104)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2557.6" textLength="109.8" 
clip-path="url(#breeze-testing-core-tests-line-104)">--dry-run</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2557.6" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-104)">-D</text><text 
class="breeze-testing-core-tests-r1" x="207.4 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2582" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-105)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2582" textLength="109.8" 
clip-path="url(#breeze-testing-core-tests-line-105)">--verbose</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2582" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-105)">-v</text><text 
class="breeze-testing-core-tests-r1" x="207.4" y="2 [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2606.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-106)">│</text><text 
class="breeze-testing-core-tests-r4" x="24.4" y="2606.4" textLength="73.2" 
clip-path="url(#breeze-testing-core-tests-line-106)">--help</text><text 
class="breeze-testing-core-tests-r7" x="158.6" y="2606.4" textLength="24.4" 
clip-path="url(#breeze-testing-core-tests-line-106)">-h</text><text 
class="breeze-testing-core-tests-r1" x="207.4" y= [...]
+</text><text class="breeze-testing-core-tests-r5" x="0" y="2630.8" 
textLength="1464" 
clip-path="url(#breeze-testing-core-tests-line-107)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-core-tests-r1" x="1464" y="2630.8" textLength="12.2" 
clip-path="url(#breeze-testing-core-tests-line-107)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_testing_core-tests.txt 
b/dev/breeze/doc/images/output_testing_core-tests.txt
index 11459f5794d..2131e0b05b7 100644
--- a/dev/breeze/doc/images/output_testing_core-tests.txt
+++ b/dev/breeze/doc/images/output_testing_core-tests.txt
@@ -1 +1 @@
-d65de9ad4a425e9f932fe0b2b7b09412
+5788aec67e9b3c4a650bea1403b438be
diff --git a/dev/breeze/doc/images/output_testing_providers-tests.svg 
b/dev/breeze/doc/images/output_testing_providers-tests.svg
index 32b78086c90..74a0de866da 100644
--- a/dev/breeze/doc/images/output_testing_providers-tests.svg
+++ b/dev/breeze/doc/images/output_testing_providers-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2856.0" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 2953.6" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-providers-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2805.0" />
+      <rect x="0" y="0" width="1463.0" height="2902.6" />
     </clipPath>
     <clipPath id="breeze-testing-providers-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -387,9 +387,21 @@
 <clipPath id="breeze-testing-providers-tests-line-113">
     <rect x="0" y="2758.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-testing-providers-tests-line-114">
+    <rect x="0" y="2783.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-providers-tests-line-115">
+    <rect x="0" y="2807.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-providers-tests-line-116">
+    <rect x="0" y="2831.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-testing-providers-tests-line-117">
+    <rect x="0" y="2856.3" 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="2854" rx="8"/><text 
class="breeze-testing-providers-tests-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;testing&#160;providers-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2951.6" rx="8"/><text 
class="breeze-testing-providers-tests-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;testing&#160;providers-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"/>
@@ -457,63 +469,67 @@
 </text><text class="breeze-testing-providers-tests-r5" x="0" y="1362" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-55)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1362" textLength="170.8" 
clip-path="url(#breeze-testing-providers-tests-line-55)">--skip-cleanup</text><text
 class="breeze-testing-providers-tests-r1" x="378.2" y="1362" textLength="732" 
clip-path="url(#breeze-testing-providers-tests-line-55)">Skip&#160;cleanup&#160;of&#160;temp
 [...]
 </text><text class="breeze-testing-providers-tests-r5" x="0" y="1386.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-56)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1386.4" 
textLength="207.4" 
clip-path="url(#breeze-testing-providers-tests-line-56)">--debug-resources</text><text
 class="breeze-testing-providers-tests-r1" x="378.2" y="1386.4" 
textLength="768.6" 
clip-path="url(#breeze-testing-providers-tests-line-56)">Whether&#160;to&#160;sho
 [...]
 </text><text class="breeze-testing-providers-tests-r5" x="0" y="1410.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-57)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1410.8" textLength="305" 
clip-path="url(#breeze-testing-providers-tests-line-57)">--include-success-outputs</text><text
 class="breeze-testing-providers-tests-r1" x="378.2" y="1410.8" 
textLength="927.2" 
clip-path="url(#breeze-testing-providers-tests-line-57)">Whether&#160;to&#1 
[...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1435.2" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-58)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1435.2" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-58)">
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1459.6" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-59)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1459.6" textLength="610" 
clip-path="url(#breeze-testing-providers-tests-line-59)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="634.4" y="1459.6" 
textLength="805.2" clip-path="url(#breeze-testin [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1484" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-60)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1484" textLength="170.8" 
clip-path="url(#breeze-testing-providers-tests-line-60)">--upgrade-boto</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1484" 
textLength="866.2" 
clip-path="url(#breeze-testing-providers-tests-line-60)">Remove&#160;aiobotocore&#160;and&
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1508.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-61)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1508.4" 
textLength="268.4" 
clip-path="url(#breeze-testing-providers-tests-line-61)">--downgrade-sqlalchemy</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1508.4" 
textLength="610" 
clip-path="url(#breeze-testing-providers-tests-line-61)">Downgrade&#160;SQLAlc 
[...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1532.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-62)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1532.8" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-62)">--downgrade-pendulum</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1532.8" 
textLength="585.6" 
clip-path="url(#breeze-testing-providers-tests-line-62)">Downgrade&#160;Pendulum
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1557.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-63)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1557.2" 
textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-63)">--remove-arm-packages</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1557.2" 
textLength="817.4" 
clip-path="url(#breeze-testing-providers-tests-line-63)">Removes&#160;arm&#16 
[...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1581.6" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-64)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1581.6" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-64)">
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1606" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-65)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1606" textLength="402.6" 
clip-path="url(#breeze-testing-providers-tests-line-65)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="427" y="1606" textLength="1012.6" 
clip-path="url(#breeze-testing-providers- [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1630.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-66)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1630.4" 
textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-66)">--github-repository</text><text
 class="breeze-testing-providers-tests-r6" x="366" y="1630.4" textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-66)">-g</text><text 
class="bre [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1654.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-67)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1654.8" 
textLength="134.2" 
clip-path="url(#breeze-testing-providers-tests-line-67)">--image-tag</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1654.8" 
textLength="695.4" 
clip-path="url(#breeze-testing-providers-tests-line-67)">Tag&#160;of&#160;the&#160;imag
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1679.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-68)">│</text><text 
class="breeze-testing-providers-tests-r7" x="414.8" y="1679.2" 
textLength="963.8" 
clip-path="url(#breeze-testing-providers-tests-line-68)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="1703.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-69)">│</text><text 
class="breeze-testing-providers-tests-r5" x="414.8" y="1703.6" 
textLength="963.8" 
clip-path="url(#breeze-testing-providers-tests-line-69)">[default:&#160;latest]&#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="breeze-testing-providers-tests-r5" x="0" y="1728" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-70)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1728" textLength="183" 
clip-path="url(#breeze-testing-providers-tests-line-70)">--mount-sources</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1728" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-70)">Choose&#160;scope&#160;of&#160;lo
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1752.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-71)">│</text><text 
class="breeze-testing-providers-tests-r1" x="414.8" y="1752.4" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-71)">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;&
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1776.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-72)">│</text><text 
class="breeze-testing-providers-tests-r7" x="414.8" y="1776.8" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-72)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove&#160;|&#160;tests&#160;|&#160;providers-and-tests)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1801.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-73)">│</text><text 
class="breeze-testing-providers-tests-r5" x="414.8" y="1801.2" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-73)">[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
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1825.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-74)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1825.6" 
textLength="317.2" 
clip-path="url(#breeze-testing-providers-tests-line-74)">--skip-docker-compose-down</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1825.6" 
textLength="549" 
clip-path="url(#breeze-testing-providers-tests-line-74)">Skips&#160;runnin [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1850" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-75)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1850" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-75)">--keep-env-variables</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1850" 
textLength="1000.4" 
clip-path="url(#breeze-testing-providers-tests-line-75)">Do&#160;not&#160;clear&#160;
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1874.4" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-76)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1874.4" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-76)">
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1898.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-77)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1898.8" 
textLength="622.2" 
clip-path="url(#breeze-testing-providers-tests-line-77)">&#160;Advanced&#160;flag&#160;for&#160;installing&#160;airflow&#160;in&#160;container&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="646.6" y="1898.8" 
textLength="793" clip-pat [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1923.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-78)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1923.2" 
textLength="378.2" 
clip-path="url(#breeze-testing-providers-tests-line-78)">--airflow-constraints-reference</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="1923.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-78)">Constraint [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1947.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-79)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="1947.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-79)">(used&#160;in&#160;calculated&#160;constraints&#160;URL).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="b [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1972" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-80)">│</text><text 
class="breeze-testing-providers-tests-r7" x="756.4" y="1972" textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-80)">(TEXT)&#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;&#16
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="1996.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-81)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1996.4" 
textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-81)">--clean-airflow-installation</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="1996.4" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-81)">Clean&#160;th [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2020.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-82)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2020.8" 
textLength="158.6" 
clip-path="url(#breeze-testing-providers-tests-line-82)">specified&#160;by&#160;</text><text
 class="breeze-testing-providers-tests-r4" x="915" y="2020.8" 
textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-82)">--use-airflow-versi 
[...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2045.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-83)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2045.2" 
textLength="329.4" 
clip-path="url(#breeze-testing-providers-tests-line-83)">--force-lowest-dependencies</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2045.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-83)">Run&#160;tests [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2069.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-84)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2069.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-84)">or&#160;selected&#160;provider&#160;if&#160;`Provider[PROVIDER_ID]`&#160;is&#160;used&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2069.6" 
textLength="12.2" clip-p [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2094" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-85)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2094" textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-85)">as&#160;test&#160;type.&#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="breeze-testing-providers-tests-r5" x="0" y="2118.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-86)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2118.4" 
textLength="414.8" 
clip-path="url(#breeze-testing-providers-tests-line-86)">--install-airflow-with-constraints</text><text
 class="breeze-testing-providers-tests-r1" x="439.2" y="2118.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-86)">/</text> [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2142.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-87)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2142.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-87)">determined&#160;from&#160;package&#160;or&#160;airflow&#160;version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-t [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2167.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-88)">│</text><text 
class="breeze-testing-providers-tests-r5" x="756.4" y="2167.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-88)">[default:&#160;no-install-airflow-with-constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2167.2" text [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2191.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-89)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2191.6" 
textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-89)">--package-format</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2191.6" 
textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-89)">Format&#160;of&#160;packa
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2216" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-90)">│</text><text 
class="breeze-testing-providers-tests-r5" x="756.4" y="2216" textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-90)">[default:&#160;wheel]&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2216" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-90)">│</text [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2240.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-91)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2240.4" 
textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-91)">--use-airflow-version</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2240.4" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-91)">Use&#160;(reinstall& 
[...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2264.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-92)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2264.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-92)">can&#160;also&#160;be&#160;version&#160;(to&#160;install&#160;from&#160;PyPI),&#160;`none`,&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="22 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2289.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-93)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2289.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-93)">`wheel`,&#160;or&#160;`sdist`&#160;to&#160;install&#160;from&#160;`dist`&#160;folder,&#160;or&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2289.2" text [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2313.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-94)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2313.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-94)">VCS&#160;URL&#160;to&#160;install&#160;from&#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="breeze-testing-providers-tests-r5" x="0" y="2338" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-95)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2338" textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-95)">(https://pip.pypa.io/en/stable/topics/vcs-support/).&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2338" 
textLength="12.2" clip-path="url(#breeze-test [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2362.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-96)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2362.4" 
textLength="97.6" 
clip-path="url(#breeze-testing-providers-tests-line-96)">Implies&#160;</text><text
 class="breeze-testing-providers-tests-r4" x="854" y="2362.4" textLength="183" 
clip-path="url(#breeze-testing-providers-tests-line-96)">--mount-sources</text><text
 clas [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2386.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-97)">│</text><text 
class="breeze-testing-providers-tests-r7" x="756.4" y="2386.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-97)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-tes [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2411.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-98)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2411.2" 
textLength="292.8" 
clip-path="url(#breeze-testing-providers-tests-line-98)">--use-packages-from-dist</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2411.2" 
textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-98)">Install&#160;all& [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2435.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-99)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2435.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-99)">type)&#160;from&#160;&#x27;dist&#x27;&#160;folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-t [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2460" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-100)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2460" textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-100)">
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2484.4" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-101)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="2484.4" 
textLength="512.4" 
clip-path="url(#breeze-testing-providers-tests-line-101)">&#160;Advanced&#160;flag&#160;for&#160;provider&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="536.8" y="2484.4" 
textLength="902.8" clip-path="url(#br [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2508.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-102)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2508.8" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-102)">--excluded-providers</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2508.8" 
textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-102)">JSON-string&#160;of&#1
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2533.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-103)">│</text><text 
class="breeze-testing-providers-tests-r1" x="463.6" y="2533.2" textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-103)">({&#x27;3.12&#x27;:&#160;[&#x27;provider&#x27;]})&#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="breeze-testing-providers-tests-r5" x="0" y="2557.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-104)">│</text><text 
class="breeze-testing-providers-tests-r7" x="463.6" y="2557.6" textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-104)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="2582" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-105)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2582" textLength="390.4" 
clip-path="url(#breeze-testing-providers-tests-line-105)">--providers-constraints-location</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2582" 
textLength="927.2" 
clip-path="url(#breeze-testing-providers-tests-line-105)">Location&#16 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2606.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-106)">│</text><text 
class="breeze-testing-providers-tests-r7" x="463.6" y="2606.4" 
textLength="927.2" 
clip-path="url(#breeze-testing-providers-tests-line-106)">(TEXT)&#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;&#16
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2630.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-107)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2630.8" 
textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-107)">--providers-skip-constraints</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2630.8" 
textLength="597.8" 
clip-path="url(#breeze-testing-providers-tests-line-107)">Do&#160;no [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2655.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-108)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2655.2" 
textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-108)">--skip-providers</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2655.2" 
textLength="768.6" 
clip-path="url(#breeze-testing-providers-tests-line-108)">Space-separated&#160;l
 [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2679.6" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-109)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2679.6" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-109)">
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2704" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-110)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="2704" textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-110)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="219.6" y="2704" textLength="1220" 
clip-path="url(#breeze-testing-providers-tests-line-110)">───────────── [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2728.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-111)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2728.4" 
textLength="109.8" 
clip-path="url(#breeze-testing-providers-tests-line-111)">--dry-run</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2728.4" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-111)">-D</text><text 
class="breeze-t [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2752.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-112)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2752.8" 
textLength="109.8" 
clip-path="url(#breeze-testing-providers-tests-line-112)">--verbose</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2752.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-112)">-v</text><text 
class="breeze-t [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2777.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-113)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2777.2" textLength="73.2" 
clip-path="url(#breeze-testing-providers-tests-line-113)">--help</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2777.2" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-113)">-h</text><text 
class="breeze-testi [...]
-</text><text class="breeze-testing-providers-tests-r5" x="0" y="2801.6" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-114)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2801.6" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-114)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1435.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-58)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1435.2" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-58)">--total-test-timeout</text><text
 class="breeze-testing-providers-tests-r1" x="378.2" y="1435.2" 
textLength="1061.4" 
clip-path="url(#breeze-testing-providers-tests-line-58)">Total&#160;test&#160;t 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1459.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-59)">│</text><text 
class="breeze-testing-providers-tests-r1" x="378.2" y="1459.6" 
textLength="1061.4" 
clip-path="url(#breeze-testing-providers-tests-line-59)">there&#160;is&#160;an&#160;underlying&#160;pytest&#160;command&#160;that&#160;hangs,&#160;the&#160;process&#160;will&#160;be&#160;stop&#160;with&#160;system&#160;</text><text
 class="breeze-te [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1484" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-60)">│</text><text 
class="breeze-testing-providers-tests-r1" x="378.2" y="1484" 
textLength="1061.4" 
clip-path="url(#breeze-testing-providers-tests-line-60)">exit&#160;after&#160;that&#160;time.&#160;This&#160;should&#160;give&#160;a&#160;chance&#160;to&#160;upload&#160;logs&#160;as&#160;artifacts&#160;on&#160;CI.&#160;&#160;&#160;&#160;&#160;</text><
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1508.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-61)">│</text><text 
class="breeze-testing-providers-tests-r7" x="378.2" y="1508.4" 
textLength="1061.4" 
clip-path="url(#breeze-testing-providers-tests-line-61)">(INTEGER)&#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="breeze-testing-providers-tests-r5" x="0" y="1532.8" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-62)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1532.8" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-62)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1557.2" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-63)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1557.2" textLength="610" 
clip-path="url(#breeze-testing-providers-tests-line-63)">&#160;Upgrading/downgrading/removing&#160;selected&#160;packages&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="634.4" y="1557.2" 
textLength="805.2" clip-path="url(#breeze-testin [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1581.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-64)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1581.6" 
textLength="170.8" 
clip-path="url(#breeze-testing-providers-tests-line-64)">--upgrade-boto</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1581.6" 
textLength="866.2" 
clip-path="url(#breeze-testing-providers-tests-line-64)">Remove&#160;aiobotocore&#16
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1606" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-65)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1606" textLength="268.4" 
clip-path="url(#breeze-testing-providers-tests-line-65)">--downgrade-sqlalchemy</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1606" textLength="610" 
clip-path="url(#breeze-testing-providers-tests-line-65)">Downgrade&#160;SQLAlchemy&#
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1630.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-66)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1630.4" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-66)">--downgrade-pendulum</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1630.4" 
textLength="585.6" 
clip-path="url(#breeze-testing-providers-tests-line-66)">Downgrade&#160;Pendulum
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1654.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-67)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1654.8" 
textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-67)">--remove-arm-packages</text><text
 class="breeze-testing-providers-tests-r1" x="341.6" y="1654.8" 
textLength="817.4" 
clip-path="url(#breeze-testing-providers-tests-line-67)">Removes&#160;arm&#16 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1679.2" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-68)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1679.2" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-68)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1703.6" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-69)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1703.6" 
textLength="402.6" 
clip-path="url(#breeze-testing-providers-tests-line-69)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="427" y="1703.6" 
textLength="1012.6" clip-path="url(#breeze-testing-prov [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1728" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-70)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1728" textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-70)">--github-repository</text><text
 class="breeze-testing-providers-tests-r6" x="366" y="1728" textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-70)">-g</text><text 
class="breeze-te [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1752.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-71)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1752.4" 
textLength="134.2" 
clip-path="url(#breeze-testing-providers-tests-line-71)">--image-tag</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1752.4" 
textLength="695.4" 
clip-path="url(#breeze-testing-providers-tests-line-71)">Tag&#160;of&#160;the&#160;imag
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1776.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-72)">│</text><text 
class="breeze-testing-providers-tests-r7" x="414.8" y="1776.8" 
textLength="963.8" 
clip-path="url(#breeze-testing-providers-tests-line-72)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="1801.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-73)">│</text><text 
class="breeze-testing-providers-tests-r5" x="414.8" y="1801.2" 
textLength="963.8" 
clip-path="url(#breeze-testing-providers-tests-line-73)">[default:&#160;latest]&#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="breeze-testing-providers-tests-r5" x="0" y="1825.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-74)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1825.6" textLength="183" 
clip-path="url(#breeze-testing-providers-tests-line-74)">--mount-sources</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1825.6" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-74)">Choose&#160;scope&#160;of&#
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1850" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-75)">│</text><text 
class="breeze-testing-providers-tests-r1" x="414.8" y="1850" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-75)">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
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1874.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-76)">│</text><text 
class="breeze-testing-providers-tests-r7" x="414.8" y="1874.4" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-76)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove&#160;|&#160;tests&#160;|&#160;providers-and-tests)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1898.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-77)">│</text><text 
class="breeze-testing-providers-tests-r5" x="414.8" y="1898.8" 
textLength="1024.8" 
clip-path="url(#breeze-testing-providers-tests-line-77)">[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
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1923.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-78)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1923.2" 
textLength="317.2" 
clip-path="url(#breeze-testing-providers-tests-line-78)">--skip-docker-compose-down</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1923.2" 
textLength="549" 
clip-path="url(#breeze-testing-providers-tests-line-78)">Skips&#160;runnin [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1947.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-79)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="1947.6" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-79)">--keep-env-variables</text><text
 class="breeze-testing-providers-tests-r1" x="414.8" y="1947.6" 
textLength="1000.4" 
clip-path="url(#breeze-testing-providers-tests-line-79)">Do&#160;not&#160;clear 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1972" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-80)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="1972" textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-80)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="1996.4" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-81)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="1996.4" 
textLength="622.2" 
clip-path="url(#breeze-testing-providers-tests-line-81)">&#160;Advanced&#160;flag&#160;for&#160;installing&#160;airflow&#160;in&#160;container&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="646.6" y="1996.4" 
textLength="793" clip-pat [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2020.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-82)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2020.8" 
textLength="378.2" 
clip-path="url(#breeze-testing-providers-tests-line-82)">--airflow-constraints-reference</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2020.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-82)">Constraint [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2045.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-83)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2045.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-83)">(used&#160;in&#160;calculated&#160;constraints&#160;URL).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="b [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2069.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-84)">│</text><text 
class="breeze-testing-providers-tests-r7" x="756.4" y="2069.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-84)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="2094" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-85)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2094" textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-85)">--clean-airflow-installation</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2094" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-85)">Clean&#160;the&#160 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2118.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-86)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2118.4" 
textLength="158.6" 
clip-path="url(#breeze-testing-providers-tests-line-86)">specified&#160;by&#160;</text><text
 class="breeze-testing-providers-tests-r4" x="915" y="2118.4" 
textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-86)">--use-airflow-versi 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2142.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-87)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2142.8" 
textLength="329.4" 
clip-path="url(#breeze-testing-providers-tests-line-87)">--force-lowest-dependencies</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2142.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-87)">Run&#160;tests [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2167.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-88)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2167.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-88)">or&#160;selected&#160;provider&#160;if&#160;`Provider[PROVIDER_ID]`&#160;is&#160;used&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2167.2" 
textLength="12.2" clip-p [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2191.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-89)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2191.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-89)">as&#160;test&#160;type.&#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="breeze-testing-providers-tests-r5" x="0" y="2216" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-90)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2216" textLength="414.8" 
clip-path="url(#breeze-testing-providers-tests-line-90)">--install-airflow-with-constraints</text><text
 class="breeze-testing-providers-tests-r1" x="439.2" y="2216" textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-90)">/</text><text  [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2240.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-91)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2240.4" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-91)">determined&#160;from&#160;package&#160;or&#160;airflow&#160;version.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-t [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2264.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-92)">│</text><text 
class="breeze-testing-providers-tests-r5" x="756.4" y="2264.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-92)">[default:&#160;no-install-airflow-with-constraints]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2264.8" text [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2289.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-93)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2289.2" 
textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-93)">--package-format</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2289.2" 
textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-93)">Format&#160;of&#160;packa
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2313.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-94)">│</text><text 
class="breeze-testing-providers-tests-r5" x="756.4" y="2313.6" 
textLength="231.8" 
clip-path="url(#breeze-testing-providers-tests-line-94)">[default:&#160;wheel]&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2313.6" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-94)">│ 
[...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2338" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-95)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2338" textLength="256.2" 
clip-path="url(#breeze-testing-providers-tests-line-95)">--use-airflow-version</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2338" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-95)">Use&#160;(reinstall&#160;a
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2362.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-96)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2362.4" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-96)">can&#160;also&#160;be&#160;version&#160;(to&#160;install&#160;from&#160;PyPI),&#160;`none`,&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="23 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2386.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-97)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2386.8" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-97)">`wheel`,&#160;or&#160;`sdist`&#160;to&#160;install&#160;from&#160;`dist`&#160;folder,&#160;or&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2386.8" text [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2411.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-98)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2411.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-98)">VCS&#160;URL&#160;to&#160;install&#160;from&#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="breeze-testing-providers-tests-r5" x="0" y="2435.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-99)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2435.6" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-99)">(https://pip.pypa.io/en/stable/topics/vcs-support/).&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="1451.8" y="2435.6" 
textLength="12.2" clip-path="url(#breez [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2460" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-100)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2460" textLength="97.6" 
clip-path="url(#breeze-testing-providers-tests-line-100)">Implies&#160;</text><text
 class="breeze-testing-providers-tests-r4" x="854" y="2460" textLength="183" 
clip-path="url(#breeze-testing-providers-tests-line-100)">--mount-sources</text><text
 class=" [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2484.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-101)">│</text><text 
class="breeze-testing-providers-tests-r7" x="756.4" y="2484.4" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-101)">(none&#160;|&#160;wheel&#160;|&#160;sdist&#160;|&#160;&lt;airflow_version&gt;)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-t [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2508.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-102)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2508.8" 
textLength="292.8" 
clip-path="url(#breeze-testing-providers-tests-line-102)">--use-packages-from-dist</text><text
 class="breeze-testing-providers-tests-r1" x="756.4" y="2508.8" 
textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-102)">Install&#160;a [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2533.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-103)">│</text><text 
class="breeze-testing-providers-tests-r1" x="756.4" y="2533.2" 
textLength="683.2" 
clip-path="url(#breeze-testing-providers-tests-line-103)">type)&#160;from&#160;&#x27;dist&#x27;&#160;folder&#160;when&#160;entering&#160;breeze.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-testing-providers [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2557.6" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-104)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2557.6" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-104)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2582" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-105)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="2582" textLength="512.4" 
clip-path="url(#breeze-testing-providers-tests-line-105)">&#160;Advanced&#160;flag&#160;for&#160;provider&#160;tests&#160;command&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="536.8" y="2582" 
textLength="902.8" clip-path="url(#breeze-t [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2606.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-106)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2606.4" textLength="244" 
clip-path="url(#breeze-testing-providers-tests-line-106)">--excluded-providers</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2606.4" 
textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-106)">JSON-string&#160;of&#1
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2630.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-107)">│</text><text 
class="breeze-testing-providers-tests-r1" x="463.6" y="2630.8" textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-107)">({&#x27;3.12&#x27;:&#160;[&#x27;provider&#x27;]})&#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="breeze-testing-providers-tests-r5" x="0" y="2655.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-108)">│</text><text 
class="breeze-testing-providers-tests-r7" x="463.6" y="2655.2" textLength="976" 
clip-path="url(#breeze-testing-providers-tests-line-108)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="2679.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-109)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2679.6" 
textLength="390.4" 
clip-path="url(#breeze-testing-providers-tests-line-109)">--providers-constraints-location</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2679.6" 
textLength="927.2" 
clip-path="url(#breeze-testing-providers-tests-line-109)">Locati [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2704" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-110)">│</text><text 
class="breeze-testing-providers-tests-r7" x="463.6" y="2704" textLength="927.2" 
clip-path="url(#breeze-testing-providers-tests-line-110)">(TEXT)&#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="breeze-testing-providers-tests-r5" x="0" y="2728.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-111)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2728.4" 
textLength="341.6" 
clip-path="url(#breeze-testing-providers-tests-line-111)">--providers-skip-constraints</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2728.4" 
textLength="597.8" 
clip-path="url(#breeze-testing-providers-tests-line-111)">Do&#160;no [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2752.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-112)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2752.8" 
textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-112)">--skip-providers</text><text
 class="breeze-testing-providers-tests-r1" x="463.6" y="2752.8" 
textLength="768.6" 
clip-path="url(#breeze-testing-providers-tests-line-112)">Space-separated&#160;l
 [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2777.2" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-113)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2777.2" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-113)">
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2801.6" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-114)">╭─</text><text 
class="breeze-testing-providers-tests-r5" x="24.4" y="2801.6" 
textLength="195.2" 
clip-path="url(#breeze-testing-providers-tests-line-114)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-providers-tests-r5" x="219.6" y="2801.6" 
textLength="1220" 
clip-path="url(#breeze-testing-providers-tests-line-114)">─────── [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2826" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-115)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2826" textLength="109.8" 
clip-path="url(#breeze-testing-providers-tests-line-115)">--dry-run</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2826" textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-115)">-D</text><text 
class="breeze-testing [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2850.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-116)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2850.4" 
textLength="109.8" 
clip-path="url(#breeze-testing-providers-tests-line-116)">--verbose</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2850.4" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-116)">-v</text><text 
class="breeze-t [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2874.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-providers-tests-line-117)">│</text><text 
class="breeze-testing-providers-tests-r4" x="24.4" y="2874.8" textLength="73.2" 
clip-path="url(#breeze-testing-providers-tests-line-117)">--help</text><text 
class="breeze-testing-providers-tests-r6" x="158.6" y="2874.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-providers-tests-line-117)">-h</text><text 
class="breeze-testi [...]
+</text><text class="breeze-testing-providers-tests-r5" x="0" y="2899.2" 
textLength="1464" 
clip-path="url(#breeze-testing-providers-tests-line-118)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-providers-tests-r1" x="1464" y="2899.2" 
textLength="12.2" clip-path="url(#breeze-testing-providers-tests-line-118)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_testing_providers-tests.txt 
b/dev/breeze/doc/images/output_testing_providers-tests.txt
index e2fa64d8bd1..24aa33f5a8d 100644
--- a/dev/breeze/doc/images/output_testing_providers-tests.txt
+++ b/dev/breeze/doc/images/output_testing_providers-tests.txt
@@ -1 +1 @@
-28604d613d42ec78c6472de9e27c0495
+89c2fc8b9617404315d048119594c1dc
diff --git a/dev/breeze/doc/images/output_testing_task-sdk-tests.svg 
b/dev/breeze/doc/images/output_testing_task-sdk-tests.svg
index 0e4f0b3e78d..a8e91851eca 100644
--- a/dev/breeze/doc/images/output_testing_task-sdk-tests.svg
+++ b/dev/breeze/doc/images/output_testing_task-sdk-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1148.0" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 952.8" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-testing-task-sdk-tests-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="1097.0" />
+      <rect x="0" y="0" width="1463.0" height="901.8" />
     </clipPath>
     <clipPath id="breeze-testing-task-sdk-tests-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -153,33 +153,9 @@
 <clipPath id="breeze-testing-task-sdk-tests-line-35">
     <rect x="0" y="855.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-36">
-    <rect x="0" y="879.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-37">
-    <rect x="0" y="904.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-38">
-    <rect x="0" y="928.7" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-39">
-    <rect x="0" y="953.1" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-40">
-    <rect x="0" y="977.5" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-41">
-    <rect x="0" y="1001.9" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-42">
-    <rect x="0" y="1026.3" width="1464" height="24.65"/>
-            </clipPath>
-<clipPath id="breeze-testing-task-sdk-tests-line-43">
-    <rect x="0" y="1050.7" 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="1146" rx="8"/><text 
class="breeze-testing-task-sdk-tests-title" fill="#c5c8c6" text-anchor="middle" 
x="740" y="27">Command:&#160;testing&#160;task-sdk-tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="950.8" rx="8"/><text 
class="breeze-testing-task-sdk-tests-title" fill="#c5c8c6" text-anchor="middle" 
x="740" y="27">Command:&#160;testing&#160;task-sdk-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"/>
@@ -221,19 +197,11 @@
 </text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="727.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-29)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="727.6" textLength="317.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-29)">--skip-docker-compose-down</text><text
 class="breeze-testing-task-sdk-tests-r1" x="414.8" y="727.6" textLength="549" 
clip-path="url(#breeze-testing-task-sdk-tests-line-29)">Skips&#160;running&#160;do
 [...]
 </text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="752" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-30)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="752" textLength="244" 
clip-path="url(#breeze-testing-task-sdk-tests-line-30)">--keep-env-variables</text><text
 class="breeze-testing-task-sdk-tests-r1" x="414.8" y="752" textLength="1000.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-30)">Do&#160;not&#160;clear&#160;environme
 [...]
 </text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="776.4" 
textLength="1464" 
clip-path="url(#breeze-testing-task-sdk-tests-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-task-sdk-tests-r1" x="1464" y="776.4" textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-31)">
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="800.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-32)">╭─</text><text 
class="breeze-testing-task-sdk-tests-r5" x="24.4" y="800.8" textLength="439.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-32)">&#160;Options&#160;for&#160;parallel&#160;test&#160;commands&#160;</text><text
 class="breeze-testing-task-sdk-tests-r5" x="463.6" y="800.8" textLength="976" 
clip-path="url(#breeze-testing-task-sdk-t [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="825.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="825.2" textLength="158.6" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">--parallelism</text><text
 class="breeze-testing-task-sdk-tests-r1" x="378.2" y="825.2" textLength="915" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">Maximum&#160;number&#160;of&#160;proces
 [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="849.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-34)">│</text><text 
class="breeze-testing-task-sdk-tests-r6" x="378.2" y="849.6" textLength="915" 
clip-path="url(#breeze-testing-task-sdk-tests-line-34)">(INTEGER&#160;RANGE)&#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="breeze-testing-task-sdk-tests-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-35)">│</text><text 
class="breeze-testing-task-sdk-tests-r5" x="378.2" y="874" textLength="915" 
clip-path="url(#breeze-testing-task-sdk-tests-line-35)">[default:&#160;4;&#160;1&lt;=x&lt;=8]&#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="breeze-testing-task-sdk-tests-r5" x="0" y="898.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-36)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="898.4" textLength="170.8" 
clip-path="url(#breeze-testing-task-sdk-tests-line-36)">--skip-cleanup</text><text
 class="breeze-testing-task-sdk-tests-r1" x="378.2" y="898.4" textLength="732" 
clip-path="url(#breeze-testing-task-sdk-tests-line-36)">Skip&#160;cleanup&#160;of&#160;tempora
 [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="922.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-37)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="922.8" textLength="207.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-37)">--debug-resources</text><text
 class="breeze-testing-task-sdk-tests-r1" x="378.2" y="922.8" 
textLength="768.6" 
clip-path="url(#breeze-testing-task-sdk-tests-line-37)">Whether&#160;to&#160;show&#160;re
 [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="947.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-38)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="947.2" textLength="305" 
clip-path="url(#breeze-testing-task-sdk-tests-line-38)">--include-success-outputs</text><text
 class="breeze-testing-task-sdk-tests-r1" x="378.2" y="947.2" 
textLength="927.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-38)">Whether&#160;to&#160;includ
 [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="971.6" 
textLength="1464" 
clip-path="url(#breeze-testing-task-sdk-tests-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-task-sdk-tests-r1" x="1464" y="971.6" textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-39)">
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="996" 
textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-40)">╭─</text><text 
class="breeze-testing-task-sdk-tests-r5" x="24.4" y="996" textLength="195.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-40)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-task-sdk-tests-r5" x="219.6" y="996" textLength="1220" 
clip-path="url(#breeze-testing-task-sdk-tests-line-40)">─────────────────────────
 [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="1020.4" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-41)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="1020.4" textLength="109.8" 
clip-path="url(#breeze-testing-task-sdk-tests-line-41)">--dry-run</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="1020.4" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-41)">-D</text><text 
class="breeze-testing-ta [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="1044.8" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-42)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="1044.8" textLength="109.8" 
clip-path="url(#breeze-testing-task-sdk-tests-line-42)">--verbose</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="1044.8" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-42)">-v</text><text 
class="breeze-testing-ta [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="1069.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-43)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="1069.2" textLength="73.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-43)">--help</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="1069.2" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-43)">-h</text><text 
class="breeze-testing-task-s [...]
-</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="1093.6" 
textLength="1464" 
clip-path="url(#breeze-testing-task-sdk-tests-line-44)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-task-sdk-tests-r1" x="1464" y="1093.6" textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-44)">
+</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="800.8" 
textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-32)">╭─</text><text 
class="breeze-testing-task-sdk-tests-r5" x="24.4" y="800.8" textLength="195.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-32)">&#160;Common&#160;options&#160;</text><text
 class="breeze-testing-task-sdk-tests-r5" x="219.6" y="800.8" textLength="1220" 
clip-path="url(#breeze-testing-task-sdk-tests-line-32)">─────────────────── 
[...]
+</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="825.2" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="825.2" textLength="109.8" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">--dry-run</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="825.2" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-33)">-D</text><text 
class="breeze-testing-task- [...]
+</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="849.6" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-34)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="849.6" textLength="109.8" 
clip-path="url(#breeze-testing-task-sdk-tests-line-34)">--verbose</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="849.6" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-34)">-v</text><text 
class="breeze-testing-task- [...]
+</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="874" 
textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-35)">│</text><text 
class="breeze-testing-task-sdk-tests-r4" x="24.4" y="874" textLength="73.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-35)">--help</text><text 
class="breeze-testing-task-sdk-tests-r7" x="158.6" y="874" textLength="24.4" 
clip-path="url(#breeze-testing-task-sdk-tests-line-35)">-h</text><text 
class="breeze-testing-task-sdk-tests- [...]
+</text><text class="breeze-testing-task-sdk-tests-r5" x="0" y="898.4" 
textLength="1464" 
clip-path="url(#breeze-testing-task-sdk-tests-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-testing-task-sdk-tests-r1" x="1464" y="898.4" textLength="12.2" 
clip-path="url(#breeze-testing-task-sdk-tests-line-36)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_testing_task-sdk-tests.txt 
b/dev/breeze/doc/images/output_testing_task-sdk-tests.txt
index 0bcdf8dcfd6..792da1fed29 100644
--- a/dev/breeze/doc/images/output_testing_task-sdk-tests.txt
+++ b/dev/breeze/doc/images/output_testing_task-sdk-tests.txt
@@ -1 +1 @@
-60bde98299d8ffc3e5f3286eb6a53487
+74536ec09428b244cbebe5061bd674f2
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py 
b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index beccd8e288f..ba651f5067f 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -16,7 +16,9 @@
 # under the License.
 from __future__ import annotations
 
+import contextlib
 import os
+import signal
 import sys
 from datetime import datetime
 from time import sleep
@@ -99,6 +101,7 @@ from airflow_breeze.utils.run_utils import run_command
 from airflow_breeze.utils.selective_checks import ALL_CI_SELECTIVE_TEST_TYPES
 
 LOW_MEMORY_CONDITION = 8 * 1024 * 1024 * 1024
+DEFAULT_TOTAL_TEST_TIMEOUT = 6500  # 6500 seconds = 1h 48 minutes
 
 
 @click.group(cls=BreezeGroup, name="testing", help="Tools that developers can 
use to run tests")
@@ -528,6 +531,15 @@ option_force_sa_warnings = click.option(
     show_default=True,
     envvar="SQLALCHEMY_WARN_20",
 )
+option_total_test_timeout = click.option(
+    "--total-test-timeout",
+    help="Total test timeout in seconds. This is the maximum time parallel 
tests will run. If there is "
+    "an underlying pytest command that hangs, the process will be stop with 
system exit after "
+    "that time. This should give a chance to upload logs as artifacts on CI.",
+    default=DEFAULT_TOTAL_TEST_TIMEOUT,
+    type=int,
+    envvar="TOTAL_TEST_TIMEOUT",
+)
 
 
 @group_for_testing.command(
@@ -573,6 +585,7 @@ option_force_sa_warnings = click.option(
 @option_skip_docker_compose_down
 @option_test_timeout
 @option_test_type_core_group
+@option_total_test_timeout
 @option_upgrade_boto
 @option_use_airflow_version
 @option_use_packages_from_dist
@@ -638,6 +651,7 @@ def core_tests(**kwargs):
 @option_skip_providers
 @option_test_timeout
 @option_test_type_providers_group
+@option_total_test_timeout
 @option_upgrade_boto
 @option_use_airflow_version
 @option_use_packages_from_dist
@@ -657,7 +671,6 @@ def providers_tests(**kwargs):
     ),
 )
 @option_collect_only
-@option_debug_resources
 @option_dry_run
 @option_enable_coverage
 @option_force_sa_warnings
@@ -665,11 +678,8 @@ def providers_tests(**kwargs):
 @option_github_repository
 @option_image_tag_for_running
 @option_keep_env_variables
-@option_include_success_outputs
 @option_mount_sources
-@option_parallelism
 @option_python
-@option_skip_cleanup
 @option_skip_docker_compose_down
 @option_test_timeout
 @option_verbose
@@ -680,9 +690,11 @@ def task_sdk_tests(**kwargs):
         airflow_constraints_reference="constraints-main",
         backend="none",
         clean_airflow_installation=False,
+        debug_resources=False,
         downgrade_pendulum=False,
         downgrade_sqlalchemy=False,
         db_reset=False,
+        include_success_outputs=False,
         integration=(),
         install_airflow_with_constraints=False,
         run_db_tests_only=False,
@@ -694,12 +706,15 @@ def task_sdk_tests(**kwargs):
         force_lowest_dependencies=False,
         no_db_cleanup=True,
         parallel_test_types="",
+        parallelism=0,
         package_format="wheel",
         providers_constraints_location="",
         providers_skip_constraints=False,
         remove_arm_packages=False,
+        skip_cleanup=False,
         skip_providers="",
         test_type=ALL_TEST_TYPE,
+        total_test_timeout=DEFAULT_TOTAL_TEST_TIMEOUT,
         upgrade_boto=False,
         use_airflow_version=None,
         use_packages_from_dist=False,
@@ -1100,6 +1115,20 @@ def python_api_client_tests(
     sys.exit(returncode)
 
 
[email protected]
+def run_with_timeout(timeout: int):
+    def timeout_handler(signum, frame):
+        get_console().print("[error]Timeout reached. Killing the process[/]")
+        sys.exit(1)
+
+    signal.signal(signal.SIGALRM, timeout_handler)
+    signal.alarm(timeout)
+    try:
+        yield
+    finally:
+        signal.alarm(0)
+
+
 def _run_test_command(
     *,
     test_group: GroupOfTests,
@@ -1141,6 +1170,7 @@ def _run_test_command(
     skip_providers: str,
     test_timeout: int,
     test_type: str,
+    total_test_timeout: int,
     upgrade_boto: bool,
     use_airflow_version: str | None,
     use_packages_from_dist: bool,
@@ -1212,16 +1242,17 @@ def _run_test_command(
                 f"Your test type = {test_type}\n"
             )
             sys.exit(1)
-        run_tests_in_parallel(
-            shell_params=shell_params,
-            extra_pytest_args=extra_pytest_args,
-            test_timeout=test_timeout,
-            include_success_outputs=include_success_outputs,
-            parallelism=parallelism,
-            skip_cleanup=skip_cleanup,
-            debug_resources=debug_resources,
-            skip_docker_compose_down=skip_docker_compose_down,
-        )
+        with run_with_timeout(total_test_timeout):
+            run_tests_in_parallel(
+                shell_params=shell_params,
+                extra_pytest_args=extra_pytest_args,
+                test_timeout=test_timeout,
+                include_success_outputs=include_success_outputs,
+                parallelism=parallelism,
+                skip_cleanup=skip_cleanup,
+                debug_resources=debug_resources,
+                skip_docker_compose_down=skip_docker_compose_down,
+            )
     else:
         if shell_params.test_type == ALL_TEST_TYPE:
             if any(["tests/" in arg and not arg.startswith("-") for arg in 
extra_pytest_args]):
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 8ae5d7a6c9d..9e1c391a9ca 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -49,16 +49,6 @@ TEST_ENVIRONMENT_DB: dict[str, str | list[str]] = {
 }
 
 TEST_PARALLELISM_OPTIONS: dict[str, str | list[str]] = {
-    "name": "Options for parallel test commands",
-    "options": [
-        "--parallelism",
-        "--skip-cleanup",
-        "--debug-resources",
-        "--include-success-outputs",
-    ],
-}
-
-TEST_PARALLELISM_OPTIONS_XDIST: dict[str, str | list[str]] = {
     "name": "Options for parallel test commands",
     "options": [
         "--run-in-parallel",
@@ -67,6 +57,7 @@ TEST_PARALLELISM_OPTIONS_XDIST: dict[str, str | list[str]] = {
         "--skip-cleanup",
         "--debug-resources",
         "--include-success-outputs",
+        "--total-test-timeout",
     ],
 }
 
@@ -132,41 +123,6 @@ TEST_PARAMS: list[dict[str, str | list[str]]] = [
         ],
     },
     TEST_ENVIRONMENT_DB,
-    TEST_PARALLELISM_OPTIONS_XDIST,
-    TEST_UPGRADING_PACKAGES,
-]
-
-TEST_PARAMS_NON_DB: list[dict[str, str | list[str]]] = [
-    {
-        "name": "Select test types to run",
-        "options": [
-            "--parallel-test-types",
-            "--excluded-parallel-test-types",
-        ],
-    },
-    TEST_OPTIONS_NON_DB,
-    {
-        "name": "Test environment",
-        "options": [
-            "--python",
-            "--forward-credentials",
-            "--force-sa-warnings",
-        ],
-    },
-    TEST_PARALLELISM_OPTIONS,
-    TEST_UPGRADING_PACKAGES,
-]
-
-TEST_PARAMS_DB: list[dict[str, str | list[str]]] = [
-    {
-        "name": "Select tests to run",
-        "options": [
-            "--parallel-test-types",
-            "--excluded-parallel-test-types",
-        ],
-    },
-    TEST_OPTIONS_DB,
-    TEST_ENVIRONMENT_DB,
     TEST_PARALLELISM_OPTIONS,
     TEST_UPGRADING_PACKAGES,
 ]
@@ -223,7 +179,6 @@ TESTING_PARAMETERS: dict[str, list[dict[str, str | 
list[str]]]] = {
             ],
         },
         TEST_ADVANCED_FLAGS,
-        TEST_PARALLELISM_OPTIONS,
     ],
     "breeze testing core-integration-tests": [
         TEST_OPTIONS_DB,


Reply via email to