Skip to content

Update PHP - All packages except core - Minor and patch#2457

Merged
AlexSkrypnyk merged 1 commit intomainfrom
deps/php-all-except-core-minor-patch
Apr 13, 2026
Merged

Update PHP - All packages except core - Minor and patch#2457
AlexSkrypnyk merged 1 commit intomainfrom
deps/php-all-except-core-minor-patch

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Apr 12, 2026

This PR contains the following updates:

Package Change Age Confidence
drevops/behat-screenshot ^2.2^2.3.0 age confidence
drevops/behat-steps ^3.6.0^3.7.0 age confidence
drupal/testmode (source) ^2.6.1^2.7.0 age confidence
rector/rector (source) ^2.4.0^2.4.1 age confidence

Release Notes

drevops/behat-screenshot (drevops/behat-screenshot)

v2.3.0

Compare Source

Breaking changes 💥

  • fullscreen_algorithm configuration option was removed. You would need to update your behat.yml file to remove this option.

What's new since 2.2.0

Full Changelog: drevops/behat-screenshot@2.2.0...2.3.0

@​AlexSkrypnyk, @​renovate[bot] and renovate[bot]

drevops/behat-steps (drevops/behat-steps)

v3.7.0

Compare Source

What's new since 3.6.0

Breaking changes
  • Renamed MetatagTrait methods, added 'metatagAssertNoHtml' step. @​AlexSkrypnyk (#​555)
    MetatagTrait methods have been renamed to follow the project's traitNameAssert*() naming convention. The Gherkin step text is unchanged, so existing .feature files keep working, but any consumer that extended MetatagTrait or called these methods directly from a custom FeatureContext will need to update their call sites. Migration: search-and-replace assertMetaTagWithAttributesExists()metatagAssertWithAttributesExists() and assertMetaTagWithAttributesNotExists()metatagAssertWithAttributesNotExists() in your own PHP code (custom steps, subclasses, overrides).
  • [#​574] Changed element scroll to use center viewport alignment with configurable property. @​AlexSkrypnyk (#​596)
    ElementTrait::elementScrollTo() now scrolls elements to the center of the viewport by default instead of top-aligning them. Consumers upgrading will see the new behaviour automatically — any existing test that was relying on the old top-aligned scroll position (e.g., to assert a sticky header covers the element, or to click the element at a specific vertical position) may fail without changes. Migration: the new behaviour is usually what you want, since it prevents sticky headers and admin toolbars from covering the scroll target. To restore the old top-aligned behaviour, set the new $elementScrollIntoViewCenter property on your feature context to FALSE.
Highlights
  • [#​571] Added ConfigOverrideTrait to disable Drupal config overrides via tags. @​AlexSkrypnyk (#​626)
    The new ConfigOverrideTrait lets a scenario tell the site-under-test to ignore settings.php overrides for named config objects, activated with @disable-config-override:CONFIG_NAME tags on a feature or scenario. This closes a long-standing gap where Behat tests had no way to assert against the original unoverridden config value, and it works transparently across BrowserKit, $_SERVER, environment variables, and the new RestTrait headers.
  • [#​569] Added 'RestTrait' with header, request, and response assertion steps. @​AlexSkrypnyk (#​597)
    RestTrait is a brand-new, Drupal-free trait for exercising HTTP APIs from a Behat scenario. It plugs the two gaps left by Mink: setting request headers from Gherkin and issuing non-GET requests (POST, PUT, PATCH, DELETE) with an optional body. Headers accumulate per scenario and reset automatically, so REST calls can be composed naturally alongside browser steps.
  • [#​600] Added 'ModalTrait' with Drupal dialog visibility, content, and interaction steps. (#​603) @​AlexSkrypnyk (#​608)
    ModalTrait provides seven steps for asserting modal visibility, asserting modal content, clicking inside modals, closing them, and waiting for them to appear. Selectors are overridable hooks, so the same trait works across jQuery UI dialogs, Bootstrap modals, native HTML <dialog> elements, and custom modal frameworks without any per-project subclassing.
  • [#​601] Added 'QueueTrait' with Drupal core queue management and assertion steps. @​AlexSkrypnyk (#​604)
    QueueTrait gives scenarios precise control over Drupal core queues: clearing a queue, processing a specific number of items, processing all items, asserting queue size, and asserting a queue is empty. An @AfterScenario hook triggered by the @queue tag cleans up any queues the scenario touched, and queueGetProcessLimit() / queueGetLeaseTime() are overridable for queues that need non-default processing behaviour.
  • [#​611] Added 'CacheTrait' with targeted Drupal cache invalidation steps @​AlexSkrypnyk (#​623)
    Until now the only cache-clearing option was a site-wide rebuild. CacheTrait adds three targeted steps: clear page cache for a single path, clear page cache for paths matching a glob pattern (with SQL LIKE metacharacters safely escaped), and clear the render cache. This makes it practical to test cache behaviour in isolation without blowing away unrelated state between scenarios.
  • [#​581] Added 'TableTrait' with row count, column, and row content assertions. @​AlexSkrypnyk (#​592)
    TableTrait is a new Mink-only trait for asserting HTML table structure and content — row count, column headers, and row content by matching text. It has no Drupal dependency and works against any page with a table, which matters for anyone testing admin listings, data grids, or reports. The trait was further extended later in this release with five more assertions (see [#​599] below).
  • Added IframeTrait with iframe switching steps. @​AlexSkrypnyk (#​556)
    Adds a new trait with steps for switching into an iframe by CSS selector and switching back to the root document. The trait auto-assigns a name to unnamed iframes via JavaScript to work around Mink/Selenium's requirement that iframes be addressable by name, which previously forced tests either to drop into custom JavaScript or to modify fixtures just so iframes could be targeted.
All changes
  • [#​571] Added ConfigOverrideTrait to disable Drupal config overrides via tags. @​AlexSkrypnyk (#​626)
    Adds a tag-driven trait that signals the system-under-test to ignore settings.php overrides for named config objects during a scenario. Activation is through @disable-config-override:CONFIG_NAME tags (one per config object) and the signal is delivered via request header, $_SERVER, environment variable, and — when RestTrait is in use — its header array, so the SUT can pick whichever channel fits.
  • [#​611] Added 'CacheTrait' with targeted Drupal cache invalidation steps @​AlexSkrypnyk (#​623)
    Adds three steps for surgical Drupal cache invalidation: clear the page cache for a single path, clear the page cache for a glob-pattern of paths, and clear the render cache. cacheGetPageCacheBin() is overridable so sites using a custom internal page cache bin can point it at the right bin name.
  • [#​617] Extended 'ContentTrait' with node access grants rebuild steps @​AlexSkrypnyk (#​618)
    Adds two steps for rebuilding Drupal node access grants from within a scenario: one that rebuilds grants for a single node matched by content type and title, and one that rebuilds grants for all content. This unblocks scenarios that enable a node access module (core grants, group, entity_access_by_field, workbench_access, permissions_by_term) and need grant rows populated before asserting visibility.
  • [#​613] Extended 'SearchApiTrait' with cron-based indexing steps @​AlexSkrypnyk (#​620)
    Adds When I run the Search API cron and When I run the Search API Solr cron so scenarios can drive Search API cron-triggered indexing directly instead of waiting for a real cron run. The Solr variant is a graceful no-op if search_api_solr is not installed, while the base step fails loudly if search_api itself is missing.
  • [#​612] Extended 'FieldTrait' with required-state and multi-value-widget steps @​AlexSkrypnyk (#​624)
    Adds two required-state assertions (Then the field :field should be required / should not be required) that tolerate three different required markers — the native required attribute, the form-required class, and the * character in the label. Also adds When I fill in the multi-value field :field with the following values: which locates a multi-value widget, presses "Add another item" as many times as needed (waiting for AJAX between clicks), and fills each row.
  • [#​614] Extended 'UserTrait' with email-based user existence assertions @​AlexSkrypnyk (#​619)
    Adds Then the user with the email :mail should exist / should not exist. Email is the stable external identifier for registration, forgot-password, SSO provisioning, and user-import flows, so asserting on it is more robust than asserting on auto-generated usernames. The comparison is case-insensitive.
  • [#​606] Added webform template cloning step to 'WebformTrait'. @​AlexSkrypnyk (#​609)
    Adds When I clone webform template :template into :title, which duplicates a webform template into a non-template webform ready for the scenario to interact with. Cloned webforms are tracked in a static registry and deleted automatically in an @AfterScenario hook so tests stay isolated without manual cleanup; the cleanup respects @behat-steps-skip:webformAfterScenario.
  • [#​599] Extended 'TableTrait' with column count, empty state, sort order, and bulk row assertions. @​AlexSkrypnyk (#​602)
    Adds five new TableTrait assertions: asserting column count, asserting empty / non-empty table state, asserting rows are sorted ascending or descending by a named column, and asserting a bulk set of expected rows exists in a table via a TableNode. Shared helpers are extracted so the new and existing assertions all use the same table lookup and selector logic.
  • [#​600] Added 'ModalTrait' with Drupal dialog visibility, content, and interaction steps. (#​603) @​AlexSkrypnyk (#​608)
    Adds a modal interaction trait with steps for "I should see the modal", content assertions, clicking inside a modal by selector / button label / link text, closing the modal, and waiting for it to appear with a configurable timeout. Selector hooks make it work across jQuery UI, Bootstrap, native <dialog>, and custom modal implementations without subclassing.
  • [#​601] Added 'QueueTrait' with Drupal core queue management and assertion steps. @​AlexSkrypnyk (#​604)
    Adds five queue steps — Given the :queue queue is empty, When I process :count item(s) from the :queue queue, When I process all items from the :queue queue, Then the :queue queue should have :count item(s), and Then the :queue queue should be empty — plus a @queue-tag cleanup hook. Queues touched during a scenario are deleted in @AfterScenario so tests don't leak into each other.
  • Update release-drafter/release-drafter digest to 5de9358 @​renovate[bot] (#​551)
  • [#​579] Added webform deletion step to 'WebformTrait'. @​AlexSkrypnyk (#​605)
    Adds a step for deleting a webform by title from within a scenario, which makes it practical to verify cleanup logic and to reset state between scenarios that share a webform fixture.
  • [#​566] Added XML debug print step to 'XmlTrait'. @​AlexSkrypnyk (#​598)
    Adds a debug step that prints the current XML document to the Behat output, mirroring the "print current page" debug helpers provided elsewhere. This makes it much faster to diagnose failing XML assertions without rerunning with verbose trace.
  • [#​574] Changed element scroll to use center viewport alignment with configurable property. @​AlexSkrypnyk (#​596)
    Breaking change. elementScrollTo() now scrolls the target element to the center of the viewport by default instead of top-aligning it, so sticky headers and fixed navigation no longer obscure the element being interacted with. Existing tests that relied on the old top-aligned behaviour will need either to be updated or to opt out via the new $elementScrollIntoViewCenter property (set it to FALSE on your feature context to restore the old behaviour). A new assertion helper verifies an element is centered in the viewport.
  • [#​569] Added 'RestTrait' with header, request, and response assertion steps. @​AlexSkrypnyk (#​597)
    Adds a Drupal-free REST testing trait with five steps: set a header, send a request with any HTTP method, send a request with a body, assert response status code, and assert response body text. Headers accumulate per scenario and reset via a @BeforeScenario hook (skippable with @behat-steps-skip:restBeforeScenario). Calls route through the BrowserKit client directly so they work with any BrowserKit-based Mink driver.
  • [#​581] Added 'TableTrait' with row count, column, and row content assertions. @​AlexSkrypnyk (#​592)
    Introduces a brand-new TableTrait with three assertions — row count in <tbody>, presence of expected <th> headers, and presence of multiple texts in a row located by text match. Pure Mink, no Drupal dependency, so it works against any page with an HTML table.
  • [#​580] Added password reset link steps with named-user and own-user variants. @​AlexSkrypnyk (#​591)
    Adds When I visit the password reset link for :name (for a specific user) and When I visit my own password reset link (for the currently logged-in user). The first throws if the named user does not exist; the second throws if nobody is logged in. Both use the same underlying Url::fromRoute() / user_pass_rehash() helper so behaviour stays consistent.
  • [#​584] Added navigation and assertion steps to 'MediaTrait'. @​AlexSkrypnyk (#​595)
    Adds four navigation steps for visiting the view, delete, and revisions pages of a media entity identified by type and name, plus four assertions for media type existence and media entity existence by name. The existing mediaEditWithName() step is refactored onto the same shared helper so all navigation methods share one lookup path.
  • [#​573] Added element focus step to 'ElementTrait'. @​AlexSkrypnyk (#​593)
    Adds a step for asserting that a specific element has focus, which matters for keyboard-accessibility flows and for any scenario that needs to confirm focus management after a JavaScript interaction.
  • [#​572] Added content 'should not exist' assertion to 'ContentTrait'. @​AlexSkrypnyk (#​590)
    Adds a negative counterpart to the existing content existence assertion, so scenarios can assert a node with a given title and type is absent — useful after deletion, unpublishing, or access-control changes.
  • [#​567] Added fixture loading and attribute contains steps to 'XmlTrait'. @​AlexSkrypnyk (#​594)
    Adds two ways to load XML for assertion without making an HTTP request: from a fixture file on the Mink files_path or from an inline PyString. Also adds xmlAssertAttributeContains / NotContains for partial-match assertions on XML attribute values. An internal $xmlTestContent property short-circuits the usual Mink page lookup when content has been set directly.
  • [#​533] Deferred '@​breakpoint' tag viewport resize to 'BeforeStep' hook. @​AlexSkrypnyk (#​560)
    Fixes a bug where the @breakpoint:NAME tag silently did nothing because the Mink session is not yet active in BeforeScenario, so the resize call was being dropped. Validation still runs in BeforeScenario (so malformed tags fail fast), but the actual responsiveResizeToBreakpoint() call is now deferred to a new BeforeStep hook where the session is live. Tagged scenarios now actually run at the requested viewport size.
  • Added 'I fill in the field' CSS selector step to FieldTrait. @​AlexSkrypnyk (#​558)
    Adds a variant of the standard "fill in the field" step that accepts a CSS selector instead of a label or name, so tests can target fields by ID, class, or other attributes when label-based lookup isn't unique or isn't available.
  • Renamed MetatagTrait methods, added 'metatagAssertNoHtml' step. @​AlexSkrypnyk (#​555)
    Breaking change. MetatagTrait methods have been renamed to follow the project's traitNameAssert*() naming convention: assertMetaTagWithAttributesExists()metatagAssertWithAttributesExists() and assertMetaTagWithAttributesNotExists()metatagAssertWithAttributesNotExists(). The Gherkin step text is unchanged, so .feature files do not need updating, but any consumer that extended MetatagTrait or called those methods from a custom FeatureContext must update their call sites. Also adds a new metatagAssertNoHtml step that asserts a named meta tag's content is free of HTML markup, checking both name and property attributes.
  • Added 'I go back' step to PathTrait. @​AlexSkrypnyk (#​554)
    Adds a step that triggers browser back navigation, matching the browser's Back button. This makes it possible to assert behaviour that depends on navigation history (cache restoration, form state, redirect loops) without dropping into raw JavaScript.
  • Added IframeTrait with iframe switching steps. @​AlexSkrypnyk (#​556)
    Adds a new trait with steps for switching into an iframe by CSS selector and switching back to the root document. The trait auto-assigns a name to unnamed iframes via JavaScript to work around Mink/Selenium's requirement that iframes be addressable by name.
  • Added 'I hover over the element' step to ElementTrait. @​AlexSkrypnyk (#​557)
    Adds a hover step that triggers mouseover on a targeted element, which is required for testing flyout menus, tooltip activation, and other hover-triggered UI that previously could only be simulated by awkward JavaScript evaluation.
  • Fixed 'emailSetMailSystemDefault' overriding mail formatter. @​AlexSkrypnyk (#​559)
    Fixes a bug where emailSetMailSystemDefault() was overwriting the defaults.formatter setting in mailsystem.settings when switching the mail sender to the test collector. The formatter controls how email body content is rendered and should not change when only the delivery mechanism is being swapped — it is now preserved untouched, so sites using a non-default formatter (Symfony Mailer, Swiftmailer, etc.) no longer silently lose their formatter configuration during test runs.
  • Update codecov/codecov-action action to v6 @​renovate[bot] (#​552)
  • Extracted lint into a separate CI job. @​AlexSkrypnyk (#​553)
    Moves linting out of the main test job into its own CI job, so lint failures are reported independently of test failures and one no longer blocks the other. This speeds up the feedback loop for pull requests that touch code style without changing behaviour.
  • [#​536] Added CI matrix for PHP 8.2, 8.3, 8.4 with normal and lowest deps. @​AlexSkrypnyk (#​550)
    Adds a CI build matrix that exercises the library against PHP 8.2, 8.3, and 8.4, each with both the resolved dependency set and composer update --prefer-lowest dependencies. This catches version-specific regressions early and makes the library's actual supported-PHP range trustworthy.
  • Update codecov/codecov-action action to v6 @​renovate[bot] (#​549)
  • Update codecov/codecov-action digest to 75cd116 @​renovate[bot] (#​548)
  • Update all dependencies @​renovate[bot] (#​547)

Full Changelog: drevops/behat-steps@3.6.0...3.7.0

rectorphp/rector (rector/rector)

v2.4.1: Released Rector 2.4.1

Compare Source

New Features 🥳


Bugfixes 🐛

  • [CodeQuality] Skip with HTML on CompleteMissingIfElseBracketRector (#​7952)
  • [CodeQuality] Handle with assign on SimplifyIfElseToTernaryRector (#​7951)
  • [CodeQuality] Skip with HTML on TernaryFalseExpressionToIfRector (#​7954)
  • [automated] Apply Coding Standard (#​7955)
  • Make compatible with PHPStan 2.1.x-dev for ObjectType::equals() change behaviour (#​7956)
  • [AutoImport] Handle FQCN in/not in use on auto import + remove unused import as prefix = suffix (#​7957)
  • perf: use hash map for installed packages (#​7878), Thanks @​calebdw!
  • [ChangesReporting][Alternative] Collect changed_files on --no-diffs with json output with use of JsonOutputFactory (#​7821)
  • fix: OOM crash in RemoveUnusedVariableAssignRector (#​7964), Thanks @​calebdw!

Deprecations 💀

  • [Php81] Deprecate NewInInitializerRector as depends on context (#​7913)
  • [deprecation] deprecate file, use getFile() instead (#​7962)

Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • "before 2am on Sunday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the Dependencies Pull request was raised automatically by a dependency bot label Apr 12, 2026
@github-project-automation github-project-automation Bot moved this to BACKLOG in Vortex Apr 12, 2026
@github-actions

This comment has been minimized.

@AlexSkrypnyk

This comment has been minimized.

2 similar comments
@AlexSkrypnyk

This comment has been minimized.

@AlexSkrypnyk

This comment has been minimized.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.42%. Comparing base (6616d93) to head (e43d28f).
⚠️ Report is 2 commits behind head on main.

❗ There is a different number of reports uploaded between BASE (6616d93) and HEAD (e43d28f). Click for more details.

HEAD has 3 uploads less than BASE
Flag BASE (6616d93) HEAD (e43d28f)
8 5
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2457      +/-   ##
==========================================
- Coverage   86.43%   79.42%   -7.01%     
==========================================
  Files          87      121      +34     
  Lines        4312     6702    +2390     
  Branches       47        3      -44     
==========================================
+ Hits         3727     5323    +1596     
- Misses        585     1379     +794     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@renovate renovate Bot force-pushed the deps/php-all-except-core-minor-patch branch from c7ab520 to e43d28f Compare April 13, 2026 04:53
@github-actions
Copy link
Copy Markdown

Code coverage (threshold: 90%)

  Classes: 100.00% (1/1)
  Methods: 100.00% (2/2)
  Lines:   98.53% (201/204)
Per-class coverage
Drupal\ys_demo\Plugin\Block\CounterBlock
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)

@AlexSkrypnyk

This comment has been minimized.

2 similar comments
@AlexSkrypnyk

This comment has been minimized.

@AlexSkrypnyk
Copy link
Copy Markdown
Member

Code coverage (threshold: 90%)

  Classes: 100.00% (1/1)
  Methods: 100.00% (2/2)
  Lines:   98.53% (201/204)
Per-class coverage
Drupal\ys_demo\Plugin\Block\CounterBlock
  Methods: 100.00% ( 2/ 2)   Lines: 100.00% ( 10/ 10)

@AlexSkrypnyk AlexSkrypnyk merged commit 6d10a2f into main Apr 13, 2026
28 checks passed
@AlexSkrypnyk AlexSkrypnyk deleted the deps/php-all-except-core-minor-patch branch April 13, 2026 05:16
@github-project-automation github-project-automation Bot moved this from BACKLOG to Release queue in Vortex Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Dependencies Pull request was raised automatically by a dependency bot

Projects

Status: Release queue

Development

Successfully merging this pull request may close these issues.

1 participant