…ions
Aura defines two transitions on the shared
:is(vaadin-button, vaadin-upload-button, …) selector in
packages/aura/src/components/button.css:7,86-88:
- scale 180ms on press ([active])
- opacity 100ms, background-color 100ms on the ::before hover overlay
The upload-button visual tests' hover and active scenarios trigger
these via sendMouseToElement / mousedown and capture immediately
after, so the screenshot lands somewhere on the 100-180ms ramp.
Different Playwright versions land at different points, producing
baseline drift on every bump.
Add packages/upload/test/visual/not-animated-styles.js with
transition: none !important on vaadin-upload-button :host,
:host::before, :host::after, and import it from the upload-button
visual tests for all 3 themes. Three Aura *-hover.png baselines
shift to the fully-opaque hover overlay end state (sub-LSB diff,
max delta=1); active and default baselines, and all Lumo and base
baselines, stay byte-identical.
Same cascade-order pattern as #11587/#11588/#11591/#11595.
Summary
Aura defines two transitions on the shared
:is(vaadin-button, vaadin-upload-button, …)selector atpackages/aura/src/components/button.css:7,86-88:scale 180mson press ([active])opacity 100ms, background-color 100mson the::beforehover overlayThe upload-button visual tests'
hoverandactivescenarios trigger these viasendMouseToElement/mousedownand capture immediately after, so the screenshot lands somewhere on the 100–180 ms ramp. Different Playwright versions land at different points along that ramp, producing baseline drift on every bump.Same Playwright-timing cascade pitfall as #11587/#11588/#11591/#11595.
Changes
packages/upload/test/visual/not-animated-styles.jsregisteringtransition: none !importantonvaadin-upload-button:host, :host::before, :host::after.upload-buttonvisual tests for all 3 themes (aura,lumo,base).!importantis required because Aura is adopted intoadoptedStyleSheetsafterregisterStyles, and both rules sit at specificity 0,1,0.Baseline impact
Three Aura
*-hover.pngupload-button baselines shifted to the fully-opaque hover overlay end state (sub-LSB diff,MAX_DELTA = 1, button center byte-identical). Theactive,default,focus-ring,disabled, icon and accent baselines stay byte-identical, as do all Lumo and base baselines. Thevaadin-upload(legacy) andupload-file-list-thumbnailstests don't rendervaadin-upload-button, so they don't import this stylesheet.Test plan
yarn update:aura --group uploadruns in Docker produce byte-identical baselines (md5 confirmed).yarn test:{aura,lumo,base} --group upload— all 38/38 (aura), 39/39 (lumo), 39/39 (base) pass against the new baselines.🤖 Generated with Claude Code