[PP-1] Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests
### Overview Two kernel test classes independently set up the same thing: a `JavaScriptComponent` fixture and a family of "prop-mutation" helpers that simulate a component evolving (adding/removing required and optional props, changing a prop's type, etc.). - `TranslationPropagationTestBase` (added in #3591596) — its fixture plus `addOptionalProp()`, `addRequiredProp()`, `removeOptionalProp()`, `changePropType()`, `removeAndAddProp()`, `removeBothProps()`. - `JsonSchemaPropsComponentInstanceUpdaterTest` — its own near-identical fixture plus `addOptionalProp()`, `addOptionalArrayProp()`, `removeOptionalProp()`, `removeRequiredProp()`, etc. Because the fixture and helpers are defined twice, a change to the component shape or to how a prop mutation is expressed must be made in two places and can silently drift. ### Proposed resolution Extract the shared `JavaScriptComponent` fixture and the prop-mutation helpers into a single shared trait (or base class) consumed by both test classes, reconciling the two helper sets into one canonical API (a superset of what each needs today). ### Remaining tasks - Reconcile the two helper sets into one canonical API. - Move the fixture + helpers into a shared trait/base. - Update both test classes to use it and drop their local copies. - Confirm both kernel test suites still pass. ### User interface changes None — test infrastructure only. --- The following discussion from !1271 should be addressed: - [ ] @wimleers started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1267717): > :thinking: This looks an _awful_ lot like what's in `\Drupal\Tests\canvas\Kernel\Plugin\Canvas\ComponentSource\JsonSchemaPropsComponentInstanceUpdaterTest`… > Ideally we wouldn't duplicate all that. :fingers_crossed: But won't block commit on that. Postponed on #3591596 landing first.
issue