Update PHP - All packages except core - Minor and patch#2457
Merged
AlexSkrypnyk merged 1 commit intomainfrom Apr 13, 2026
Merged
Update PHP - All packages except core - Minor and patch#2457AlexSkrypnyk merged 1 commit intomainfrom
AlexSkrypnyk merged 1 commit intomainfrom
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Codecov Report✅ All modified and coverable lines are covered by tests.
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. 🚀 New features to boost your workflow:
|
c7ab520 to
e43d28f
Compare
|
Code coverage (threshold: 90%) Per-class coverage |
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
Member
|
Code coverage (threshold: 90%) Per-class coverage |
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.
This PR contains the following updates:
^2.2→^2.3.0^3.6.0→^3.7.0^2.6.1→^2.7.0^2.4.0→^2.4.1Release Notes
drevops/behat-screenshot (drevops/behat-screenshot)
v2.3.0Compare Source
Breaking changes 💥
fullscreen_algorithmconfiguration option was removed. You would need to update yourbehat.ymlfile to remove this option.What's new since 2.2.0
44a942e@renovate[bot] (#201)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.0Compare Source
What's new since 3.6.0
Breaking changes
MetatagTraitmethods have been renamed to follow the project'straitNameAssert*()naming convention. The Gherkin step text is unchanged, so existing.featurefiles keep working, but any consumer that extendedMetatagTraitor called these methods directly from a customFeatureContextwill need to update their call sites. Migration: search-and-replaceassertMetaTagWithAttributesExists()→metatagAssertWithAttributesExists()andassertMetaTagWithAttributesNotExists()→metatagAssertWithAttributesNotExists()in your own PHP code (custom steps, subclasses, overrides).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$elementScrollIntoViewCenterproperty on your feature context toFALSE.Highlights
The new
ConfigOverrideTraitlets a scenario tell the site-under-test to ignoresettings.phpoverrides for named config objects, activated with@disable-config-override:CONFIG_NAMEtags 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 newRestTraitheaders.RestTraitis 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.ModalTraitprovides 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.QueueTraitgives 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@AfterScenariohook triggered by the@queuetag cleans up any queues the scenario touched, andqueueGetProcessLimit()/queueGetLeaseTime()are overridable for queues that need non-default processing behaviour.Until now the only cache-clearing option was a site-wide rebuild.
CacheTraitadds three targeted steps: clear page cache for a single path, clear page cache for paths matching a glob pattern (with SQLLIKEmetacharacters safely escaped), and clear the render cache. This makes it practical to test cache behaviour in isolation without blowing away unrelated state between scenarios.TableTraitis 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).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
Adds a tag-driven trait that signals the system-under-test to ignore
settings.phpoverrides for named config objects during a scenario. Activation is through@disable-config-override:CONFIG_NAMEtags (one per config object) and the signal is delivered via request header,$_SERVER, environment variable, and — whenRestTraitis in use — its header array, so the SUT can pick whichever channel fits.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.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.Adds
When I run the Search API cronandWhen I run the Search API Solr cronso 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 ifsearch_api_solris not installed, while the base step fails loudly ifsearch_apiitself is missing.Adds two required-state assertions (
Then the field :field should be required/should not be required) that tolerate three different required markers — the nativerequiredattribute, theform-requiredclass, and the*character in the label. Also addsWhen 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.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.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@AfterScenariohook so tests stay isolated without manual cleanup; the cleanup respects@behat-steps-skip:webformAfterScenario.Adds five new
TableTraitassertions: 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 aTableNode. Shared helpers are extracted so the new and existing assertions all use the same table lookup and selector logic.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.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), andThen the :queue queue should be empty— plus a@queue-tag cleanup hook. Queues touched during a scenario are deleted in@AfterScenarioso tests don't leak into each other.5de9358@renovate[bot] (#551)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.
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.
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$elementScrollIntoViewCenterproperty (set it toFALSEon your feature context to restore the old behaviour). A new assertion helper verifies an element is centered in the viewport.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
@BeforeScenariohook (skippable with@behat-steps-skip:restBeforeScenario). Calls route through the BrowserKit client directly so they work with any BrowserKit-based Mink driver.Introduces a brand-new
TableTraitwith 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.Adds
When I visit the password reset link for :name(for a specific user) andWhen 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 underlyingUrl::fromRoute()/user_pass_rehash()helper so behaviour stays consistent.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.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.
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.
Adds two ways to load XML for assertion without making an HTTP request: from a fixture file on the Mink
files_pathor from an inline PyString. Also addsxmlAssertAttributeContains/NotContainsfor partial-match assertions on XML attribute values. An internal$xmlTestContentproperty short-circuits the usual Mink page lookup when content has been set directly.Fixes a bug where the
@breakpoint:NAMEtag silently did nothing because the Mink session is not yet active inBeforeScenario, so the resize call was being dropped. Validation still runs inBeforeScenario(so malformed tags fail fast), but the actualresponsiveResizeToBreakpoint()call is now deferred to a newBeforeStephook where the session is live. Tagged scenarios now actually run at the requested viewport size.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.
Breaking change.
MetatagTraitmethods have been renamed to follow the project'straitNameAssert*()naming convention:assertMetaTagWithAttributesExists()→metatagAssertWithAttributesExists()andassertMetaTagWithAttributesNotExists()→metatagAssertWithAttributesNotExists(). The Gherkin step text is unchanged, so.featurefiles do not need updating, but any consumer that extendedMetatagTraitor called those methods from a customFeatureContextmust update their call sites. Also adds a newmetatagAssertNoHtmlstep that asserts a named meta tag's content is free of HTML markup, checking bothnameandpropertyattributes.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.
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.
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.
Fixes a bug where
emailSetMailSystemDefault()was overwriting thedefaults.formattersetting inmailsystem.settingswhen 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.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.
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-lowestdependencies. This catches version-specific regressions early and makes the library's actual supported-PHP range trustworthy.75cd116@renovate[bot] (#548)Full Changelog: drevops/behat-steps@3.6.0...3.7.0
rectorphp/rector (rector/rector)
v2.4.1: Released Rector 2.4.1Compare Source
New Features 🥳
RemoveUselessTernaryRector(#7961)CoalesceToTernaryRector(#7960)--rules-summaryoption to display applied rules summary with count (#7874), Thanks @carlos-granados!#[Override]attribute to methods implementing interfaces (#7934), Thanks @hockdudu!Bugfixes 🐛
Deprecations 💀
NewInInitializerRectoras depends on context (#7913)Configuration
📅 Schedule: (in timezone UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.