Parent
#1095
What to build
The frontend unit runner answers the browser questions jsdom leaves unanswered, so that installing Vuetify in the next ticket does not fail for reasons that have nothing to do with Vuetify.
Three gaps, measured on a scratch branch that installed the plugin: eleven test files fail because window.visualViewport is undefined and Vuetify's overlay positioning reads it bare; twenty-seven fail because a page rooted in an app-bar or main-content component has no layout ancestor to inject from; one fails because a lazily-rendered banner never intersects, jsdom having no intersection observer.
Two test files also define a local helper of their own named mount. Left alone, the conversion in the next ticket turns that helper into a call to itself. Aliasing the imported name is a two-line change here and a confusing stack overflow there.
None of this changes behaviour today. On main, with no Vuetify instance installed, the shims answer questions nothing asks and the layout wrapper wraps components that do not look for it. That is the point: it lands green and on its own, and it takes the next ticket's blast radius from about fifty files down to about twelve.
Acceptance criteria
Blocked by
None (can start immediately).
Parent
#1095
What to build
The frontend unit runner answers the browser questions jsdom leaves unanswered, so that installing Vuetify in the next ticket does not fail for reasons that have nothing to do with Vuetify.
Three gaps, measured on a scratch branch that installed the plugin: eleven test files fail because
window.visualViewportis undefined and Vuetify's overlay positioning reads it bare; twenty-seven fail because a page rooted in an app-bar or main-content component has no layout ancestor to inject from; one fails because a lazily-rendered banner never intersects, jsdom having no intersection observer.Two test files also define a local helper of their own named
mount. Left alone, the conversion in the next ticket turns that helper into a call to itself. Aliasing the imported name is a two-line change here and a confusing stack overflow there.None of this changes behaviour today. On
main, with no Vuetify instance installed, the shims answer questions nothing asks and the layout wrapper wraps components that do not look for it. That is the point: it lands green and on its own, and it takes the next ticket's blast radius from about fifty files down to about twelve.Acceptance criteria
mounthelper shadows the imported oneyarn test:unit,yarn lintandyarn typecheckeach exit 0, verified by exit code rather than by reading a summary lineBlocked by
None (can start immediately).