Skip to content

ci: make the path filter's exclusions take effect - #11

Closed
goosewobbler wants to merge 1 commit into
upstream-v10from
ci/paths-filter-exclusions
Closed

goosewobbler wants to merge 1 commit into
upstream-v10from
ci/paths-filter-exclusions

Conversation

@goosewobbler

@goosewobbler goosewobbler commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Proposed changes

Sets predicate-quantifier: some-with-excludes on the dorny/paths-filter step in test.yml, so the '!' exclusions in the code filter take effect.

Current behavior: with the default quantifier, some, a file matches a filter if any one of its patterns matches, and a '!' pattern matches every file outside its own tree. Every file is outside at least one excluded tree, so code is true for every PR, and every PR runs the full core suite. For example, webdriverio/webdriverio#15811 (README, BACKERS and website docs) and webdriverio/webdriverio#15839 (.agents and website docs) each ran 24 jobs, including build, unit, typings, interop, smoke and every core e2e.

After: an exclusion is final, which is how pnpm run test:changed already classifies files. A PR whose files all fall in excluded trees, or in no lane, runs only the lanes it touches:

PR touches only Still runs Stops running
website/ static analysis, docs build build, typings, interop, unit, smoke, launch, testrunner, multi-remote, standalone
infra/docs static analysis, docs build (with the @wdio/docs unit tests) same
packages/wdio-session, e2e/session build, static analysis, unit, session e2e typings, interop, smoke, launch, testrunner, multi-remote, standalone
packages/wdio-display-server, e2e/wdio/display-server build, static analysis, unit, display-server same
packages/wdio-browser-runner, e2e/browser-runner build, static analysis, typings, unit, component interop, smoke, launch, testrunner, multi-remote, standalone
paths in no lane: root markdown, .agents/, examples/ static analysis everything else

PRs that also touch other code, PRs that touch CI or root config, and pushes to main and v10 still run everything.

What's skipped can't be affected:

  • Nothing in CI reads root markdown or .agents/. Static analysis lints examples/, and it always runs.
  • @wdio/runner and @wdio/cli load @wdio/session lazily, only for --debug agent, wdio repl --session and wdio session, which the session lane tests.
  • The display-server lane runs the testrunner through @wdio/local-runner. packages/wdio-local-runner isn't excluded, so changes to it still run the core suite.

How you tested

  • Three throwaway PRs on this fork, each changing only the files listed. Their Detect Changes logs show:

    PR Base Files code
    before upstream-v10 a website doc, packages/wdio-session/README.md true
    after this branch the same two files false (docs and session true)
    control this branch packages/webdriverio/README.md true

    The after run went to completion and ran 10 jobs, all green: build, static analysis, unit, session e2e and the docs build. It skipped typings, interop, smoke, component, display-server and every core e2e.

  • Ran dorny/paths-filter's own Filter (src/filter.ts at the pinned commit) against this workflow's filters with both quantifiers, with the same results.

  • actionlint passes.

  • This PR changes .github/workflows/**, so its own CI runs everything.

Types of changes

  • Polish (an improvement for an existing feature)
  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update (improvements to the project's docs)
  • Specification changes (updates to WebDriver command specifications)
  • Internal updates (everything related to internal scripts, governance documentation and CI files)

Checklist

  • I have read the CONTRIBUTING doc
  • I have added tests that prove my fix is effective or that my feature works
  • I have added the necessary documentation (if appropriate)
  • I have added proper type definitions for new commands (if appropriate)

Further comments

🤖 Generated with Claude Code

@goosewobbler

Copy link
Copy Markdown
Owner Author

Superseded by webdriverio#15872.

@goosewobbler
goosewobbler deleted the ci/paths-filter-exclusions branch October 3, 2026 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant