7070 strategy :
7171 fail-fast : false
7272 matrix :
73- python-version : ["3.8 ", "3.12"]
73+ python-version : ["3.9 ", "3.12"]
7474
7575 steps :
7676 - name : Checkout repository
@@ -108,7 +108,7 @@ jobs:
108108 run : |
109109 python -m pip install --upgrade pip wheel
110110 python -m pip install "setuptools<80.0.0"
111- find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[dev,ci,testing]"' \;
111+ find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[dev,ci,testing,diskcache ]"' \;
112112
113113 - name : Install dash-renderer dependencies
114114 working-directory : dash/dash-renderer
@@ -122,6 +122,8 @@ jobs:
122122 echo "DISPLAY=:99" >> $GITHUB_ENV
123123
124124 - name : Run lint
125+ env :
126+ PYLINT_EXTRA_ARGS : ${{ matrix.python-version == '3.9' && '--ignored-modules=mcp' || '' }}
125127 run : npm run lint
126128
127129 - name : Run unit tests
@@ -229,7 +231,7 @@ jobs:
229231 run : |
230232 python -m pip install --upgrade pip wheel
231233 python -m pip install "setuptools<80.0.0"
232- find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[ci,testing,dev]"' \;
234+ find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[ci,testing,dev,diskcache ]"' \;
233235
234236 - name : Build/Setup test components
235237 run : npm run setup-tests.py # TODO build the packages and save them to packages/ in build job
@@ -613,13 +615,21 @@ jobs:
613615 strategy :
614616 fail-fast : false
615617 matrix :
616- python-version : ["3.8 ", "3.12"]
618+ python-version : ["3.9 ", "3.12"]
617619 test-group : ["1", "2", "3"]
618620
619621 env :
620622 PERCY_TOKEN : ${{ matrix.python-version == '3.12' && secrets.PERCY_TOKEN || '' }}
621623 PERCY_ENABLE : ${{ matrix.python-version == '3.12' && '1' || '0' }}
622624 PERCY_PARALLEL_TOTAL : -1
625+ # Pin the build identity so every shard joins the same parallel build and
626+ # Percy links it to the PR. Auto-detection otherwise uses the ephemeral
627+ # merge SHA (refs/pull/N/merge), so the build never shows up on the PR.
628+ PERCY_PARALLEL_NONCE : ${{ github.run_id }}-${{ github.run_attempt }}
629+ PERCY_COMMIT : ${{ github.event.pull_request.head.sha || github.sha }}
630+ PERCY_BRANCH : ${{ github.head_ref || github.ref_name }}
631+ PERCY_PULL_REQUEST : ${{ github.event.pull_request.number }}
632+ PERCY_TARGET_BRANCH : ${{ github.base_ref }}
623633
624634 steps :
625635 - name : Checkout repository
@@ -654,6 +664,7 @@ jobs:
654664 find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[ci,testing,dev,celery,diskcache]"' \;
655665
656666 - name : Setup Chrome and ChromeDriver
667+ id : setup-chrome
657668 uses : browser-actions/setup-chrome@v1
658669 with :
659670 chrome-version : stable
@@ -678,6 +689,7 @@ jobs:
678689 with :
679690 command : pytest --headless --nopercyfinalize --junitxml=test-reports/junit_intg.xml tests/integration --splits 3 --group ${{ matrix.test-group }}
680691 percy-token : ${{ secrets.PERCY_TOKEN }}
692+ browser-executable : ${{ steps.setup-chrome.outputs.chrome-path }}
681693
682694 - name : Upload test results
683695 if : always()
@@ -707,12 +719,20 @@ jobs:
707719 strategy :
708720 fail-fast : false
709721 matrix :
710- python-version : ["3.8 ", "3.12"]
722+ python-version : ["3.9 ", "3.12"]
711723
712724 env :
713725 PERCY_TOKEN : ${{ matrix.python-version == '3.12' && secrets.PERCY_TOKEN || '' }}
714726 PERCY_ENABLE : ${{ matrix.python-version == '3.12' && '1' || '0' }}
715727 PERCY_PARALLEL_TOTAL : -1
728+ # Pin the build identity so every shard joins the same parallel build and
729+ # Percy links it to the PR. Auto-detection otherwise uses the ephemeral
730+ # merge SHA (refs/pull/N/merge), so the build never shows up on the PR.
731+ PERCY_PARALLEL_NONCE : ${{ github.run_id }}-${{ github.run_attempt }}
732+ PERCY_COMMIT : ${{ github.event.pull_request.head.sha || github.sha }}
733+ PERCY_BRANCH : ${{ github.head_ref || github.ref_name }}
734+ PERCY_PULL_REQUEST : ${{ github.event.pull_request.number }}
735+ PERCY_TARGET_BRANCH : ${{ github.base_ref }}
716736
717737 steps :
718738 - name : Checkout repository
@@ -747,6 +767,7 @@ jobs:
747767 find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[ci,testing,dev]"' \;
748768
749769 - name : Setup Chrome and ChromeDriver
770+ id : setup-chrome
750771 uses : browser-actions/setup-chrome@v1
751772 with :
752773 chrome-version : stable
@@ -773,6 +794,7 @@ jobs:
773794 with :
774795 command : pytest --headless --nopercyfinalize --junitxml=test-reports/junit_html.xml
775796 percy-token : ${{ secrets.PERCY_TOKEN }}
797+ browser-executable : ${{ steps.setup-chrome.outputs.chrome-path }}
776798 working-directory : components/dash-html-components
777799
778800 - name : Upload test results
@@ -844,7 +866,7 @@ jobs:
844866 strategy :
845867 fail-fast : false
846868 matrix :
847- python-version : ["3.8 ", "3.12"]
869+ python-version : ["3.9 ", "3.12"]
848870
849871 steps :
850872 - name : Checkout repository
@@ -892,13 +914,21 @@ jobs:
892914 strategy :
893915 fail-fast : false
894916 matrix :
895- python-version : ["3.8 ", "3.12"]
917+ python-version : ["3.9 ", "3.12"]
896918 test-group : ["1", "2", "3"]
897919
898920 env :
899921 PERCY_TOKEN : ${{ matrix.python-version == '3.12' && secrets.PERCY_TOKEN || '' }}
900922 PERCY_ENABLE : ${{ matrix.python-version == '3.12' && '1' || '0' }}
901923 PERCY_PARALLEL_TOTAL : -1
924+ # Pin the build identity so every shard joins the same parallel build and
925+ # Percy links it to the PR. Auto-detection otherwise uses the ephemeral
926+ # merge SHA (refs/pull/N/merge), so the build never shows up on the PR.
927+ PERCY_PARALLEL_NONCE : ${{ github.run_id }}-${{ github.run_attempt }}
928+ PERCY_COMMIT : ${{ github.event.pull_request.head.sha || github.sha }}
929+ PERCY_BRANCH : ${{ github.head_ref || github.ref_name }}
930+ PERCY_PULL_REQUEST : ${{ github.event.pull_request.number }}
931+ PERCY_TARGET_BRANCH : ${{ github.base_ref }}
902932
903933 steps :
904934 - name : Checkout repository
@@ -1016,6 +1046,7 @@ jobs:
10161046 find packages -name dash-*.whl -print -exec sh -c 'pip install "{}[ci,testing,dev]"' \;
10171047
10181048 - name : Setup Chrome and ChromeDriver
1049+ id : setup-chrome
10191050 uses : browser-actions/setup-chrome@v1
10201051 with :
10211052 chrome-version : stable
@@ -1034,6 +1065,10 @@ jobs:
10341065 - name : Run Table visual tests
10351066 if : env.PERCY_TOKEN != ''
10361067 working-directory : components/dash-table
1068+ # percy-storybook bundles an old puppeteer whose Chromium is absent on
1069+ # the runner; point it at the system Chrome installed above.
1070+ env :
1071+ PUPPETEER_EXECUTABLE_PATH : ${{ steps.setup-chrome.outputs.chrome-path }}
10371072 run : npm run test.visual
10381073
10391074 - name : Skip Table visual tests (fork PR)
@@ -1056,6 +1091,13 @@ jobs:
10561091 if : always()
10571092 env :
10581093 PERCY_TOKEN : ${{ secrets.PERCY_TOKEN }}
1094+ # Must match the snapshot jobs so finalize targets the same parallel build
1095+ # and the result is attached to the PR head commit, not the merge SHA.
1096+ PERCY_PARALLEL_NONCE : ${{ github.run_id }}-${{ github.run_attempt }}
1097+ PERCY_COMMIT : ${{ github.event.pull_request.head.sha || github.sha }}
1098+ PERCY_BRANCH : ${{ github.head_ref || github.ref_name }}
1099+ PERCY_PULL_REQUEST : ${{ github.event.pull_request.number }}
1100+ PERCY_TARGET_BRANCH : ${{ github.base_ref }}
10591101 steps :
10601102 - name : Finalize Main Percy Build
10611103 if : |
@@ -1093,8 +1135,9 @@ jobs:
10931135
10941136 - name : Publish Test Report
10951137 uses : dorny/test-reporter@v1
1096- # Skip for fork PRs - handled by post-test-status.yml workflow_run
1097- if : always() && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
1138+ # Skip for fork PRs and Dependabot PRs - both run with a read-only
1139+ # GITHUB_TOKEN, so they're handled by post-test-status.yml workflow_run.
1140+ if : always() && (github.event_name != 'pull_request' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]'))
10981141 with :
10991142 name : Test Results Summary
11001143 path : ' test-results/**/*.xml'
0 commit comments