Every kessai info file declares core_version_requirement: ^11.3, and drupal.org derives the packaged composer constraint from it. So drupal/kessai resolves as requiring drupal/core ^11.3, which excludes core 12, and any dependent that pulls kessai from packages.drupal.org cannot resolve a next-major test lane at all.

Measured in the yoyaku queue, whose payment submodule takes kessai as a dev dependency. Its composer (next major) job fails before installing anything:

Your requirements could not be resolved to an installable set of packages.
  - Root composer.json requires drupal/kessai 1.x-dev -> satisfiable by drupal/kessai[1.x-dev].
  - drupal/kessai[dev-1.x, 1.x-dev] require drupal/core ^11.3 -> satisfiable by
    drupal/core[11.3.0-alpha1, ..., 11.x-dev].

That is not caused by anything in the dependent: the same job fails identically on an untouched commit of its default branch, so the whole Drupal 12 lane is dark for every project that depends on kessai.

What is actually unknown

Whether kessai works on Drupal 12. This project opts into the lane with OPT_IN_TEST_NEXT_MAJOR: 1, but the jobs are manual and have never been run, so no evidence exists either way. Widening the constraint without running them would just move the failure from resolution to runtime.

Proposed steps

  • Run the next-major jobs and read what breaks. Deprecations reported by the phpstan next-major job come first, since those are the changes core will remove.
  • Fix what they report, then widen core_version_requirement to ^11.3 || ^12 in all six info files (the module, kessai_simulator, kessai_audit_trail, kessai_worldline, kessai_views and the test module).
  • Only then does a dependent's lane resolve, so this issue gates Drupal 12 readiness for anything built on kessai rather than being a cosmetic metadata change.

Worth noting for whoever picks this up: the dependent projects declare ^11.3 in their own info files too, so each of them needs the same widening after its own next-major run. Kessai is simply first in the chain, because nothing else can even resolve until it moves.

Issue fork kessai-3614379

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mably created an issue. See original summary.

mably’s picture

Issue summary: View changes

  • mably committed e7197d1a on 1.x
    task: #3614379 Declare Drupal 12 compatibility, because the pinned core...
mably’s picture

Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

mably’s picture

Merged to 1.x as e7197d1.

The lane could not resolve at all at first, for the reason this issue describes one level up: the development dependency drupal/audit_trail pins drupal/core ^11.3, and once that was relaxed its own dependency drupal/key pinned core in turn. Both are now listed in _LENIENT_ALLOW_LIST, so the next-major jobs install against Drupal 12 and report on kessai own code. audit_trail is tracked separately in #3614385: Declare Drupal 12 compatibility and turn on the next-major test lane.

What the lane reported once it ran:

  • phpstan (next major): one error, a call to the deprecated ReflectionMethod::setAccessible() in PaymentStorageSchemaTest. It has been a no-op since PHP 8.1, so the call is removed rather than replaced.
  • phpunit (next major): the three Functional classes errored with "Functional/FunctionalJavascript test classes must specify the RunTestsInSeparateProcesses attribute", which core 11.3 deprecates and Drupal 12 throws on. The attribute is now on SimulatorCheckoutTest, KessaiSettingsFormTest and WorldlineSettingsFormTest.

After those two fixes all 17 test classes pass on Drupal 12, with the same test and assertion counts as on 11.3, and phpstan (next major) is green. So core_version_requirement is widened to ^11.3 || ^12 on the module and all five submodules, with the README requirements line updated to match.

One thing stays red on purpose: phpunit (next major) still exits non-zero even though every class passes. Every deprecation it reports originates in core or Symfony and none in kessai. They surface because Drupal 12 removes the SYMFONY_DEPRECATIONS_HELPER environment variable that the CI template still sets to suppress them, which is what the first reported deprecation says outright. That job is allow_failure by design, and the fix belongs in the templates rather than here.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.