Split root Pipfile per test suite for true CI path-filter isolation - #199
Merged
Conversation
The path filters added in aecc573 still listed the shared root Pipfile/ Pipfile.lock (and best_practice/conftest.py) in every workflow, so any dependency bump or shared-fixture edit still triggered every workflow - not the isolation intended. Fixes it by giving each suite its own Pipfile/Pipfile.lock (direct deps only, built from actual imports) and, where fixtures were shared, its own conftest.py: - best_practice/{desktop_web,mobile_native,mobile_web} - examples/{selenium,playwright} - examples/robotframework/{desktop_web,native_mobile} Workflows now use per-suite working-directory and paths scoped to just their own directory. python.yml is removed (its best-practice-desktop-us leg was already redundant with desktop_web.yml; its demo leg moves to the new selenium_demo.yml). Root Pipfile/Pipfile.lock are removed; requirements.txt/.gitpod.yml are untouched (separate, unrelated mechanism). sauceclient/sa11y are dropped as unused by any suite. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
examples/gitpod/ and .gitpod.yml drove a separate, pipenv-independent test path (pip install -r requirements.txt + pytest -n8 \$TEST_PATH) that's no longer needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Only consumer was .gitpod.yml, removed in the previous commit. Updated examples/robotframework/desktop_web/README.md's install instructions, which pointed at this file too (already broken pre-existing - the file never actually lived in that directory), to use its Pipfile instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Follow-up to 6c644a9 - this edit was made but never staged, so it didn't actually make it into that commit despite the commit message saying otherwise. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
diemol
added a commit
that referenced
this pull request
Jul 27, 2026
Resolves the root Pipfile modify/delete conflict from #199's per-suite Pipfile split: the root Pipfile is gone, and this branch's only real delta (playwright-tests' --dist=loadfile flag) is ported into the new examples/playwright/Pipfile instead. Verified the suite still passes with GROUPING=module reuse working correctly post-merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
aecc573: those still listed the shared rootPipfile/Pipfile.lock(andbest_practice/conftest.py) in every workflow'spaths:, so any dependency bump or shared-fixture edit still triggered every workflow - not real per-directory isolation.Pipfile/Pipfile.lock(direct dependencies only, derived from each suite's actualimportstatements, not copied wholesale from the old root Pipfile) and, where fixtures were shared, its ownconftest.py:best_practice/desktop_web/,best_practice/mobile_native/(android+ios),best_practice/mobile_web/(vdc+rdc) - each gets a split-offconftest.pywith only its own fixturesexamples/selenium/,examples/playwright/- already had their ownconftest.py, just get aPipfilenowexamples/robotframework/desktop_web/,examples/robotframework/native_mobile/- no CI coverage for the latter either way, but it gets a minimalPipfileso its existingpipenv run robot-android-us/robot-ios-usscripts keep working locallyworking-directory:to its own suite's directory and itspaths:filter is scoped to just that directory + the workflow file itself - no more cross-directory triggering.python.ymlis removed: itsbest-practice-desktop-usleg was already fully redundant withdesktop_web.yml(both ran the identical script against the same directory), and itsdemoleg moves to a newselenium_demo.yml.Pipfile/Pipfile.lockare deleted entirely - no dual-maintenance duplication between a root file and per-suite ones.requirements.txt/.gitpod.ymlare untouched (confirmed to be a separate, independent mechanism used only by the Gitpod cloud environment, not by any GitHub Actions workflow).sauceclientandsa11yare dropped - confirmed unused by any.pyfile, workflow, or script anywhere in the repo, so they simply don't appear in any of the new per-suite dependency lists.README.mdandbest_practice/README.mdfor the new per-directorycd && pipenv install && pipenv run <script>workflow; also fixed a pre-existingbest_practice/README.mdbug (missingruninpipenv <script>, and script names that didn't match the real Pipfile, e.g.best-practice-mobile-web-usvs. the actualbest-practice-mobile-web-vdc-us).Test plan
Pipfile.lockwas generated via realpipenv lock(not hand-written), each withPIPENV_PIPFILEpinned explicitly so it resolved into the correct directory rather than the (now-deleted) root Pipfile.pytest --collect-onlypasses cleanly for every pytest-based suite (best_practice/desktop_web,best_practice/mobile_native/{android,ios},best_practice/mobile_web/{vdc,rdc},examples/selenium,examples/playwright) using each suite's own newconftest.py.chrome_config.txt,Tests/,android/android_config.txt, etc.) still resolve correctly relative to each workflow's newworking-directory.Pipfileanywhere in workflows or docs.🤖 Generated with Claude Code