Announce the webform handler's blocked-option notice, type the payment_lapsed action, and wait on a real signal in a browser test
Fixes three defects found while auditing the module file by file. See [#3623337] for the full write-up of each.
What changes
-
The webform handler's notice is a real message.
OrchestraInteractionHandler::buildConfigurationForm()hand-built adivcarryingmessages messages--warninginto the#suffixof the "Return to the workflow after submit" checkbox. Those classes are Claro's and Olivero's, not core's: core's ownstatus-messages.html.twigemits no classes and carries the region's role, itsaria-labeland a visually-hidden heading instead. The checkbox is disabled, so the notice is the only way to learn why. It now renders through#theme: status_messageswith#status_headings, which is what the template reads both the label and the heading out of. -
payment_lapseddeclares its settings schema type. A timeout's settings key, and a timer rung's, is typedorchestra.timeout_action.[%parent.action], with no wildcard behind it. The kernel types its own settings-less action for exactly that reason (orchestra.timeout_action.unclaim);orchestra_paymentnow does the same. -
A browser test waits on a signal the page emits.
CompositeConditionTestwaited on.messages, a class stark does not emit, so each wait ran to its ten-second default and returnedNULLunchecked: the assertion after it was separated from the Save click by a sleep rather than by the page coming back. It waits for the sentence the form posts, and asserts it.
Both strings the change adds are translated in the catalog of the project that writes them; "Warning message" takes core's own French, so the one string table locale keeps cannot hold two answers for it.
Tests
ExampleConfigSchemaTestgains an assertion that every timeout actionorchestra_paymentprovides declares a schema type, naming the set so it cannot pass by finding nothing to check. It fails against the unpatched schema.WebformTaskReviewTestassertedmessages messages--warning, which passed only because the markup was hand-built. It now asserts thearia-label, the visually-hidden heading and the sentence of one region: never the role, which core 12 changed fromcontentinfotoalert, and never the theme class, which is absent under the theme the test runs in.- The two browser waits become assertions, so a save that never lands fails where it happened.
Not in this MR
An earlier revision also put nineteen #markup values back on the project's '<p>' . $this->t(...) . '</p>' shape, with a standing assertion over every shipped class. Where a rendered value's markup belongs is a question about the templates that print it, so it is answered there rather than by wrapping each value in the class that hands it over. That revision is reverted whole.