[Web Animations] Update snapshot of Web Animations, CSS Animations and CSS Transition...
authorgraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Feb 2020 17:29:14 +0000 (17:29 +0000)
committergraouts@webkit.org <graouts@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Feb 2020 17:29:14 +0000 (17:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=207263

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt: Added.
* web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html: Added.
* web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-id.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html:
* web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html:
* web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
* web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html: Removed.
* web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
* web-platform-tests/css/css-animations/Document-getAnimations.tentative.html:
* web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html:
* web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
* web-platform-tests/css/css-animations/Element-getAnimations.tentative.html:
* web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
* web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html:
* web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt: Added.
* web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html: Added.
* web-platform-tests/css/css-animations/animationevent-interface.js:
(test):
* web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html:
* web-platform-tests/css/css-animations/support/empty-sheet.css: Added.
* web-platform-tests/css/css-animations/support/w3c-import.log:
* web-platform-tests/css/css-animations/w3c-import.log:
* web-platform-tests/css/css-backgrounds/animations/border-bottom-left-radius-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-bottom-right-radius-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-bottom-width-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-left-width-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-right-width-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-top-left-radius-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-top-right-radius-composition-expected.txt:
* web-platform-tests/css/css-backgrounds/animations/border-top-width-composition-expected.txt:
* web-platform-tests/css/css-fonts/animations/font-variation-settings-composition-expected.txt:
* web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html:
* web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
* web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html: Removed.
* web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html:
* web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html:
* web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html:
* web-platform-tests/css/css-transitions/CSSTransition-finished.tentative.html:
* web-platform-tests/css/css-transitions/CSSTransition-ready.tentative.html:
* web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative.html:
* web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
* web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html:
* web-platform-tests/css/css-transitions/Element-getAnimations.tentative.html:
* web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html:
* web-platform-tests/css/css-transitions/KeyframeEffect-target.tentative.html:
* web-platform-tests/css/css-transitions/README.md:
* web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt: Added.
* web-platform-tests/css/css-transitions/animations/text-shadow-composition.html: Added.
* web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt: Added.
* web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html: Added.
* web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt: Added.
* web-platform-tests/css/css-transitions/animations/vertical-align-composition.html: Added.
* web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt: Added.
* web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html: Added.
* web-platform-tests/css/css-transitions/animations/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log.
* web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt: Added.
* web-platform-tests/css/css-transitions/animations/z-index-interpolation.html: Added.
* web-platform-tests/css/css-transitions/before-load-001.html:
* web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt:
* web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html:
* web-platform-tests/css/css-transitions/properties-value-001.html:
* web-platform-tests/css/css-transitions/properties-value-002.html:
* web-platform-tests/css/css-transitions/properties-value-003.html:
* web-platform-tests/css/css-transitions/properties-value-auto-001.html:
* web-platform-tests/css/css-transitions/properties-value-implicit-001.html:
* web-platform-tests/css/css-transitions/properties-value-inherit-001.html:
* web-platform-tests/css/css-transitions/properties-value-inherit-002.html:
* web-platform-tests/css/css-transitions/properties-value-inherit-003.html:
* web-platform-tests/css/css-transitions/pseudo-elements-001.html:
* web-platform-tests/css/css-transitions/transition-001.html:
* web-platform-tests/css/css-transitions/transition-delay-001.html:
* web-platform-tests/css/css-transitions/transition-duration-001.html:
* web-platform-tests/css/css-transitions/transition-property-001.html:
* web-platform-tests/css/css-transitions/transition-property-002.html:
* web-platform-tests/css/css-transitions/transitionevent-interface.html:
* web-platform-tests/css/css-transitions/w3c-import.log:
* web-platform-tests/css/support/interpolation-testcommon.js:
(cssAnimationsInterpolation.isSupported):
(cssTransitionsInterpolation.isSupported):
(cssTransitionAllInterpolation.isSupported):
(webAnimationsInterpolation.isSupported):
(webAnimationsInterpolation.interpolateComposite):
(createInterpolationTestTargets):
(create_tests):
(test_interpolation):
* web-platform-tests/web-animations/README.md:
* web-platform-tests/web-animations/animation-model/animation-types/property-list.js:
(testAnimationSamplesWithAnyOrder):
* web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt: Added.
* web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html: Added.
* web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log:
* web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
* web-platform-tests/web-animations/interfaces/Animatable/animate.html:
* web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
* web-platform-tests/web-animations/interfaces/Animation/commitStyles.html:
* web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt: Added.
* web-platform-tests/web-animations/interfaces/Animation/onremove.html: Added.
* web-platform-tests/web-animations/interfaces/Animation/pause.html:
* web-platform-tests/web-animations/interfaces/Animation/play.html:
* web-platform-tests/web-animations/interfaces/Animation/w3c-import.log:
* web-platform-tests/web-animations/interfaces/AnimationEffect/updateTiming.html:
* web-platform-tests/web-animations/interfaces/AnimationPlaybackEvent/w3c-import.log:
* web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt: Removed.
* web-platform-tests/web-animations/interfaces/Document/w3c-import.log:
* web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt: Added.
* web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations.html.
* web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/w3c-import.log.
* web-platform-tests/web-animations/interfaces/DocumentTimeline/w3c-import.log:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html:
* web-platform-tests/web-animations/interfaces/KeyframeEffect/w3c-import.log:
* web-platform-tests/web-animations/testcommon.js:
(cubicBezier): Deleted.
* web-platform-tests/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/playing-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-expected.html: Added.
* web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html: Added.
* web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html:
* web-platform-tests/web-animations/timing-model/animations/sync-start-times-expected.html: Added.
* web-platform-tests/web-animations/timing-model/animations/sync-start-times.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-expected.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-expected.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-expected.html: Added.
* web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html: Added.
* web-platform-tests/web-animations/timing-model/animations/w3c-import.log:
* web-platform-tests/web-animations/w3c-import.log:

LayoutTests:

* TestExpectations:
* tests-options.json:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255821 268f45cc-cd09-0410-ab3c-d52691b4dbfc

148 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/import-expectations.json
LayoutTests/imported/w3c/resources/resource-files.json
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-id.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animationevent-interface.js
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/empty-sheet.css [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/css/css-animations/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-bottom-left-radius-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-bottom-right-radius-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-bottom-width-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-left-width-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-right-width-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-top-left-radius-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-top-right-radius-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-top-width-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-finished.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-ready.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/Element-getAnimations.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/KeyframeEffect-target.tentative.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/README.md
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/w3c-import.log [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/before-load-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-002.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-003.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-auto-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-implicit-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-002.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/properties-value-inherit-003.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/pseudo-elements-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-delay-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-duration-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-property-001.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transition-property-002.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/transitionevent-interface.html
LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/css/support/interpolation-testcommon.js
LayoutTests/imported/w3c/web-platform-tests/web-animations/README.md
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/property-list.js
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/commitStyles.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/pause.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/play.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/AnimationEffect/updateTiming.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/AnimationPlaybackEvent/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html [moved from LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations.html with 61% similarity]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/w3c-import.log [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/DocumentTimeline/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/testcommon.js
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/playing-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/sync-start-times-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-expected.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/web-animations/w3c-import.log
LayoutTests/tests-options.json

index 8d1e15f..35839b8 100644 (file)
@@ -1,3 +1,13 @@
+2020-02-05  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Update snapshot of Web Animations, CSS Animations and CSS Transitions WPT tests
+        https://bugs.webkit.org/show_bug.cgi?id=207263
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+        * tests-options.json:
+
 2020-02-05  Jason Lawrence  <lawrence.j@apple.com>
 
         Regression (r252014?) [ Mac wk2 ] http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration.html is flaky failing.
index c868238..f8d7434 100644 (file)
@@ -3501,3 +3501,15 @@ webkit.org/b/206753 imported/w3c/web-platform-tests/css/css-backgrounds/first-le
 webkit.org/b/206578 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html [ Crash ]
 webkit.org/b/206579 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/background-size/vector/zero-height-ratio-auto-5px.html [ Crash ]
 webkit.org/b/206579 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/background-size/vector/zero-width-ratio-auto-5px.html [ Crash ]
+
+webkit.org/b/207260 imported/w3c/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html [ ImageOnlyFailure ]
+webkit.org/b/207260 imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html [ ImageOnlyFailure ]
+webkit.org/b/207260 imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html [ ImageOnlyFailure ]
+webkit.org/b/207260 imported/w3c/web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html [ ImageOnlyFailure ]
+
+webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html [ Skip ]
+webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html [ Skip ]
+webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition.html [ Skip ]
+webkit.org/b/207261 [ Debug ] imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition.html [ Skip ]
+
+webkit.org/b/207262 imported/w3c/web-platform-tests/web-animations/timing-model/animations/sync-start-times.html [ Pass ImageOnlyFailure ]
index 171c07b..1cfade3 100644 (file)
@@ -1,3 +1,166 @@
+2020-02-05  Antoine Quint  <graouts@apple.com>
+
+        [Web Animations] Update snapshot of Web Animations, CSS Animations and CSS Transitions WPT tests
+        https://bugs.webkit.org/show_bug.cgi?id=207263
+
+        Reviewed by Youenn Fablet.
+
+        * resources/import-expectations.json:
+        * resources/resource-files.json:
+        * web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt: Added.
+        * web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html: Added.
+        * web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-id.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html:
+        * web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html:
+        * web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
+        * web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html: Removed.
+        * web-platform-tests/css/css-animations/Document-getAnimations.tentative-expected.txt:
+        * web-platform-tests/css/css-animations/Document-getAnimations.tentative.html:
+        * web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html:
+        * web-platform-tests/css/css-animations/Element-getAnimations.tentative-expected.txt:
+        * web-platform-tests/css/css-animations/Element-getAnimations.tentative.html:
+        * web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html:
+        * web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html:
+        * web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt: Added.
+        * web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html: Added.
+        * web-platform-tests/css/css-animations/animationevent-interface.js:
+        (test):
+        * web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html:
+        * web-platform-tests/css/css-animations/support/empty-sheet.css: Added.
+        * web-platform-tests/css/css-animations/support/w3c-import.log:
+        * web-platform-tests/css/css-animations/w3c-import.log:
+        * web-platform-tests/css/css-backgrounds/animations/border-bottom-left-radius-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-bottom-right-radius-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-bottom-width-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-slice-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-image-width-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-left-width-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-right-width-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-top-left-radius-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-top-right-radius-composition-expected.txt:
+        * web-platform-tests/css/css-backgrounds/animations/border-top-width-composition-expected.txt:
+        * web-platform-tests/css/css-fonts/animations/font-variation-settings-composition-expected.txt:
+        * web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt: Removed.
+        * web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html: Removed.
+        * web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSTransition-finished.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSTransition-ready.tentative.html:
+        * web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative.html:
+        * web-platform-tests/css/css-transitions/Document-getAnimations.tentative-expected.txt:
+        * web-platform-tests/css/css-transitions/Document-getAnimations.tentative.html:
+        * web-platform-tests/css/css-transitions/Element-getAnimations.tentative.html:
+        * web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html:
+        * web-platform-tests/css/css-transitions/KeyframeEffect-target.tentative.html:
+        * web-platform-tests/css/css-transitions/README.md:
+        * web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt: Added.
+        * web-platform-tests/css/css-transitions/animations/text-shadow-composition.html: Added.
+        * web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt: Added.
+        * web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html: Added.
+        * web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt: Added.
+        * web-platform-tests/css/css-transitions/animations/vertical-align-composition.html: Added.
+        * web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt: Added.
+        * web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html: Added.
+        * web-platform-tests/css/css-transitions/animations/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log.
+        * web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt: Added.
+        * web-platform-tests/css/css-transitions/animations/z-index-interpolation.html: Added.
+        * web-platform-tests/css/css-transitions/before-load-001.html:
+        * web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed-expected.txt:
+        * web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html:
+        * web-platform-tests/css/css-transitions/properties-value-001.html:
+        * web-platform-tests/css/css-transitions/properties-value-002.html:
+        * web-platform-tests/css/css-transitions/properties-value-003.html:
+        * web-platform-tests/css/css-transitions/properties-value-auto-001.html:
+        * web-platform-tests/css/css-transitions/properties-value-implicit-001.html:
+        * web-platform-tests/css/css-transitions/properties-value-inherit-001.html:
+        * web-platform-tests/css/css-transitions/properties-value-inherit-002.html:
+        * web-platform-tests/css/css-transitions/properties-value-inherit-003.html:
+        * web-platform-tests/css/css-transitions/pseudo-elements-001.html:
+        * web-platform-tests/css/css-transitions/transition-001.html:
+        * web-platform-tests/css/css-transitions/transition-delay-001.html:
+        * web-platform-tests/css/css-transitions/transition-duration-001.html:
+        * web-platform-tests/css/css-transitions/transition-property-001.html:
+        * web-platform-tests/css/css-transitions/transition-property-002.html:
+        * web-platform-tests/css/css-transitions/transitionevent-interface.html:
+        * web-platform-tests/css/css-transitions/w3c-import.log:
+        * web-platform-tests/css/support/interpolation-testcommon.js:
+        (cssAnimationsInterpolation.isSupported):
+        (cssTransitionsInterpolation.isSupported):
+        (cssTransitionAllInterpolation.isSupported):
+        (webAnimationsInterpolation.isSupported):
+        (webAnimationsInterpolation.interpolateComposite):
+        (createInterpolationTestTargets):
+        (create_tests):
+        (test_interpolation):
+        * web-platform-tests/web-animations/README.md:
+        * web-platform-tests/web-animations/animation-model/animation-types/property-list.js:
+        (testAnimationSamplesWithAnyOrder):
+        * web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt: Added.
+        * web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html: Added.
+        * web-platform-tests/web-animations/animation-model/combining-effects/w3c-import.log:
+        * web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
+        * web-platform-tests/web-animations/interfaces/Animatable/animate.html:
+        * web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:
+        * web-platform-tests/web-animations/interfaces/Animation/commitStyles.html:
+        * web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt: Added.
+        * web-platform-tests/web-animations/interfaces/Animation/onremove.html: Added.
+        * web-platform-tests/web-animations/interfaces/Animation/pause.html:
+        * web-platform-tests/web-animations/interfaces/Animation/play.html:
+        * web-platform-tests/web-animations/interfaces/Animation/w3c-import.log:
+        * web-platform-tests/web-animations/interfaces/AnimationEffect/updateTiming.html:
+        * web-platform-tests/web-animations/interfaces/AnimationPlaybackEvent/w3c-import.log:
+        * web-platform-tests/web-animations/interfaces/Document/getAnimations-expected.txt: Removed.
+        * web-platform-tests/web-animations/interfaces/Document/w3c-import.log:
+        * web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations-expected.txt: Added.
+        * web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Document/getAnimations.html.
+        * web-platform-tests/web-animations/interfaces/DocumentOrShadowRoot/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/w3c-import.log.
+        * web-platform-tests/web-animations/interfaces/DocumentTimeline/w3c-import.log:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/setKeyframes.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html:
+        * web-platform-tests/web-animations/interfaces/KeyframeEffect/w3c-import.log:
+        * web-platform-tests/web-animations/testcommon.js:
+        (cubicBezier): Deleted.
+        * web-platform-tests/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/playing-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-expected.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html:
+        * web-platform-tests/web-animations/timing-model/animations/sync-start-times-expected.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/sync-start-times.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast-expected.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-fast.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow-expected.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-slow.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero-expected.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/update-playback-rate-zero.html: Added.
+        * web-platform-tests/web-animations/timing-model/animations/w3c-import.log:
+        * web-platform-tests/web-animations/w3c-import.log:
+
 2020-02-04  Rob Buis  <rbuis@igalia.com>
 
         Tighten up stylesheet loading
index e7fbc8c..a3be377 100644 (file)
@@ -14,6 +14,7 @@
     "custom-elements": "import", 
     "shadow-dom": "import", 
     "tools": "import", 
+    "web-animations": "import", 
     "web-platform-tests/2dcontext": "import", 
     "web-platform-tests/2dcontext/imagebitmap": "import", 
     "web-platform-tests/2dcontext/transformations/canvas_transformations_reset_001-ref.html": "import", 
     "web-platform-tests/worklets": "skip", 
     "web-platform-tests/x-frame-options": "skip", 
     "web-platform-tests/xhr": "import"
-}
+}
\ No newline at end of file
index 6c5da71..6e79840 100644 (file)
         "web-platform-tests/css/WOFF2/support/available-001a.xht",
         "web-platform-tests/css/WOFF2/support/available-001b.xht",
         "web-platform-tests/css/WOFF2/testcaseindex.xht",
+        "web-platform-tests/css/css-animations/keyframes-remove-documentElement-crash.html",
         "web-platform-tests/css/css-backgrounds/background-attachment-local-scrolling.htm",
         "web-platform-tests/css/css-backgrounds/background-clip-content-box.html",
         "web-platform-tests/css/css-backgrounds/background-clip-padding-box-with-border-radius.html",
index 374a55b..fd2197f 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>AnimationEffect.getComputedTiming() for CSS animations</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 77fb133..b76af2c 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>Canceling a CSS animation</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative-expected.txt
new file mode 100644 (file)
index 0000000..1b0759b
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS Animations are composited by their order in the animation-name property. 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html
new file mode 100644 (file)
index 0000000..225efd2
--- /dev/null
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Animation composite order</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations-2/#animation-composite-order">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/testcommon.js"></script>
+<style>
+@keyframes margin50 {
+  from {
+    margin-left: 50px;
+  }
+  to {
+    margin-left: 50px;
+  }
+}
+@keyframes margin100 {
+  from {
+    margin-left: 100px;
+  }
+  to {
+    margin-left: 100px;
+  }
+}
+</style>
+<div id="log"</div>
+<script>
+'use strict';
+
+promise_test(async t => {
+  const div = addDiv(t);
+  div.style.animation = 'margin100 100s';
+  assert_equals(getComputedStyle(div).marginLeft, '100px');
+  div.style.animation = 'margin50 100s, margin100 100s';
+  // The margin should be unaffected by margin50 since it is named earlier
+  // in the animation list.
+  assert_equals(getComputedStyle(div).marginLeft, '100px');
+}, "Animations are composited by their order in the animation-name property.");
+</script>
index 4f345b6..bbf35d5 100644 (file)
@@ -2,7 +2,7 @@
 <meta charset=utf-8>
 <title>CSSAnimation.effect</title>
 <meta name="timeout" content="long">
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 8969abd..57dd0d5 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.finished</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 056a544..e4d1f85 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.currentTime</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
@@ -56,8 +56,8 @@ promise_test(async t => {
   const animation = div.getAnimations()[0];
   await animation.ready;
 
-  assert_throws(
-    new TypeError(),
+  assert_throws_js(
+    TypeError,
     () => {
       animation.currentTime = null;
     },
index 71bd2a0..623e01d 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.id</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 19a1487..acfdc13 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.playState</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 4047fe0..f70ebd1 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.ready</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 98831a5..edef3b2 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.startTime</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/#cssanimation">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative-expected.txt
deleted file mode 100644 (file)
index 84af7e0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-PASS getAnimations returns CSSAnimation objects 
-PASS getAnimations returns CSS transitions/animations, and script-generated animations in the expected order 
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html
deleted file mode 100644 (file)
index 9af97f3..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>CSSPseudoElement.getAnimations() for CSS animations</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
-<link rel="help" href="https://drafts.csswg.org/css-animations-2/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/testcommon.js"></script>
-<style>
-@keyframes anim1 { }
-@keyframes anim2 { }
-.before::before {
-  animation: anim1 10s;
-  content: '';
-}
-.after-with-mix-anims-trans::after {
-  content: '';
-  animation: anim1 10s, anim2 10s;
-  width: 0px;
-  height: 0px;
-  transition: all 100s;
-}
-.after-change::after {
-  width: 100px;
-  height: 100px;
-  content: '';
-}
-</style>
-<div id="log"></div>
-<script>
-'use strict';
-
-test(t => {
-  const div = addDiv(t, { class: 'before' });
-  const pseudoTarget = document.getAnimations()[0].effect.target;
-  assert_equals(pseudoTarget.getAnimations().length, 1,
-                'Expected number of animations are returned');
-  assert_equals(pseudoTarget.getAnimations()[0].animationName, 'anim1',
-                'CSS animation name matches');
-}, 'getAnimations returns CSSAnimation objects');
-
-test(t => {
-  const div = addDiv(t, { class: 'after-with-mix-anims-trans' });
-  // Trigger transitions
-  flushComputedStyle(div);
-  div.classList.add('after-change');
-
-  // Create additional animation on the pseudo-element from script
-  const pseudoTarget = document.getAnimations()[0].effect.target;
-  const effect = new KeyframeEffect(pseudoTarget,
-                                    { background: ["blue", "red"] },
-                                    3 * MS_PER_SEC);
-  const newAnimation = new Animation(effect, document.timeline);
-  newAnimation.id = 'scripted-anim';
-  newAnimation.play();
-
-  // Check order - the script-generated animation should appear later
-  const anims = pseudoTarget.getAnimations();
-  assert_equals(anims.length, 5,
-                'Got expected number of animations/trnasitions running on ' +
-                '::after pseudo element');
-  assert_equals(anims[0].transitionProperty, 'height',
-                '1st animation is the 1st transition sorted by name');
-  assert_equals(anims[1].transitionProperty, 'width',
-                '2nd animation is the 2nd transition sorted by name ');
-  assert_equals(anims[2].animationName, 'anim1',
-                '3rd animation is the 1st animation in animation-name list');
-  assert_equals(anims[3].animationName, 'anim2',
-                '4rd animation is the 2nd animation in animation-name list');
-  assert_equals(anims[4].id, 'scripted-anim',
-                'Animation added by script appears last');
-}, 'getAnimations returns CSS transitions/animations, and script-generated ' +
-   'animations in the expected order');
-
-</script>
index 9958b5e..3c62382 100644 (file)
@@ -1,6 +1,7 @@
 
 PASS getAnimations for non-animated content 
 PASS getAnimations for CSS Animations 
+PASS Order of CSS Animations - within an element unaffected by start time 
 PASS Order of CSS Animations - within an element 
 PASS Order of CSS Animations - across elements 
 PASS Order of CSS Animations - across and within elements 
@@ -12,5 +13,5 @@ PASS Finished but not filling CSS Animations are not returned
 PASS Yet-to-start CSS Animations are returned 
 PASS CSS Animations canceled via the API are not returned 
 PASS CSS Animations canceled and restarted via the API are returned 
-FAIL CSS Animations targetting (pseudo-)elements should have correct order after sorting assert_equals: Animation #2 has expected target expected (object) Element node <div id="parent" style="animation: animBottom 100s"><div ... but got (undefined) undefined
+FAIL CSS Animations targetting (pseudo-)elements should have correct order after sorting assert_equals: Animation #1 has null pseudo type expected (object) null but got (undefined) undefined
 
index 175acf8..4a9768a 100644 (file)
@@ -50,6 +50,24 @@ test(t => {
 
 test(t => {
   const div = addDiv(t);
+  const animation1 = 'animLeft 100s'
+  const animation2 = 'animBottom 100s'
+  div.style.animation = animation1;
+  const animations1 = document.getAnimations();
+  assert_equals(animations1.length, 1,
+                'getAnimations returns all running CSS Animations');
+  div.style.animation = animation2 + ', ' + animation1;
+  const animations = document.getAnimations();
+  assert_equals(animations.length, 2,
+                'getAnimations returns all running CSS Animations');
+  assert_equals(animations[0].animationName, 'animBottom',
+                'Order of first animation returned');
+  assert_equals(animations[1].animationName, 'animLeft',
+                'Order of second animation returned');
+}, 'Order of CSS Animations - within an element unaffected by start time');
+
+test(t => {
+  const div = addDiv(t);
   div.style.animation = 'animLeft 100s, animTop 100s, animRight 100s, ' +
                         'animBottom 100s';
 
@@ -298,12 +316,12 @@ test(t => {
 
     if (pseudo) {
       assert_equals(
-        actual.effect.target.element,
+        actual.effect.target,
         element,
         `Animation #${index + 1} has expected target`
       );
       assert_equals(
-        actual.effect.target.type,
+        actual.effect.pseudoElement,
         pseudo,
         `Animation #${index + 1} has expected pseudo type`
       );
@@ -313,6 +331,11 @@ test(t => {
         element,
         `Animation #${index + 1} has expected target`
       );
+      assert_equals(
+        actual.effect.pseudoElement,
+        null,
+        `Animation #${index + 1} has null pseudo type`
+      );
     }
   }
 }, 'CSS Animations targetting (pseudo-)elements should have correct order '
index 0a4c5d1..a5e2288 100644 (file)
@@ -3,7 +3,7 @@
 <title>
 Element.getAnimations() - Dynamic changes to the list of CSS animations
 </title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 4a1b167..a0c9d09 100644 (file)
@@ -17,8 +17,8 @@ PASS getAnimations returns objects with the same identity
 PASS getAnimations for CSS Animations that are canceled 
 PASS getAnimations for CSS Animations follows animation-name order 
 PASS { subtree: false } on a leaf element returns the element's animations and ignore pseudo-elements 
-FAIL { subtree: true } on a leaf element returns the element's animations and its pseudo-elements' animations assert_equals: The animation targeting the ::before pseudo-element should be returned second expected (string) "::before" but got (undefined) undefined
+FAIL { subtree: true } on a leaf element returns the element's animations and its pseudo-elements' animations assert_equals: The animation targeting the parent element should be returned first expected (object) null but got (undefined) undefined
 PASS { subtree: false } on an element with a child returns only the element's animations 
-FAIL { subtree: true } on an element with a child returns animations from the element, its pseudo-elements, its child and its child pseudo-elements assert_equals: The animation targeting the ::before pseudo-element should be returned second expected (string) "::before" but got (undefined) undefined
+FAIL { subtree: true } on an element with a child returns animations from the element, its pseudo-elements, its child and its child pseudo-elements assert_equals: The animation targeting the parent element should be returned first expected (object) null but got (undefined) undefined
 FAIL { subtree: true } on an element with many descendants returns animations from all the descendants assert_equals: The animation targeting the child1 element should be returned second expected Element node <div id="child1" style="animation: anim1 100s;"><div id="... but got Element node <div id="grandchild1" style="animation: anim1 100s;"></div>
 
index 5aa7416..284b249 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>Element.getAnimations() for CSS animations</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
@@ -303,8 +303,8 @@ test(t => {
                 '#target::before': 'animation: anim1 10s;' });
   const target = addDiv(t, { 'id': 'target' });
   target.style.animation = 'anim1 100s';
-
   const animations = target.getAnimations({ subtree: false });
+
   assert_equals(animations.length, 1,
                 'Should find only the element');
   assert_equals(animations[0].effect.target, target,
@@ -317,18 +317,21 @@ test(t => {
                 '#target::before': 'animation: anim1 10s;' });
   const target = addDiv(t, { 'id': 'target' });
   target.style.animation = 'anim1 100s';
-
   const animations = target.getAnimations({ subtree: true });
+
   assert_equals(animations.length, 3,
                 'getAnimations({ subtree: true }) ' +
                 'should return animations on pseudo-elements');
   assert_equals(animations[0].effect.target, target,
                 'The animation targeting the parent element ' +
                 'should be returned first');
-  assert_equals(animations[1].effect.target.type, '::before',
+  assert_equals(animations[0].effect.pseudoElement, null,
+                'The animation targeting the parent element ' +
+                'should be returned first')
+  assert_equals(animations[1].effect.pseudoElement, '::before',
                 'The animation targeting the ::before pseudo-element ' +
                 'should be returned second');
-  assert_equals(animations[2].effect.target.type, '::after',
+  assert_equals(animations[2].effect.pseudoElement, '::after',
                 'The animation targeting the ::after pesudo-element ' +
                 'should be returned last');
 }, '{ subtree: true } on a leaf element returns the element\'s animations'
@@ -366,34 +369,37 @@ test(t => {
 
   const animations = parent.getAnimations({ subtree: true });
   assert_equals(animations.length, 6,
-                'Should find all elements, pesudo-elements that parent has');
+                'Should find all elements, pseudo-elements that parent has');
 
   assert_equals(animations[0].effect.target, parent,
                 'The animation targeting the parent element ' +
                 'should be returned first');
-  assert_equals(animations[1].effect.target.type, '::before',
+  assert_equals(animations[0].effect.pseudoElement, null,
+                'The animation targeting the parent element ' +
+                'should be returned first');
+  assert_equals(animations[1].effect.pseudoElement, '::before',
                 'The animation targeting the ::before pseudo-element ' +
                 'should be returned second');
-  assert_equals(animations[1].effect.target.element, parent,
+  assert_equals(animations[1].effect.target, parent,
                 'This ::before element should be child of parent element');
-  assert_equals(animations[2].effect.target.type, '::after',
+  assert_equals(animations[2].effect.pseudoElement, '::after',
                 'The animation targeting the ::after pesudo-element ' +
                 'should be returned third');
-  assert_equals(animations[2].effect.target.element, parent,
+  assert_equals(animations[2].effect.target, parent,
                 'This ::after element should be child of parent element');
 
   assert_equals(animations[3].effect.target, child,
                 'The animation targeting the child element ' +
                 'should be returned fourth');
-  assert_equals(animations[4].effect.target.type, '::before',
+  assert_equals(animations[4].effect.pseudoElement, '::before',
                 'The animation targeting the ::before pseudo-element ' +
                 'should be returned fifth');
-  assert_equals(animations[4].effect.target.element, child,
+  assert_equals(animations[4].effect.target, child,
                 'This ::before element should be child of child element');
-  assert_equals(animations[5].effect.target.type, '::after',
+  assert_equals(animations[5].effect.pseudoElement, '::after',
                 'The animation targeting the ::after pesudo-element ' +
                 'should be returned last');
-  assert_equals(animations[5].effect.target.element, child,
+  assert_equals(animations[5].effect.target, child,
                 'This ::after element should be child of child element');
 }, '{ subtree: true } on an element with a child returns animations from the'
    + ' element, its pseudo-elements, its child and its child pseudo-elements');
index 053c7be..591cc15 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>KeyframeEffect.getKeyframes() for CSS animations</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 6c8aa66..4991762 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSAnimation.effect.target</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-animations-2/">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001-expected.txt
new file mode 100644 (file)
index 0000000..c7c8d39
--- /dev/null
@@ -0,0 +1,4 @@
+Some content
+
+PASS animations started before initial-containing-block creation properly function 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html
new file mode 100644 (file)
index 0000000..558c5ea
--- /dev/null
@@ -0,0 +1,53 @@
+<!doctype html>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Ãlvarez">
+<link rel="author" href="mailto:https://mozilla.org" title="Mozilla">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605610">
+<link rel="help" href="https://drafts.csswg.org/web-animations/#extensions-to-the-element-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+let t = async_test("animations started before initial-containing-block creation properly function");
+let loaded = false;
+let finished = false;
+let span;
+
+function check() {
+  if (!loaded || !finished)
+    return;
+
+  assert_equals(getComputedStyle(span).opacity, "1", "Animation should be properly finished");
+  t.done();
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+  span = document.createElement("span");
+  span.id = "myspan";
+  span.innerHTML = `Some content`;
+  document.body.appendChild(span);
+
+  let anim = span.animate([
+    {
+      opacity: "0",
+    },
+    {
+      opacity: "1",
+    },
+  ], {
+    duration: 300,
+  });
+
+  anim.finished.then(t.step_func(function() {
+    finished = true;
+    check();
+  }));
+});
+
+window.addEventListener("load", t.step_func(function() {
+  loaded = true;
+  check();
+}));
+</script>
+<!-- It is important that there are no more script after this stylesheet -->
+<link rel="stylesheet" href="empty-sheet.css?pipe=trickle(d2)">
+<body>
+</body>
index e35b7fc..fcb7ceb 100644 (file)
@@ -10,7 +10,7 @@
   }, "the event inherts from Event");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent();
     }, 'First argument is required, so was expecting a TypeError.');
   }, 'Missing type argument');
   }, "elapsedTime set to an object with a valueOf function");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: NaN});
     }, 'elapsedTime cannot be NaN so was expecting a TypeError');
   }, "elapsedTime cannot be set to NaN");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: Infinity});
     }, 'elapsedTime cannot be Infinity so was expecting a TypeError');
   }, "elapsedTime cannot be set to Infinity");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: -Infinity});
     }, 'elapsedTime cannot be -Infinity so was expecting a TypeError');
   }, "elapsedTime cannot be set to -Infinity");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: "sample"});
     }, 'elapsedTime cannot be a string so was expecting a TypeError');
   }, "elapsedTime cannot be set to 'sample'");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: [0.5, 1.0]});
     }, 'elapsedTime cannot be a multi-element array so was expecting a TypeError');
   }, "elapsedTime cannot be set to [0.5, 1.0]");
 
   test(function() {
-    assert_throws(new TypeError(), function() {
+    assert_throws_js(TypeError, function() {
       new AnimationEvent("test", {elapsedTime: { sample: 0.5}});
     }, 'elapsedTime cannot be an object so was expecting a TypeError');
   }, "elapsedTime cannot be set to an object");
index aba7f9c..9573ce1 100644 (file)
@@ -1,8 +1,7 @@
 <!doctype html>
+<html class="test-wait">
 <title>CSS Animations Test: Chrome crash when removing documentElement and @keyframes stylesheet</title>
 <link rel="help" href="https://crbug.com/999522">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
 <style>
   @keyframes anim {
     from { color: pink }
 </style>
 <div></div>
 <script>
-  test(() => {
-    document.body.offsetTop;
-    document.querySelector("style").remove();
-    document.documentElement.remove();
-  }, "Removing documentElement and @keyframes sheet should not crash.");
+window.addEventListener('load', () => {
+  document.body.offsetTop;
+  document.querySelector("style").remove();
+  // We need the root later to remove the test-wait class.
+  const root = document.documentElement;
+  document.documentElement.remove();
+
+  // rAF to make sure that style runs.
+  requestAnimationFrame(() => {
+    root.classList.remove('test-wait');
+  });
+});
 </script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/empty-sheet.css b/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/empty-sheet.css
new file mode 100644 (file)
index 0000000..e69de29
index 0aec57a..4c43a9e 100644 (file)
@@ -14,4 +14,5 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
+/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/empty-sheet.css
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/support/testcommon.js
index e4423d1..eb3db90 100644 (file)
@@ -17,6 +17,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/AnimationEffect-getComputedTiming.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-animationName.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-canceling.tentative.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-effect.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-finished.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-getCurrentTime.tentative.html
@@ -25,13 +26,13 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-playState.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-ready.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSAnimation-startTime.tentative.html
-/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/CSSPseudoElement-getAnimations.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Document-getAnimations.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/KeyframeEffect-getKeyframes.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/KeyframeEffect-target.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/META.yml
+/LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-before-initial-box-construction-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-delay-008-expected.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-delay-008.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-animations/animation-delay-009-expected.html
index 66646a5..909bba2 100644 (file)
@@ -1,5 +1,23 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (-0.25) should be [75px] assert_equals: expected "75px " but got "35px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0) should be [100px] assert_equals: expected "100px " but got "60px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.25) should be [125px] assert_equals: expected "125px " but got "85px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.5) should be [150px] assert_equals: expected "150px " but got "110px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.75) should be [175px] assert_equals: expected "175px " but got "135px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1) should be [200px] assert_equals: expected "200px " but got "160px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1.25) should be [225px] assert_equals: expected "225px " but got "185px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (-0.25) should be [75px 100px] assert_equals: expected "75px 100px " but got "85px 135px "
+PASS Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0) should be [100px 120px] 
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.25) should be [125px 140px] assert_equals: expected "125px 140px " but got "115px 105px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px 90px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.75) should be [175px 180px] assert_equals: expected "175px 180px " but got "145px 75px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1) should be [200px] assert_equals: expected "200px " but got "160px 60px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1.25) should be [225px 220px] assert_equals: expected "225px 220px " but got "175px 45px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (-0.25) should be [75px 220px] assert_equals: expected "75px 220px " but got "25px 145px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0) should be [100px 200px] assert_equals: expected "100px 200px " but got "60px 140px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.25) should be [125px 180px] assert_equals: expected "125px 180px " but got "95px 135px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px "
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.75) should be [175px 140px] assert_equals: expected "175px 140px " but got "165px 125px "
+PASS Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1) should be [200px 120px] 
+FAIL Compositing: property <border-bottom-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1.25) should be [225px 100px] assert_equals: expected "225px 100px " but got "235px 115px "
 
index 66646a5..d0fffa8 100644 (file)
@@ -1,5 +1,23 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (-0.25) should be [75px] assert_equals: expected "75px " but got "35px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0) should be [100px] assert_equals: expected "100px " but got "60px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.25) should be [125px] assert_equals: expected "125px " but got "85px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.5) should be [150px] assert_equals: expected "150px " but got "110px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.75) should be [175px] assert_equals: expected "175px " but got "135px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1) should be [200px] assert_equals: expected "200px " but got "160px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1.25) should be [225px] assert_equals: expected "225px " but got "185px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (-0.25) should be [75px 100px] assert_equals: expected "75px 100px " but got "85px 135px "
+PASS Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0) should be [100px 120px] 
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.25) should be [125px 140px] assert_equals: expected "125px 140px " but got "115px 105px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px 90px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.75) should be [175px 180px] assert_equals: expected "175px 180px " but got "145px 75px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1) should be [200px] assert_equals: expected "200px " but got "160px 60px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1.25) should be [225px 220px] assert_equals: expected "225px 220px " but got "175px 45px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (-0.25) should be [75px 220px] assert_equals: expected "75px 220px " but got "25px 145px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0) should be [100px 200px] assert_equals: expected "100px 200px " but got "60px 140px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.25) should be [125px 180px] assert_equals: expected "125px 180px " but got "95px 135px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px "
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.75) should be [175px 140px] assert_equals: expected "175px 140px " but got "165px 125px "
+PASS Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1) should be [200px 120px] 
+FAIL Compositing: property <border-bottom-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1.25) should be [225px 100px] assert_equals: expected "225px 100px " but got "235px 115px "
 
index 66646a5..1fc8aa4 100644 (file)
@@ -1,5 +1,22 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] 
+PASS Compositing: property <border-bottom-width> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] 
+PASS Compositing: property <border-bottom-width> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] 
+PASS Compositing: property <border-bottom-width> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] 
+PASS Compositing: property <border-bottom-width> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] 
+PASS Compositing: property <border-bottom-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] 
+PASS Compositing: property <border-bottom-width> underlying [10em] from add [100px] to add [20em] at (-0.3) should be [calc(130px + 4em)] 
+PASS Compositing: property <border-bottom-width> underlying [10em] from add [100px] to add [20em] at (0) should be [calc(100px + 10em)] 
+PASS Compositing: property <border-bottom-width> underlying [10em] from add [100px] to add [20em] at (0.5) should be [calc(50px + 20em)] 
+PASS Compositing: property <border-bottom-width> underlying [10em] from add [100px] to add [20em] at (1) should be [30em] 
+PASS Compositing: property <border-bottom-width> underlying [10em] from add [100px] to add [20em] at (1.5) should be [calc(-50px + 40em)] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] 
+PASS Compositing: property <border-bottom-width> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] 
 
index 66646a5..12b850e 100644 (file)
@@ -1,5 +1,58 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.75) should be [77 79 81 83] assert_equals: expected "77 79 81 83 " but got "76 77 78 79 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1) should be [102 104 106 108] assert_equals: expected "102 104 106 108 " but got "101 102 103 104 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1.25) should be [127 129 131 133] assert_equals: expected "127 129 131 133 " but got "126 127 128 129 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (-0.25) should be [175 250 300 450] assert_equals: expected "175 250 300 450 " but got "75 50 0 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0) should be [200 300 400 500] assert_equals: expected "200 300 400 500 " but got "100 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.25) should be [225 350 500 550] assert_equals: expected "225 350 500 550 " but got "125 150 200 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.5) should be [250 400 600 600] assert_equals: expected "250 400 600 600 " but got "150 200 300 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.75) should be [275 450 700 650] assert_equals: expected "275 450 700 650 " but got "175 250 400 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1) should be [300 500 800 700] assert_equals: expected "300 500 800 700 " but got "200 300 500 "
+FAIL Compositing: property <border-image-outset> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1.25) should be [325 550 900 750] assert_equals: expected "325 550 900 750 " but got "225 350 600 "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (-0.25) should be [0 0 0px 0px] assert_equals: expected "0 0 0px 0px " but got "- 24 - 23 - 22px - 21px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0) should be [2 4 6px 8px] assert_equals: expected "2 4 6px 8px " but got "1 2 3px 4px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0.25) should be [27 29 31px 33px] assert_equals: expected "27 29 31px 33px " but got "26 27 28px 29px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0.5) should be [52 54 56px 58px] assert_equals: expected "52 54 56px 58px " but got "51 52 53px 54px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (0.75) should be [77 79 81px 83px] assert_equals: expected "77 79 81px 83px " but got "76 77 78px 79px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (1) should be [102 104 106px 108px] assert_equals: expected "102 104 106px 108px " but got "101 102 103px 104px "
+FAIL Compositing: property <border-image-outset> underlying [1 2 3px 4px] from add [1 2 3px 4px] to add [101 102 103px 104px] at (1.25) should be [127 129 131px 133px] assert_equals: expected "127 129 131px 133px " but got "126 127 128px 129px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (-0.25) should be [225px 225px 350px 350px] assert_equals: expected "225px 225px 350px 350px " but got "215px 205px 340px 330px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0) should be [200px 200px 300px 300px] assert_equals: expected "200px 200px 300px 300px " but got "190px 180px 290px 280px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.25) should be [175px 175px 250px 250px] assert_equals: expected "175px 175px 250px 250px " but got "165px 155px 240px 230px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.5) should be [150px 150px 200px 200px] assert_equals: expected "150px 150px 200px 200px " but got "140px 130px 190px 180px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.75) should be [125px 125px 150px 150px] assert_equals: expected "125px 125px 150px 150px " but got "115px 105px 140px 130px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (1) should be [100px] assert_equals: expected "100px " but got "90px 80px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (1.25) should be [75px 75px 50px 50px] assert_equals: expected "75px 75px 50px 50px " but got "65px 55px 40px 30px "
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (-0.25) should be [75 75px] assert_equals: expected "75 75px " but got "77.5 80px "
+PASS Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0) should be [100 100px] 
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.25) should be [125 125px] assert_equals: expected "125 125px " but got "122.5 120px "
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.5) should be [150 150px] assert_equals: expected "150 150px " but got "145 140px "
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.75) should be [175 175px] assert_equals: expected "175 175px " but got "167.5 160px "
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (1) should be [200 200px] assert_equals: expected "200 200px " but got "190 180px "
+FAIL Compositing: property <border-image-outset> underlying [10 20px] from replace [100 100px] to add [190 180px] at (1.25) should be [225 225px] assert_equals: expected "225 225px " but got "212.5 200px "
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (-0.25) should be [125px 125] assert_equals: expected "125px 125 " but got "112.5px 100 "
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0) should be [100px 100] assert_equals: expected "100px 100 " but got "90px 80 "
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.25) should be [75px 75] assert_equals: expected "75px 75 " but got "67.5px 60 "
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.5) should be [50px 50] assert_equals: expected "50px 50 " but got "45px 40 "
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.75) should be [25px 25] assert_equals: expected "25px 25 " but got "22.5px 20 "
+PASS Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1) should be [0px 0] 
+FAIL Compositing: property <border-image-outset> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0] assert_equals: expected "0px 0 " but got "- 22.5px - 20 "
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (-0.25) should be [75px 125px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0) should be [100px 150px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.25) should be [125px 175px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.5) should be [150px 200px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.75) should be [175px 225px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1) should be [200px 250px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1.25) should be [225px 275px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (-0.25) should be [100 150px] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0) should be [100 150px] 
+FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.25) should be [100 150px] assert_equals: expected "100 150px " but got ""
+FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.5) should be [200px 250] assert_equals: expected "200px 250 " but got ""
+FAIL Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (0.75) should be [200px 250] assert_equals: expected "200px 250 " but got ""
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (1) should be [200px 250] 
+PASS Compositing: property <border-image-outset> underlying [10 20] from add [100 150px] to add [200px 250] at (1.25) should be [200px 250] 
 
index 66646a5..47d97b4 100644 (file)
@@ -1,5 +1,58 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.75) should be [77 79 81 83] assert_equals: expected "77 79 81 83 " but got "76 77 78 79 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1) should be [102 104 106 108] assert_equals: expected "102 104 106 108 " but got "101 102 103 104 "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1.25) should be [127 129 131 133] assert_equals: expected "127 129 131 133 " but got "126 127 128 129 "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (-0.25) should be [175 250 300 450 fill] assert_equals: expected "175 250 300 450 fill " but got "75 50 0 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (0) should be [200 300 400 500 fill] assert_equals: expected "200 300 400 500 fill " but got "100 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (0.25) should be [225 350 500 550 fill] assert_equals: expected "225 350 500 550 fill " but got "125 150 200 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (0.5) should be [250 400 600 600 fill] assert_equals: expected "250 400 600 600 fill " but got "150 200 300 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (0.75) should be [275 450 700 650 fill] assert_equals: expected "275 450 700 650 fill " but got "175 250 400 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (1) should be [300 500 800 700 fill] assert_equals: expected "300 500 800 700 fill " but got "200 300 500 fill "
+FAIL Compositing: property <border-image-slice> underlying [100 200 300 400 fill] from add [100 fill] to add [200 300 500 fill] at (1.25) should be [325 550 900 750 fill] assert_equals: expected "325 550 900 750 fill " but got "225 350 600 fill "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (-0.25) should be [0 0 0% 0%] assert_equals: expected "0 0 0 % 0 % " but got "- 24 - 23 - 22 % - 21 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0) should be [2 4 6% 8%] assert_equals: expected "2 4 6 % 8 % " but got "1 2 3 % 4 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0.25) should be [27 29 31% 33%] assert_equals: expected "27 29 31 % 33 % " but got "26 27 28 % 29 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0.5) should be [52 54 56% 58%] assert_equals: expected "52 54 56 % 58 % " but got "51 52 53 % 54 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (0.75) should be [77 79 81% 83%] assert_equals: expected "77 79 81 % 83 % " but got "76 77 78 % 79 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (1) should be [102 104 106% 108%] assert_equals: expected "102 104 106 % 108 % " but got "101 102 103 % 104 % "
+FAIL Compositing: property <border-image-slice> underlying [1 2 3% 4%] from add [1 2 3% 4%] to add [101 102 103% 104%] at (1.25) should be [127 129 131% 133%] assert_equals: expected "127 129 131 % 133 % " but got "126 127 128 % 129 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (-0.25) should be [225% 225% 350% 350%] assert_equals: expected "225 % 225 % 350 % 350 % " but got "215 % 205 % 340 % 330 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (0) should be [200% 200% 300% 300%] assert_equals: expected "200 % 200 % 300 % 300 % " but got "190 % 180 % 290 % 280 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (0.25) should be [175% 175% 250% 250%] assert_equals: expected "175 % 175 % 250 % 250 % " but got "165 % 155 % 240 % 230 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (0.5) should be [150% 150% 200% 200%] assert_equals: expected "150 % 150 % 200 % 200 % " but got "140 % 130 % 190 % 180 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (0.75) should be [125% 125% 150% 150%] assert_equals: expected "125 % 125 % 150 % 150 % " but got "115 % 105 % 140 % 130 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (1) should be [100%] assert_equals: expected "100 % " but got "90 % 80 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20%] from add [190% 180% 290% 280%] to add [90% 80%] at (1.25) should be [75% 75% 50% 50%] assert_equals: expected "75 % 75 % 50 % 50 % " but got "65 % 55 % 40 % 30 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (-0.25) should be [75 75%] assert_equals: expected "75 75 % " but got "77.5 80 % "
+PASS Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (0) should be [100 100%] 
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (0.25) should be [125 125%] assert_equals: expected "125 125 % " but got "122.5 120 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (0.5) should be [150 150%] assert_equals: expected "150 150 % " but got "145 140 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (0.75) should be [175 175%] assert_equals: expected "175 175 % " but got "167.5 160 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (1) should be [200 200%] assert_equals: expected "200 200 % " but got "190 180 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20%] from replace [100 100%] to add [190 180%] at (1.25) should be [225 225%] assert_equals: expected "225 225 % " but got "212.5 200 % "
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (-0.25) should be [125% 125] assert_equals: expected "125 % 125 " but got "112.5 % 100 "
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0) should be [100% 100] assert_equals: expected "100 % 100 " but got "90 % 80 "
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0.25) should be [75% 75] assert_equals: expected "75 % 75 " but got "67.5 % 60 "
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0.5) should be [50% 50] assert_equals: expected "50 % 50 " but got "45 % 40 "
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (0.75) should be [25% 25] assert_equals: expected "25 % 25 " but got "22.5 % 20 "
+PASS Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (1) should be [0% 0] 
+FAIL Compositing: property <border-image-slice> underlying [10% 20] from add [90% 80] to replace [0% 0 0% 0] at (1.25) should be [0% 0] assert_equals: expected "0 % 0 " but got "- 22.5 % - 20 "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (-0.25) should be [100% 150%] assert_equals: expected "100 % 150 % " but got "75 % 125 % "
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0) should be [100% 150%] 
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0.25) should be [100% 150%] assert_equals: expected "100 % 150 % " but got "125 % 175 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0.5) should be [200% 250% fill] assert_equals: expected "200 % 250 % fill " but got "150 % 200 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (0.75) should be [200% 250% fill] assert_equals: expected "200 % 250 % fill " but got "175 % 225 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (1) should be [200% 250% fill] assert_equals: expected "200 % 250 % fill " but got "200 % 250 % "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100% 150%] to add [200% 250% fill] at (1.25) should be [200% 250% fill] assert_equals: expected "200 % 250 % fill " but got "225 % 275 % "
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (-0.25) should be [100 150%] 
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0) should be [100 150%] 
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.25) should be [100 150%] assert_equals: expected "100 150 % " but got "0 "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.5) should be [200% 250] assert_equals: expected "200 % 250 " but got "0 "
+FAIL Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (0.75) should be [200% 250] assert_equals: expected "200 % 250 " but got "0 "
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (1) should be [200% 250] 
+PASS Compositing: property <border-image-slice> underlying [10 20] from add [100 150%] to add [200% 250] at (1.25) should be [200% 250] 
 
index 66646a5..7e9e410 100644 (file)
@@ -1,5 +1,58 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (-0.25) should be [0] assert_equals: expected "0 " but got "- 24 - 23 - 22 - 21 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0) should be [2 4 6 8] assert_equals: expected "2 4 6 8 " but got "1 2 3 4 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.25) should be [27 29 31 33] assert_equals: expected "27 29 31 33 " but got "26 27 28 29 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.5) should be [52 54 56 58] assert_equals: expected "52 54 56 58 " but got "51 52 53 54 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (0.75) should be [77 79 81 83] assert_equals: expected "77 79 81 83 " but got "76 77 78 79 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1) should be [102 104 106 108] assert_equals: expected "102 104 106 108 " but got "101 102 103 104 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3 4] from add [1 2 3 4] to add [101 102 103 104] at (1.25) should be [127 129 131 133] assert_equals: expected "127 129 131 133 " but got "126 127 128 129 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (-0.25) should be [175 250 300 450] assert_equals: expected "175 250 300 450 " but got "75 50 0 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0) should be [200 300 400 500] assert_equals: expected "200 300 400 500 " but got "100 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.25) should be [225 350 500 550] assert_equals: expected "225 350 500 550 " but got "125 150 200 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.5) should be [250 400 600 600] assert_equals: expected "250 400 600 600 " but got "150 200 300 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (0.75) should be [275 450 700 650] assert_equals: expected "275 450 700 650 " but got "175 250 400 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1) should be [300 500 800 700] assert_equals: expected "300 500 800 700 " but got "200 300 500 "
+FAIL Compositing: property <border-image-width> underlying [100 200 300 400] from add [100] to add [200 300 500] at (1.25) should be [325 550 900 750] assert_equals: expected "325 550 900 750 " but got "225 350 600 "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (-0.25) should be [0 0 0px 0%] assert_equals: expected "0 0 0px 0 % " but got "- 24 - 23 - 22px - 21 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0) should be [2 4 6px 8%] assert_equals: expected "2 4 6px 8 % " but got "1 2 3px 4 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0.25) should be [27 29 31px 33%] assert_equals: expected "27 29 31px 33 % " but got "26 27 28px 29 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0.5) should be [52 54 56px 58%] assert_equals: expected "52 54 56px 58 % " but got "51 52 53px 54 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (0.75) should be [77 79 81px 83%] assert_equals: expected "77 79 81px 83 % " but got "76 77 78px 79 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (1) should be [102 104 106px 108%] assert_equals: expected "102 104 106px 108 % " but got "101 102 103px 104 % "
+FAIL Compositing: property <border-image-width> underlying [1 2 3px 4%] from add [1 2 3px 4%] to add [101 102 103px 104%] at (1.25) should be [127 129 131px 133%] assert_equals: expected "127 129 131px 133 % " but got "126 127 128px 129 % "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (-0.25) should be [225px 225px 350px 350px] assert_equals: expected "225px 225px 350px 350px " but got "215px 205px 340px 330px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0) should be [200px 200px 300px 300px] assert_equals: expected "200px 200px 300px 300px " but got "190px 180px 290px 280px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.25) should be [175px 175px 250px 250px] assert_equals: expected "175px 175px 250px 250px " but got "165px 155px 240px 230px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.5) should be [150px 150px 200px 200px] assert_equals: expected "150px 150px 200px 200px " but got "140px 130px 190px 180px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (0.75) should be [125px 125px 150px 150px] assert_equals: expected "125px 125px 150px 150px " but got "115px 105px 140px 130px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (1) should be [100px] assert_equals: expected "100px " but got "90px 80px "
+FAIL Compositing: property <border-image-width> underlying [10px 20px] from add [190px 180px 290px 280px] to add [90px 80px] at (1.25) should be [75px 75px 50px 50px] assert_equals: expected "75px 75px 50px 50px " but got "65px 55px 40px 30px "
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (-0.25) should be [75 75px] assert_equals: expected "75 75px " but got "77.5 80px "
+PASS Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0) should be [100 100px] 
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.25) should be [125 125px] assert_equals: expected "125 125px " but got "122.5 120px "
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.5) should be [150 150px] assert_equals: expected "150 150px " but got "145 140px "
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (0.75) should be [175 175px] assert_equals: expected "175 175px " but got "167.5 160px "
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (1) should be [200 200px] assert_equals: expected "200 200px " but got "190 180px "
+FAIL Compositing: property <border-image-width> underlying [10 20px] from replace [100 100px] to add [190 180px] at (1.25) should be [225 225px] assert_equals: expected "225 225px " but got "212.5 200px "
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (-0.25) should be [125px 125] assert_equals: expected "125px 125 " but got "112.5px 100 "
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0) should be [100px 100] assert_equals: expected "100px 100 " but got "90px 80 "
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.25) should be [75px 75] assert_equals: expected "75px 75 " but got "67.5px 60 "
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.5) should be [50px 50] assert_equals: expected "50px 50 " but got "45px 40 "
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (0.75) should be [25px 25] assert_equals: expected "25px 25 " but got "22.5px 20 "
+PASS Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1) should be [0px 0] 
+FAIL Compositing: property <border-image-width> underlying [10px 20] from add [90px 80] to replace [0px 0 0px 0] at (1.25) should be [0px 0] assert_equals: expected "0px 0 " but got "- 22.5px - 20 "
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (-0.25) should be [75px 125px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0) should be [100px 150px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.25) should be [125px 175px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.5) should be [150px 200px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (0.75) should be [175px 225px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1) should be [200px 250px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100px 150px] to add [200px 250px] at (1.25) should be [225px 275px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (-0.25) should be [100 150px] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0) should be [100 150px] 
+FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.25) should be [100 150px] assert_equals: expected "100 150px " but got ""
+FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.5) should be [200% 250] assert_equals: expected "200 % 250 " but got ""
+FAIL Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (0.75) should be [200% 250] assert_equals: expected "200 % 250 " but got ""
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (1) should be [200% 250] 
+PASS Compositing: property <border-image-width> underlying [10 20] from add [100 150px] to add [200% 250] at (1.25) should be [200% 250] 
 
index 66646a5..0251263 100644 (file)
@@ -1,5 +1,22 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] 
+PASS Compositing: property <border-left-width> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] 
+PASS Compositing: property <border-left-width> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] 
+PASS Compositing: property <border-left-width> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] 
+PASS Compositing: property <border-left-width> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] 
+PASS Compositing: property <border-left-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] 
+PASS Compositing: property <border-left-width> underlying [10em] from add [100px] to add [20em] at (-0.3) should be [calc(130px + 4em)] 
+PASS Compositing: property <border-left-width> underlying [10em] from add [100px] to add [20em] at (0) should be [calc(100px + 10em)] 
+PASS Compositing: property <border-left-width> underlying [10em] from add [100px] to add [20em] at (0.5) should be [calc(50px + 20em)] 
+PASS Compositing: property <border-left-width> underlying [10em] from add [100px] to add [20em] at (1) should be [30em] 
+PASS Compositing: property <border-left-width> underlying [10em] from add [100px] to add [20em] at (1.5) should be [calc(-50px + 40em)] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] 
+PASS Compositing: property <border-left-width> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] 
 
index 66646a5..bafc20a 100644 (file)
@@ -1,5 +1,22 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] 
+PASS Compositing: property <border-right-width> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] 
+PASS Compositing: property <border-right-width> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] 
+PASS Compositing: property <border-right-width> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] 
+PASS Compositing: property <border-right-width> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] 
+PASS Compositing: property <border-right-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] 
+PASS Compositing: property <border-right-width> underlying [10em] from add [100px] to add [20em] at (-0.3) should be [calc(130px + 4em)] 
+PASS Compositing: property <border-right-width> underlying [10em] from add [100px] to add [20em] at (0) should be [calc(100px + 10em)] 
+PASS Compositing: property <border-right-width> underlying [10em] from add [100px] to add [20em] at (0.5) should be [calc(50px + 20em)] 
+PASS Compositing: property <border-right-width> underlying [10em] from add [100px] to add [20em] at (1) should be [30em] 
+PASS Compositing: property <border-right-width> underlying [10em] from add [100px] to add [20em] at (1.5) should be [calc(-50px + 40em)] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] 
+PASS Compositing: property <border-right-width> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] 
 
index 66646a5..5640025 100644 (file)
@@ -1,5 +1,23 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (-0.25) should be [75px] assert_equals: expected "75px " but got "35px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0) should be [100px] assert_equals: expected "100px " but got "60px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.25) should be [125px] assert_equals: expected "125px " but got "85px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.5) should be [150px] assert_equals: expected "150px " but got "110px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.75) should be [175px] assert_equals: expected "175px " but got "135px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1) should be [200px] assert_equals: expected "200px " but got "160px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1.25) should be [225px] assert_equals: expected "225px " but got "185px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (-0.25) should be [75px 100px] assert_equals: expected "75px 100px " but got "85px 135px "
+PASS Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0) should be [100px 120px] 
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.25) should be [125px 140px] assert_equals: expected "125px 140px " but got "115px 105px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px 90px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.75) should be [175px 180px] assert_equals: expected "175px 180px " but got "145px 75px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1) should be [200px] assert_equals: expected "200px " but got "160px 60px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1.25) should be [225px 220px] assert_equals: expected "225px 220px " but got "175px 45px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (-0.25) should be [75px 220px] assert_equals: expected "75px 220px " but got "25px 145px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0) should be [100px 200px] assert_equals: expected "100px 200px " but got "60px 140px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.25) should be [125px 180px] assert_equals: expected "125px 180px " but got "95px 135px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px "
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.75) should be [175px 140px] assert_equals: expected "175px 140px " but got "165px 125px "
+PASS Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1) should be [200px 120px] 
+FAIL Compositing: property <border-top-left-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1.25) should be [225px 100px] assert_equals: expected "225px 100px " but got "235px 115px "
 
index 66646a5..7713e4b 100644 (file)
@@ -1,5 +1,23 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (-0.25) should be [75px] assert_equals: expected "75px " but got "35px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0) should be [100px] assert_equals: expected "100px " but got "60px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.25) should be [125px] assert_equals: expected "125px " but got "85px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.5) should be [150px] assert_equals: expected "150px " but got "110px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (0.75) should be [175px] assert_equals: expected "175px " but got "135px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1) should be [200px] assert_equals: expected "200px " but got "160px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 40px] from add [60px 60px] to add [160px 160px] at (1.25) should be [225px] assert_equals: expected "225px " but got "185px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (-0.25) should be [75px 100px] assert_equals: expected "75px 100px " but got "85px 135px "
+PASS Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0) should be [100px 120px] 
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.25) should be [125px 140px] assert_equals: expected "125px 140px " but got "115px 105px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px 90px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (0.75) should be [175px 180px] assert_equals: expected "175px 180px " but got "145px 75px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1) should be [200px] assert_equals: expected "200px " but got "160px 60px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 140px] from replace [100px 120px] to add [160px 60px] at (1.25) should be [225px 220px] assert_equals: expected "225px 220px " but got "175px 45px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (-0.25) should be [75px 220px] assert_equals: expected "75px 220px " but got "25px 145px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0) should be [100px 200px] assert_equals: expected "100px 200px " but got "60px 140px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.25) should be [125px 180px] assert_equals: expected "125px 180px " but got "95px 135px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.5) should be [150px 160px] assert_equals: expected "150px 160px " but got "130px "
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (0.75) should be [175px 140px] assert_equals: expected "175px 140px " but got "165px 125px "
+PASS Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1) should be [200px 120px] 
+FAIL Compositing: property <border-top-right-radius> underlying [40px 60px] from add [60px 140px] to replace [200px 120px] at (1.25) should be [225px 100px] assert_equals: expected "225px 100px " but got "235px 115px "
 
index 66646a5..25e9639 100644 (file)
@@ -1,5 +1,22 @@
-CONSOLE MESSAGE: line 13: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] 
+PASS Compositing: property <border-top-width> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] 
+PASS Compositing: property <border-top-width> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] 
+PASS Compositing: property <border-top-width> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] 
+PASS Compositing: property <border-top-width> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] 
+PASS Compositing: property <border-top-width> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] 
+PASS Compositing: property <border-top-width> underlying [10em] from add [100px] to add [20em] at (-0.3) should be [calc(130px + 4em)] 
+PASS Compositing: property <border-top-width> underlying [10em] from add [100px] to add [20em] at (0) should be [calc(100px + 10em)] 
+PASS Compositing: property <border-top-width> underlying [10em] from add [100px] to add [20em] at (0.5) should be [calc(50px + 20em)] 
+PASS Compositing: property <border-top-width> underlying [10em] from add [100px] to add [20em] at (1) should be [30em] 
+PASS Compositing: property <border-top-width> underlying [10em] from add [100px] to add [20em] at (1.5) should be [calc(-50px + 40em)] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] 
+PASS Compositing: property <border-top-width> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] 
 
index 25d2774..04790ba 100644 (file)
@@ -1,5 +1,32 @@
-CONSOLE MESSAGE: line 14: ReferenceError: Can't find variable: test_composition
-
-Harness Error (FAIL), message = ReferenceError: Can't find variable: test_composition
 
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to add ['test' 200] at (-0.3) should be ['test' 120] assert_equals: expected "\" test \" 120 " but got "\" test \" 70 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to add ['test' 200] at (0) should be ['test' 150] assert_equals: expected "\" test \" 150 " but got "\" test \" 100 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to add ['test' 200] at (0.5) should be ['test' 200] assert_equals: expected "\" test \" 200 " but got "\" test \" 150 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to add ['test' 200] at (1) should be ['test' 250] assert_equals: expected "\" test \" 250 " but got "\" test \" 200 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to add ['test' 200] at (1.5) should be ['test' 300] assert_equals: expected "\" test \" 300 " but got "\" test \" 250 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to replace ['test' 200] at (-0.3) should be ['test' 135] assert_equals: expected "\" test \" 135 " but got "\" test \" 70 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to replace ['test' 200] at (0) should be ['test' 150] assert_equals: expected "\" test \" 150 " but got "\" test \" 100 "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to replace ['test' 200] at (0.5) should be ['test' 175] assert_equals: expected "\" test \" 175 " but got "\" test \" 150 "
+PASS Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to replace ['test' 200] at (1) should be ['test' 200] 
+FAIL Compositing: property <font-variation-settings> underlying ['test' 50] from add ['test' 100] to replace ['test' 200] at (1.5) should be ['test' 225] assert_equals: expected "\" test \" 225 " but got "\" test \" 250 "
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to replace ['test' 200] at (-0.3) should be [normal] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to replace ['test' 200] at (0) should be [normal] 
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to replace ['test' 200] at (0.5) should be ['test' 200] assert_equals: expected "\" test \" 200 " but got "normal "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to replace ['test' 200] at (1) should be ['test' 200] assert_equals: expected "\" test \" 200 " but got "normal "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to replace ['test' 200] at (1.5) should be ['test' 200] assert_equals: expected "\" test \" 200 " but got "normal "
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to add ['test' 200] at (-0.3) should be [normal] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to add ['test' 200] at (0) should be [normal] 
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to add ['test' 200] at (0.5) should be ['test' 300] assert_equals: expected "\" test \" 300 " but got "normal "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to add ['test' 200] at (1) should be ['test' 300] assert_equals: expected "\" test \" 300 " but got "normal "
+FAIL Compositing: property <font-variation-settings> underlying ['test' 100] from add [normal] to add ['test' 200] at (1.5) should be ['test' 300] assert_equals: expected "\" test \" 300 " but got "normal "
+FAIL Compositing: property <font-variation-settings> underlying ['aaaa' 100, 'bbbb' 200] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (-0.3) should be ['aaaa' 117, 'bbbb' 235] assert_equals: expected "\" bbbb \" 235 , \" aaaa \" 117 " but got "\" bbbb \" 35 , \" aaaa \" 17 "
+FAIL Compositing: property <font-variation-settings> underlying ['aaaa' 100, 'bbbb' 200] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (0) should be ['aaaa' 120, 'bbbb' 250] assert_equals: expected "\" bbbb \" 250 , \" aaaa \" 120 " but got "\" bbbb \" 50 , \" aaaa \" 20 "
+FAIL Compositing: property <font-variation-settings> underlying ['aaaa' 100, 'bbbb' 200] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (0.5) should be ['aaaa' 125, 'bbbb' 275] assert_equals: expected "\" bbbb \" 275 , \" aaaa \" 125 " but got "\" bbbb \" 75 , \" aaaa \" 25 "
+FAIL Compositing: property <font-variation-settings> underlying ['aaaa' 100, 'bbbb' 200] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (1) should be ['aaaa' 130, 'bbbb' 300] assert_equals: expected "\" bbbb \" 300 , \" aaaa \" 130 " but got "\" bbbb \" 100 , \" aaaa \" 30 "
+FAIL Compositing: property <font-variation-settings> underlying ['aaaa' 100, 'bbbb' 200] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (1.5) should be ['aaaa' 135, 'bbbb' 325] assert_equals: expected "\" bbbb \" 325 , \" aaaa \" 135 " but got "\" bbbb \" 125 , \" aaaa \" 35 "
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (-0.3) should be ['aaaa' 17, 'bbbb' 35] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (0) should be ['aaaa' 20, 'bbbb' 50] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (0.5) should be ['aaaa' 25, 'bbbb' 75] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (1) should be ['aaaa' 30, 'bbbb' 100] 
+PASS Compositing: property <font-variation-settings> underlying ['test' 100] from add ['aaaa' 20, 'bbbb' 50] to add ['aaaa' 30, 'bbbb' 100] at (1.5) should be ['aaaa' 35, 'bbbb' 125] 
 
index 7572801..32c15f0 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>AnimationEffect.getComputedTiming() for CSS transitions</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative-expected.txt
deleted file mode 100644 (file)
index d06a968..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-FAIL getAnimations sorts simultaneous transitions by name assert_class_string: Got pseudo-element target expected "[object CSSPseudoElement]" but got "[object Element]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html
deleted file mode 100644 (file)
index 5229881..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>CSSPseudoElement.getAnimations() for CSS transitions</title>
-<link rel="help" href="https://drafts.csswg.org/css-transitions-2/#animation-composite-order">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/helper.js"></script>
-<style>
-.init::before {
-  content: '';
-  height: 0px;
-  width: 0px;
-  opacity: 0;
-  transition: all 100s;
-}
-.change::before {
-  height: 100px;
-  width: 100px;
-  opacity: 1;
-}
-</style>
-<div id="log"></div>
-<script>
-'use strict';
-
-test(t => {
-  const div = addDiv(t, { class: 'init' });
-  getComputedStyle(div).width;
-  div.classList.add('change');
-
-  // Sanity checks
-  assert_equals(document.getAnimations().length, 3,
-                'Got expected number of animations on document');
-  const pseudoTarget = document.getAnimations()[0].effect.target;
-  assert_class_string(pseudoTarget, 'CSSPseudoElement',
-                      'Got pseudo-element target');
-
-  // Check animations returned from the pseudo element are in correct order
-  const anims = pseudoTarget.getAnimations();
-  assert_equals(anims.length, 3,
-                'Got expected number of animations on pseudo-element');
-  assert_equals(anims[0].transitionProperty, 'height');
-  assert_equals(anims[1].transitionProperty, 'opacity');
-  assert_equals(anims[2].transitionProperty, 'width');
-}, 'getAnimations sorts simultaneous transitions by name');
-
-</script>
index b6251b1..72b1dbf 100644 (file)
@@ -2,7 +2,7 @@
 <meta charset=utf-8>
 <title>Canceling a CSS transition</title>
 <link rel="help" href="https://drafts.csswg.org/css-transitions/#starting">
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 703b899..8ee7215 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.currentTime</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
@@ -98,8 +98,8 @@ promise_test(async t => {
 
   await animation.ready;
 
-  assert_throws(
-    new TypeError(),
+  assert_throws_js(
+    TypeError,
     () => {
       animation.currentTime = null;
     },
index 908ba77..a38bc21 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.effect</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 5bfadf2..23750e7 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.finished</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 635b052..92aaa49 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.ready</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index c8a7b6f..4dbe863 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.startTime</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 30aea79..18c1e31 100644 (file)
@@ -1,6 +1,6 @@
 
 PASS getAnimations for non-animated content 
 PASS getAnimations for CSS Transitions 
-FAIL CSS Transitions targetting (pseudo-)elements should have correct order after sorting assert_equals: Transition #2 has expected target expected (object) Element node <div style="display: list-item; left: 100px; transition: ... but got (undefined) undefined
+FAIL CSS Transitions targetting (pseudo-)elements should have correct order after sorting assert_equals: Transition #1 has null pseudo type expected (object) null but got (undefined) undefined
 PASS Transitions are not returned after they have finished 
 
index 98b91e0..cecddfa 100644 (file)
@@ -99,12 +99,12 @@ test(t => {
 
     if (pseudo) {
       assert_equals(
-        actual.effect.target.element,
+        actual.effect.target,
         element,
         `Transition #${index + 1} has expected target`
       );
       assert_equals(
-        actual.effect.target.type,
+        actual.effect.pseudoElement,
         pseudo,
         `Transition #${index + 1} has expected pseudo type`
       );
@@ -114,6 +114,11 @@ test(t => {
         element,
         `Transition #${index + 1} has expected target`
       );
+      assert_equals(
+        actual.effect.pseudoElement,
+        null,
+        `Transition #${index + 1} has null pseudo type`
+      );
     }
   }
 }, 'CSS Transitions targetting (pseudo-)elements should have correct order '
index 5d465e5..26e988f 100644 (file)
@@ -2,7 +2,7 @@
 <meta charset=utf-8>
 <title>Element.getAnimations() for CSS transitions</title>
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#animation-composite-order">
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index d1c0003..47b769b 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>KeyframeEffect.getKeyframes() for CSS transitions</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index 4881455..dbb2a43 100644 (file)
@@ -1,7 +1,7 @@
 <!doctype html>
 <meta charset=utf-8>
 <title>CSSTransition.effect.target</title>
-<!--  TODO: Add a more specific link for this once it is specified.  -->
+<!-- TODO: Add a more specific link for this once it is specified. -->
 <link rel="help" href="https://drafts.csswg.org/css-transitions-2/#csstransition">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
index f11374e..f72f11d 100644 (file)
@@ -33,7 +33,7 @@ Using `support/property.js` test suites compile a list of animatable properties.
 }
 ```
 
-For each compiled test case the test runner identifies computed initial and target values. If they match, no transition will take place, because the property couldn't be parsed. If after starting the transition the computed style matches the target value, the browser applied that value immedately and no transition will take place. During the transition the computed style may match neither initial nor target value (unless it's a discrete transition), or there was no transition.
+For each compiled test case the test runner identifies computed initial and target values. If they match, no transition will take place, because the property couldn't be parsed. If after starting the transition the computed style matches the target value, the browser applied that value immediately and no transition will take place. During the transition the computed style may match neither initial nor target value (unless it's a discrete transition), or there was no transition.
 
 Besides value-assertions, the suites compare received TransitionEnd events. While the values are only matched against computed initial and target values, expected TransitionEnd events are declared explicitly. This can (and will) lead to some test failures that are arguably not a failure (mainly because the specification didn't cover the specific case). Transitioning `color` *may* (or not, depending on browser) also run a transition for `background-color`, as the latter's default value is `currentColor`. This suite considers those implicit transitions a failure. If it truly is a failure or not, should be decided in the specification (and tests updated accordingly).
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition-expected.txt
new file mode 100644 (file)
index 0000000..efb9401
--- /dev/null
@@ -0,0 +1,32 @@
+
+PASS Compositing: property <text-shadow> underlying [undefined] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(70, 70, 70 ) 7px 14px 21px] 
+PASS Compositing: property <text-shadow> underlying [undefined] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(100, 100, 100) 10px 20px 30px] 
+PASS Compositing: property <text-shadow> underlying [undefined] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(150, 150, 150) 15px 30px 45px] 
+PASS Compositing: property <text-shadow> underlying [undefined] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(200, 200, 200) 20px 40px 60px] 
+PASS Compositing: property <text-shadow> underlying [undefined] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(250, 250, 250) 25px 50px 75px] 
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(70, 70, 70) 7px 14px 21px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 70 , 70 , 70 ) 7px 14px 21px " but got "rgb ( 70 , 70 , 70 ) 7px 14px 21px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(100, 100, 100) 10px 20px 30px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 100 , 100 , 100 ) 10px 20px 30px " but got "rgb ( 100 , 100 , 100 ) 10px 20px 30px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(150, 150, 150) 15px 30px 45px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 150 , 150 , 150 ) 15px 30px 45px " but got "rgb ( 150 , 150 , 150 ) 15px 30px 45px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(200, 200, 200) 20px 40px 60px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 200 , 200 , 200 ) 20px 40px 60px " but got "rgb ( 200 , 200 , 200 ) 20px 40px 60px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(250, 250, 250) 25px 50px 75px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 250 , 250 , 250 ) 25px 50px 75px " but got "rgb ( 250 , 250 , 250 ) 25px 50px 75px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(70, 70, 70) 7px 14px 21px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 70 , 70 , 70 ) 7px 14px 21px " but got "rgb ( 70 , 70 , 70 ) 7px 14px 21px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 100 , 100 , 100 ) 10px 20px 30px " but got "rgb ( 100 , 100 , 100 ) 10px 20px 30px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(150, 150, 150) 15px 30px 45px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 150 , 150 , 150 ) 15px 30px 45px " but got "rgb ( 150 , 150 , 150 ) 15px 30px 45px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 200 , 200 , 200 ) 20px 40px 60px " but got "rgb ( 200 , 200 , 200 ) 20px 40px 60px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(250, 250, 250) 25px 50px 75px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 250 , 250 , 250 ) 25px 50px 75px " but got "rgb ( 250 , 250 , 250 ) 25px 50px 75px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(130, 130, 130) 13px 26px 39px] assert_equals: expected "rgb ( 0 , 0 , 0 ) - 4.69px - 9.39px 0px , rgb ( 26 , 52 , 78 ) 2.59px 5.19px 7px , rgb ( 130 , 130 , 130 ) 13px 26px 39px " but got "rgb ( 70 , 70 , 70 ) 7px 14px 21px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 100 , 100 , 100 ) 10px 20px 30px " but got "rgb ( 100 , 100 , 100 ) 10px 20px 30px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(100, 100, 100, 0.5) 5px 10px 15px] assert_equals: expected "rgb ( 105 , 110 , 115 ) 10.5px 21px 31px , rgba ( 20 , 40 , 60 , 0.5 ) 1px 2px 3px , rgba ( 100 , 100 , 100 , 0.5 ) 5px 10px 15px " but got "rgb ( 150 , 150 , 150 ) 15px 30px 45px "
+PASS Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(200, 200, 200) 20px 40px 60px] 
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from add [rgb(100, 100, 100) 10px 20px 30px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -5px -10px 0px] assert_equals: expected "rgb ( 255 , 255 , 255 ) 29.5px 59px 88px , rgba ( 0 , 0 , 0 , 0 ) - 1px - 2px 0px , rgba ( 0 , 0 , 0 , 0 ) - 5px - 10px 0px " but got "rgb ( 250 , 250 , 250 ) 25px 50px 75px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(127, 124, 121) 12.7px 25.4px 38.1px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px, rgba(0, 0, 0, 0) -6px -12px 0px] assert_equals: expected "rgb ( 127 , 124 , 121 ) 12.69px 25.39px 38px , rgba ( 0 , 0 , 0 , 0 ) - 0.59px - 1.19px 0px , rgba ( 0 , 0 , 0 , 0 ) - 6px - 12px 0px " but got "rgb ( 70 , 70 , 70 ) 7px 14px 21px "
+PASS Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(100, 100, 100) 10px 20px 30px] 
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(55, 60, 65) 5.5px 11px 16.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(200, 200, 200, 0.5) 10px 20px 30px] assert_equals: expected "rgb ( 55 , 60 , 65 ) 5.5px 11px 16px , rgba ( 20 , 40 , 60 , 0.5 ) 1px 2px 3px , rgba ( 200 , 200 , 200 , 0.5 ) 10px 20px 30px " but got "rgb ( 150 , 150 , 150 ) 15px 30px 45px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 200 , 200 , 200 ) 20px 40px 60px " but got "rgb ( 200 , 200 , 200 ) 20px 40px 60px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px] from replace [rgb(100, 100, 100) 10px 20px 30px] to add [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(0, 0, 0) -3.5px -7px 0px, rgb(30, 60, 90) 3px 6px 9px, rgb(255, 255, 255) 30px 60px 90px] assert_equals: expected "rgb ( 0 , 0 , 0 ) - 3.5px - 7px 0px , rgb ( 30 , 60 , 90 ) 3px 6px 9px , rgb ( 255 , 255 , 255 ) 30px 60px 90px " but got "rgb ( 250 , 250 , 250 ) 25px 50px 75px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (-0.3) should be [rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(52, 104, 156) 5.2px 10.4px 15.6px, rgb(130, 130, 130) 13px 26px 39px, rgb(255, 255, 255) 26px 52px 78px] assert_equals: expected "rgb ( 0 , 0 , 0 ) - 4.69px - 9.39px 0px , rgb ( 26 , 52 , 78 ) 2.59px 5.19px 7px , rgb ( 52 , 104 , 156 ) 5.19px 10.39px 15px , rgb ( 130 , 130 , 130 ) 13px 26px 39px , rgb ( 255 , 255 , 255 ) 26px 52px 78px " but got "rgb ( 70 , 70 , 70 ) 7px 14px 21px , rgb ( 255 , 255 , 255 ) 26px 52px 78px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (0) should be [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px, rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] assert_equals: expected "rgb ( 10 , 20 , 30 ) 1px 2px 3px , rgb ( 20 , 40 , 60 ) 2px 4px 6px , rgb ( 40 , 80 , 120 ) 4px 8px 12px , rgb ( 100 , 100 , 100 ) 10px 20px 30px , rgb ( 200 , 200 , 200 ) 20px 40px 60px " but got "rgb ( 100 , 100 , 100 ) 10px 20px 30px , rgb ( 200 , 200 , 200 ) 20px 40px 60px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (0.5) should be [rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(40, 80, 120, 0.5) 2px 4px 6px, rgba(100, 100, 100, 0.5) 5px 10px 15px, rgba(200, 200, 200, 0.5) 10px 20px 30px] assert_equals: expected "rgb ( 105 , 110 , 115 ) 10.5px 21px 31px , rgba ( 20 , 40 , 60 , 0.5 ) 1px 2px 3px , rgba ( 40 , 80 , 120 , 0.5 ) 2px 4px 6px , rgba ( 100 , 100 , 100 , 0.5 ) 5px 10px 15px , rgba ( 200 , 200 , 200 , 0.5 ) 10px 20px 30px " but got "rgb ( 150 , 150 , 150 ) 15px 30px 45px , rgba ( 200 , 200 , 200 , 0.5 ) 10px 20px 30px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (1) should be [rgb(200, 200, 200) 20px 40px 60px] assert_equals: expected "rgb ( 200 , 200 , 200 ) 20px 40px 60px " but got "rgb ( 200 , 200 , 200 ) 20px 40px 60px , rgba ( 0 , 0 , 0 , 0 ) 0px 0px 0px "
+FAIL Compositing: property <text-shadow> underlying [rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px] from add [rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px] to replace [rgb(200, 200, 200) 20px 40px 60px] at (1.5) should be [rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -2px -4px 0px, rgba(0, 0, 0, 0) -5px -10px 0px, rgba(0, 0, 0, 0) -10px -20px 0px] assert_equals: expected "rgb ( 255 , 255 , 255 ) 29.5px 59px 88px , rgba ( 0 , 0 , 0 , 0 ) - 1px - 2px 0px , rgba ( 0 , 0 , 0 , 0 ) - 2px - 4px 0px , rgba ( 0 , 0 , 0 , 0 ) - 5px - 10px 0px , rgba ( 0 , 0 , 0 , 0 ) - 10px - 20px 0px " but got "rgb ( 250 , 250 , 250 ) 25px 50px 75px , rgba ( 0 , 0 , 0 , 0 ) - 10px - 20px - 30px "
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html
new file mode 100644 (file)
index 0000000..dc297ec
--- /dev/null
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>text-shadow composition</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
+<meta name="assert" content="text-shadow supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.target {
+  width: 40px;
+  height: 40px;
+  background-color: black;
+}
+.expected {
+  background-color: green;
+}
+</style>
+
+<body>
+<script>
+test_composition({
+  property: 'text-shadow',
+  replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px',
+  addTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(70, 70, 70 ) 7px 14px 21px'},
+  {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px'},
+  {at: 0.5, expect: 'rgb(150, 150, 150) 15px 30px 45px'},
+  {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(250, 250, 250) 25px 50px 75px'},
+]);
+
+test_composition({
+  property: 'text-shadow',
+  underlying: 'rgb(10, 20, 30) 1px 2px 3px',
+  addFrom: 'rgb(100, 100, 100) 10px 20px 30px',
+  addTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(70, 70, 70) 7px 14px 21px'},
+  {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(100, 100, 100) 10px 20px 30px'},
+  {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(150, 150, 150) 15px 30px 45px'},
+  {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(250, 250, 250) 25px 50px 75px'},
+]);
+
+test_composition({
+  property: 'text-shadow',
+  underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px',
+  addFrom: 'rgb(100, 100, 100) 10px 20px 30px',
+  addTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(70, 70, 70) 7px 14px 21px'},
+  {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px'},
+  {at: 0.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(150, 150, 150) 15px 30px 45px'},
+  {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(250, 250, 250) 25px 50px 75px'},
+]);
+
+test_composition({
+  property: 'text-shadow',
+  underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px',
+  addFrom: 'rgb(100, 100, 100) 10px 20px 30px',
+  replaceTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(130, 130, 130) 13px 26px 39px'},
+  {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(100, 100, 100) 10px 20px 30px'},
+  {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(100, 100, 100, 0.5) 5px 10px 15px'},
+  {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -5px -10px 0px'},
+]);
+
+test_composition({
+  property: 'text-shadow',
+  underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px',
+  replaceFrom: 'rgb(100, 100, 100) 10px 20px 30px',
+  addTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(127, 124, 121) 12.7px 25.4px 38.1px, rgba(0, 0, 0, 0) -0.6px -1.2px 0px, rgba(0, 0, 0, 0) -6px -12px 0px'},
+  {at: 0, expect: 'rgb(100, 100, 100) 10px 20px 30px'},
+  {at: 0.5, expect: 'rgb(55, 60, 65) 5.5px 11px 16.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(200, 200, 200, 0.5) 10px 20px 30px'},
+  {at: 1, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(0, 0, 0) -3.5px -7px 0px, rgb(30, 60, 90) 3px 6px 9px, rgb(255, 255, 255) 30px 60px 90px'},
+]);
+
+test_composition({
+  property: 'text-shadow',
+  underlying: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px',
+  addFrom: 'rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px',
+  replaceTo: 'rgb(200, 200, 200) 20px 40px 60px',
+}, [
+  {at: -0.3, expect: 'rgb(0, 0, 0) -4.7px -9.4px 0px, rgb(26, 52, 78) 2.6px 5.2px 7.8px, rgb(52, 104, 156) 5.2px 10.4px 15.6px, rgb(130, 130, 130) 13px 26px 39px, rgb(255, 255, 255) 26px 52px 78px'},
+  {at: 0, expect: 'rgb(10, 20, 30) 1px 2px 3px, rgb(20, 40, 60) 2px 4px 6px, rgb(40, 80, 120) 4px 8px 12px, rgb(100, 100, 100) 10px 20px 30px, rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 0.5, expect: 'rgb(105, 110, 115) 10.5px 21px 31.5px, rgba(20, 40, 60, 0.5) 1px 2px 3px, rgba(40, 80, 120, 0.5) 2px 4px 6px, rgba(100, 100, 100, 0.5) 5px 10px 15px, rgba(200, 200, 200, 0.5) 10px 20px 30px'},
+  {at: 1, expect: 'rgb(200, 200, 200) 20px 40px 60px'},
+  {at: 1.5, expect: 'rgb(255, 255, 255) 29.5px 59px 88.5px, rgba(0, 0, 0, 0) -1px -2px 0px, rgba(0, 0, 0, 0) -2px -4px 0px, rgba(0, 0, 0, 0) -5px -10px 0px, rgba(0, 0, 0, 0) -10px -20px 0px'},
+]);
+</script>
+</body>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation-expected.txt
new file mode 100644 (file)
index 0000000..bc29dc8
--- /dev/null
@@ -0,0 +1,146 @@
+
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px] 
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 10px 30px 10px] 
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px] 
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px] 
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions: property <text-shadow> from neutral to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 10px 30px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from neutral to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 10px 30px 10px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px] 
+PASS Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 7px 33px 7px] 
+FAIL Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 10px 30px 10px] assert_equals: expected "rgb ( 255 , 165 , 0 ) 10px 30px 10px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 13px 27px 13px] assert_equals: expected "rgb ( 179 , 154 , 0 ) 13px 27px 13px " but got "rgb ( 179 , 162 , 0 ) 10.89px 29.09px 11px "
+FAIL Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 16px 24px 16px] assert_equals: expected "rgb ( 102 , 143 , 0 ) 16px 24px 16px " but got "rgb ( 72 , 142 , 0 ) 16.34px 23.63px 16px "
+PASS Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+FAIL Web Animations: property <text-shadow> from neutral to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 25px 15px 25px] assert_equals: expected "rgb ( 0 , 110 , 0 ) 25px 15px 25px " but got "rgb ( 0 , 128 , 0 ) 20px 20px 20px "
+FAIL CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px] assert_equals: expected "rgba ( 0 , 0 , 0 , 0 ) - 6px - 6px 0px " but got "rgba ( 0 , 0 , 0 , 0 ) - 5.98px - 5.98px - 6px "
+PASS CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px] 
+FAIL CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.3 ) 6px 6px 6px " but got "rgba ( 0 , 126 , 0 , 0.3 ) 6px 6px 6px "
+FAIL CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.6 ) 12px 12px 12px " but got "rgba ( 0 , 129 , 0 , 0.6 ) 12px 12px 12px "
+PASS CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px] 
+FAIL CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px] assert_equals: expected "rgba ( 0 , 0 , 0 , 0 ) - 6px - 6px 0px " but got "rgba ( 0 , 0 , 0 , 0 ) - 5.98px - 5.98px - 6px "
+PASS CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px] 
+FAIL CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.3 ) 6px 6px 6px " but got "rgba ( 0 , 126 , 0 , 0.3 ) 6px 6px 6px "
+FAIL CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.6 ) 12px 12px 12px " but got "rgba ( 0 , 129 , 0 , 0.6 ) 12px 12px 12px "
+PASS CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px] 
+FAIL CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px] assert_equals: expected "rgba ( 0 , 0 , 0 , 0 ) - 6px - 6px 0px " but got "rgba ( 0 , 0 , 0 , 0 ) - 5.98px - 5.98px - 6px "
+PASS CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px] 
+FAIL CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.3 ) 6px 6px 6px " but got "rgba ( 0 , 126 , 0 , 0.3 ) 6px 6px 6px "
+FAIL CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.6 ) 12px 12px 12px " but got "rgba ( 0 , 129 , 0 , 0.6 ) 12px 12px 12px "
+PASS CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px] 
+FAIL Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (-0.3) should be [rgba(0, 0, 0, 0) -6px -6px 0px] assert_equals: expected "rgba ( 0 , 0 , 0 , 0 ) - 6px - 6px 0px " but got "rgba ( 0 , 0 , 0 , 0 ) - 5.98px - 5.98px - 6px "
+PASS Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0) should be [rgba(0, 0, 0, 0) 0px 0px 0px] 
+FAIL Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.3) should be [rgba(0, 128, 0, 0.3) 6px 6px 6px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.3 ) 6px 6px 6px " but got "rgba ( 0 , 126 , 0 , 0.3 ) 6px 6px 6px "
+FAIL Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (0.6) should be [rgba(0, 128, 0, 0.6) 12px 12px 12px] assert_equals: expected "rgba ( 0 , 128 , 0 , 0.6 ) 12px 12px 12px " but got "rgba ( 0 , 129 , 0 , 0.6 ) 12px 12px 12px "
+PASS Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS Web Animations: property <text-shadow> from [initial] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 192, 0) 30px 30px 30px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] 
+FAIL CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] assert_equals: expected "rgb ( 255 , 176 , 0 ) 33px 7px 33px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] assert_equals: expected "rgb ( 255 , 165 , 0 ) 30px 10px 30px " but got "rgb ( 255 , 165 , 0 ) 10px 30px 10px "
+FAIL CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] assert_equals: expected "rgb ( 179 , 154 , 0 ) 27px 13px 27px " but got "rgb ( 179 , 154 , 0 ) 13px 27px 13px "
+FAIL CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] assert_equals: expected "rgb ( 102 , 143 , 0 ) 24px 16px 24px " but got "rgb ( 102 , 143 , 0 ) 16px 24px 16px "
+PASS CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+FAIL CSS Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] assert_equals: expected "rgb ( 0 , 110 , 0 ) 15px 25px 15px " but got "rgb ( 0 , 110 , 0 ) 25px 15px 25px "
+FAIL Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] assert_equals: expected "rgb ( 255 , 176 , 0 ) 33px 7px 33px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] assert_equals: expected "rgb ( 255 , 165 , 0 ) 30px 10px 30px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] assert_equals: expected "rgb ( 179 , 154 , 0 ) 27px 13px 27px " but got "rgb ( 179 , 162 , 0 ) 10.89px 29.09px 11px "
+FAIL Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] assert_equals: expected "rgb ( 102 , 143 , 0 ) 24px 16px 24px " but got "rgb ( 72 , 142 , 0 ) 16.34px 23.63px 16px "
+PASS Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+FAIL Web Animations: property <text-shadow> from [inherit] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] assert_equals: expected "rgb ( 0 , 110 , 0 ) 15px 25px 15px " but got "rgb ( 0 , 128 , 0 ) 20px 20px 20px "
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] 
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] 
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] 
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] 
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] 
+FAIL CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] assert_equals: expected "rgb ( 255 , 176 , 0 ) 33px 7px 33px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] assert_equals: expected "rgb ( 255 , 165 , 0 ) 30px 10px 30px " but got "rgb ( 255 , 165 , 0 ) 10px 30px 10px "
+FAIL CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] assert_equals: expected "rgb ( 179 , 154 , 0 ) 27px 13px 27px " but got "rgb ( 179 , 154 , 0 ) 13px 27px 13px "
+FAIL CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] assert_equals: expected "rgb ( 102 , 143 , 0 ) 24px 16px 24px " but got "rgb ( 102 , 143 , 0 ) 16px 24px 16px "
+PASS CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+FAIL CSS Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] assert_equals: expected "rgb ( 0 , 110 , 0 ) 15px 25px 15px " but got "rgb ( 0 , 110 , 0 ) 25px 15px 25px "
+FAIL Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (-0.3) should be [rgb(255, 176, 0) 33px 7px 33px] assert_equals: expected "rgb ( 255 , 176 , 0 ) 33px 7px 33px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0) should be [rgb(255, 165, 0) 30px 10px 30px] assert_equals: expected "rgb ( 255 , 165 , 0 ) 30px 10px 30px " but got "rgb ( 255 , 176 , 0 ) 7px 33px 7px "
+FAIL Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.3) should be [rgb(179, 154, 0) 27px 13px 27px] assert_equals: expected "rgb ( 179 , 154 , 0 ) 27px 13px 27px " but got "rgb ( 179 , 162 , 0 ) 10.89px 29.09px 11px "
+FAIL Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (0.6) should be [rgb(102, 143, 0) 24px 16px 24px] assert_equals: expected "rgb ( 102 , 143 , 0 ) 24px 16px 24px " but got "rgb ( 72 , 142 , 0 ) 16.34px 23.63px 16px "
+PASS Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1) should be [rgb(0, 128, 0) 20px 20px 20px] 
+FAIL Web Animations: property <text-shadow> from [unset] to [green 20px 20px 20px] at (1.5) should be [rgb(0, 110, 0) 15px 25px 15px] assert_equals: expected "rgb ( 0 , 110 , 0 ) 15px 25px 15px " but got "rgb ( 0 , 128 , 0 ) 20px 20px 20px "
+FAIL CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px] assert_equals: expected "rgb ( 0 , 0 , 0 ) 24px 16px 0px " but got "rgb ( 0 , 0 , 0 ) 24px 15.98px - 1px "
+PASS CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0) should be [rgb(0, 0, 0) 15px 10px 5px] 
+PASS CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px] 
+PASS CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px] 
+PASS CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1) should be [rgb(255, 165, 0) -15px -10px 25px] 
+PASS CSS Transitions: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px] 
+FAIL CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px] assert_equals: expected "rgb ( 0 , 0 , 0 ) 24px 16px 0px " but got "rgb ( 0 , 0 , 0 ) 24px 15.98px - 1px "
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0) should be [rgb(0, 0, 0) 15px 10px 5px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1) should be [rgb(255, 165, 0) -15px -10px 25px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px] 
+FAIL CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px] assert_equals: expected "rgb ( 0 , 0 , 0 ) 24px 16px 0px " but got "rgb ( 0 , 0 , 0 ) 24px 15.98px - 1px "
+PASS CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0) should be [rgb(0, 0, 0) 15px 10px 5px] 
+PASS CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px] 
+PASS CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px] 
+PASS CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1) should be [rgb(255, 165, 0) -15px -10px 25px] 
+PASS CSS Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px] 
+FAIL Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (-0.3) should be [rgb(0, 0, 0) 24px 16px 0px] assert_equals: expected "rgb ( 0 , 0 , 0 ) 24px 16px 0px " but got "rgb ( 0 , 0 , 0 ) 24px 15.98px - 1px "
+PASS Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0) should be [rgb(0, 0, 0) 15px 10px 5px] 
+PASS Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.3) should be [rgb(77, 50, 0) 6px 4px 11px] 
+PASS Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (0.6) should be [rgb(153, 99, 0) -3px -2px 17px] 
+PASS Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1) should be [rgb(255, 165, 0) -15px -10px 25px] 
+PASS Web Animations: property <text-shadow> from [black 15px 10px 5px] to [orange -15px -10px 25px] at (1.5) should be [rgb(255, 248, 0) -30px -20px 35px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1) should be [rgb(0, 128, 0) 10px 10px 10px] 
+PASS CSS Transitions: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1) should be [rgb(0, 128, 0) 10px 10px 10px] 
+PASS CSS Transitions with transition: all: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1) should be [rgb(0, 128, 0) 10px 10px 10px] 
+PASS CSS Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (-0.3) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0) should be [rgb(0, 0, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.3) should be [rgb(0, 38, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (0.6) should be [rgb(0, 77, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1) should be [rgb(0, 128, 0) 10px 10px 10px] 
+PASS Web Animations: property <text-shadow> from [black 10px 10px 10px] to [currentColor 10px 10px 10px] at (1.5) should be [rgb(0, 192, 0) 10px 10px 10px] 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html
new file mode 100644 (file)
index 0000000..c007816
--- /dev/null
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>text-shadow interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
+<meta name="assert" content="text-shadow supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+  text-shadow: 30px 10px 30px orange;
+}
+
+.target {
+  display: inline-block;
+  font-size: 60pt;
+  margin-right: 20px;
+  margin-bottom: 30px;
+  color: green;
+  text-shadow: 10px 30px 10px orange;
+}
+
+.expected {
+  margin-right: 40px;
+}
+</style>
+<body>
+<template id="target-template">T</template>
+<script>
+test_interpolation({
+  property: 'text-shadow',
+  from: neutralKeyframe,
+  to: 'green 20px 20px 20px',
+}, [
+  {at: -0.3, expect: 'rgb(255, 176, 0) 7px 33px 7px'},
+  {at: 0, expect: 'rgb(255, 165, 0) 10px 30px 10px'},
+  {at: 0.3, expect: 'rgb(179, 154, 0) 13px 27px 13px'},
+  {at: 0.6, expect: 'rgb(102, 143, 0) 16px 24px 16px'},
+  {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+  {at: 1.5, expect: 'rgb(0, 110, 0) 25px 15px 25px'},
+]);
+
+test_interpolation({
+  property: 'text-shadow',
+  from: 'initial',
+  to: 'green 20px 20px 20px',
+}, [
+  {at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px'},
+  {at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px'},
+  {at: 0.3, expect: 'rgba(0, 128, 0, 0.3) 6px 6px 6px'},
+  {at: 0.6, expect: 'rgba(0, 128, 0, 0.6) 12px 12px 12px'},
+  {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+  {at: 1.5, expect: 'rgb(0, 192, 0) 30px 30px 30px'},
+]);
+
+test_interpolation({
+  property: 'text-shadow',
+  from: 'inherit',
+  to: 'green 20px 20px 20px',
+}, [
+  {at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
+  {at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
+  {at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
+  {at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
+  {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+  {at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
+]);
+
+test_interpolation({
+  property: 'text-shadow',
+  from: 'unset',
+  to: 'green 20px 20px 20px',
+}, [
+  {at: -0.3, expect: 'rgb(255, 176, 0) 33px 7px 33px'},
+  {at: 0, expect: 'rgb(255, 165, 0) 30px 10px 30px'},
+  {at: 0.3, expect: 'rgb(179, 154, 0) 27px 13px 27px'},
+  {at: 0.6, expect: 'rgb(102, 143, 0) 24px 16px 24px'},
+  {at: 1, expect: 'rgb(0, 128, 0) 20px 20px 20px'},
+  {at: 1.5, expect: 'rgb(0, 110, 0) 15px 25px 15px'},
+]);
+
+test_interpolation({
+  property: 'text-shadow',
+  from: 'black 15px 10px 5px',
+  to: 'orange -15px -10px 25px',
+}, [
+  {at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px'},
+  {at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px'},
+  {at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px'},
+  {at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px'},
+  {at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px'},
+  {at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px'},
+]);
+
+test_interpolation({
+  property: 'text-shadow',
+  from: 'black 10px 10px 10px',
+  to: 'currentColor 10px 10px 10px',
+}, [
+  {at: -0.3, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
+  {at: 0, expect: 'rgb(0, 0, 0) 10px 10px 10px'},
+  {at: 0.3, expect: 'rgb(0, 38, 0) 10px 10px 10px'},
+  {at: 0.6, expect: 'rgb(0, 77, 0) 10px 10px 10px'},
+  {at: 1, expect: 'rgb(0, 128, 0) 10px 10px 10px'},
+  {at: 1.5, expect: 'rgb(0, 192, 0) 10px 10px 10px'},
+]);
+</script>
+</body>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt
new file mode 100644 (file)
index 0000000..df7035d
--- /dev/null
@@ -0,0 +1,22 @@
+
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (-0.3) should be [120px] assert_equals: expected "120px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0) should be [150px] assert_equals: expected "150px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (0.5) should be [200px] assert_equals: expected "200px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1) should be [250px] assert_equals: expected "250px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to add [200px] at (1.5) should be [300px] assert_equals: expected "300px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (-0.5) should be [114px] assert_equals: expected "114px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0) should be [110px] assert_equals: expected "110px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (0.5) should be [106px] assert_equals: expected "106px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1) should be [102px] assert_equals: expected "102px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [100px] from add [10px] to add [2px] at (1.5) should be [98px] assert_equals: expected "98px " but got "100px "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (-0.3) should be [calc(130px + 4%)] assert_equals: expected "" but got "10 % "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0) should be [calc(100px + 10%)] assert_equals: expected "" but got "10 % "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (0.5) should be [calc(50px + 20%)] assert_equals: expected "" but got "10 % "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1) should be [30%] assert_equals: expected "30 % " but got "10 % "
+FAIL Compositing: property <vertical-align> underlying [10%] from add [100px] to add [20%] at (1.5) should be [calc(-50px + 40%)] assert_equals: expected "" but got "10 % "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (-0.3) should be [135px] assert_equals: expected "135px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0) should be [150px] assert_equals: expected "150px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (0.5) should be [175px] assert_equals: expected "175px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1) should be [200px] assert_equals: expected "200px " but got "50px "
+FAIL Compositing: property <vertical-align> underlying [50px] from add [100px] to replace [200px] at (1.5) should be [225px] assert_equals: expected "225px " but got "50px "
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html
new file mode 100644 (file)
index 0000000..222a511
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>vertical-align composition</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align">
+<meta name="assert" content="vertical-align supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body>
+<script>
+test_composition({
+  property: 'vertical-align',
+  underlying: '50px',
+  addFrom: '100px',
+  addTo: '200px',
+}, [
+  {at: -0.3, expect: '120px'},
+  {at: 0, expect: '150px'},
+  {at: 0.5, expect: '200px'},
+  {at: 1, expect: '250px'},
+  {at: 1.5, expect: '300px'},
+]);
+
+test_composition({
+  property: 'vertical-align',
+  underlying: '100px',
+  addFrom: '10px',
+  addTo: '2px',
+}, [
+  {at: -0.5, expect: '114px'},
+  {at: 0, expect: '110px'},
+  {at: 0.5, expect: '106px'},
+  {at: 1, expect: '102px'},
+  {at: 1.5, expect: '98px'},
+]);
+
+test_composition({
+  property: 'vertical-align',
+  underlying: '10%',
+  addFrom: '100px',
+  addTo: '20%',
+}, [
+  {at: -0.3, expect: 'calc(130px + 4%)'},
+  {at: 0, expect: 'calc(100px + 10%)'},
+  {at: 0.5, expect: 'calc(50px + 20%)'},
+  {at: 1, expect: '30%'},
+  {at: 1.5, expect: 'calc(-50px + 40%)'},
+]);
+
+test_composition({
+  property: 'vertical-align',
+  underlying: '50px',
+  addFrom: '100px',
+  replaceTo: '200px',
+}, [
+  {at: -0.3, expect: '135px'},
+  {at: 0, expect: '150px'},
+  {at: 0.5, expect: '175px'},
+  {at: 1, expect: '200px'},
+  {at: 1.5, expect: '225px'},
+]);
+</script>
+</body>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt
new file mode 100644 (file)
index 0000000..fb233b3
--- /dev/null
@@ -0,0 +1,178 @@
+
+FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0) should be [10px] assert_equals: expected "10px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "40px "
+PASS CSS Transitions: property <vertical-align> from neutral to [40px] at (1) should be [40px] 
+FAIL CSS Transitions: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0) should be [10px] assert_equals: expected "10px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "40px "
+PASS CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (1) should be [40px] 
+FAIL CSS Transitions with transition: all: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "40px "
+FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "10px "
+PASS CSS Animations: property <vertical-align> from neutral to [40px] at (0) should be [10px] 
+FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "10px "
+FAIL Web Animations: property <vertical-align> from neutral to [40px] at (-0.5) should be [-5px] assert_equals: expected "- 5px " but got "10px "
+PASS Web Animations: property <vertical-align> from neutral to [40px] at (0) should be [10px] 
+FAIL Web Animations: property <vertical-align> from neutral to [40px] at (0.3) should be [19px] assert_equals: expected "19px " but got "10px "
+FAIL Web Animations: property <vertical-align> from neutral to [40px] at (0.6) should be [28px] assert_equals: expected "28px " but got "10px "
+FAIL Web Animations: property <vertical-align> from neutral to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from neutral to [40px] at (1.5) should be [55px] assert_equals: expected "55px " but got "10px "
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (-0.3) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0.3) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (1) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (-0.3) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (0) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (0.3) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (1) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] 
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (-0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.3) should be [initial] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [initial] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "40px "
+FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "40px "
+PASS CSS Transitions: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] 
+FAIL CSS Transitions: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] assert_equals: expected "10px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "40px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "40px "
+PASS CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] 
+FAIL CSS Transitions with transition: all: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] assert_equals: expected "10px " but got "40px "
+FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+PASS CSS Animations: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] 
+FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (-0.5) should be [130px] assert_equals: expected "130px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0) should be [100px] assert_equals: expected "100px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0.3) should be [82px] assert_equals: expected "82px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (0.6) should be [64px] assert_equals: expected "64px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [inherit] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+PASS Web Animations: property <vertical-align> from [inherit] to [40px] at (1.5) should be [10px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (-0.3) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (0) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (0.3) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (1) should be [40px] 
+PASS CSS Transitions: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (-0.3) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (0) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (0.3) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (1) should be [40px] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] 
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (-0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.3) should be [unset] assert_equals: expected "baseline " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (0.6) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (1) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [unset] to [40px] at (1.5) should be [40px] assert_equals: expected "40px " but got "10px "
+FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "100px "
+FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "100px "
+FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "100px "
+FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "100px "
+PASS CSS Transitions: property <vertical-align> from [0px] to [100px] at (1) should be [100px] 
+FAIL CSS Transitions: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "100px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "100px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "100px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "100px "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "100px "
+PASS CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (1) should be [100px] 
+FAIL CSS Transitions with transition: all: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "100px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px] assert_equals: expected "100px " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (-0.5) should be [-50px] assert_equals: expected "- 50px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0) should be [0px] assert_equals: expected "0px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0.3) should be [30px] assert_equals: expected "30px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (0.6) should be [60px] assert_equals: expected "60px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (1) should be [100px] assert_equals: expected "100px " but got "10px "
+FAIL Web Animations: property <vertical-align> from [0px] to [100px] at (1.5) should be [150px] assert_equals: expected "150px " but got "10px "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Transitions with transition: all: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "40 % "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "10px "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "10px "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "10px "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "10px "
+FAIL CSS Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "10px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (-0.5) should be [calc(60px - 20%)] assert_equals: expected "" but got "10px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0) should be [calc(40px + 0%)] assert_equals: expected "" but got "10px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (0.3) should be [calc(28px + 12%)] assert_equals: expected "" but got "10px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1) should be [calc(0px + 40%)] assert_equals: expected "" but got "10px "
+FAIL Web Animations: property <vertical-align> from [40px] to [40%] at (1.5) should be [calc(-20px + 60%)] assert_equals: expected "" but got "10px "
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (-0.3) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0.3) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (1) should be [40%] 
+PASS CSS Transitions: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (-0.3) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (0) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (0.3) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (1) should be [40%] 
+PASS CSS Transitions with transition: all: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] 
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super] assert_equals: expected "super " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0) should be [super] assert_equals: expected "super " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super] assert_equals: expected "super " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL CSS Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (-0.3) should be [super] assert_equals: expected "super " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0) should be [super] assert_equals: expected "super " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.3) should be [super] assert_equals: expected "super " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.5) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (0.6) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (1) should be [40%] assert_equals: expected "40 % " but got "10px "
+FAIL Web Animations: property <vertical-align> from [super] to [40%] at (1.5) should be [40%] assert_equals: expected "40 % " but got "10px "
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html
new file mode 100644 (file)
index 0000000..c81c832
--- /dev/null
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>vertical-align interpolation</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align">
+<meta name="assert" content="vertical-align supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+  vertical-align: 100px;
+}
+.target {
+  width: 100px;
+  height: 100px;
+  background-color: black;
+  display: inline-block;
+  vertical-align: 10px;
+}
+.expected {
+  background-color: green;
+}
+</style>
+
+<body>
+<script>
+test_interpolation({
+  property: 'vertical-align',
+  from: neutralKeyframe,
+  to: '40px',
+}, [
+  {at: -0.5, expect: '-5px'},
+  {at: 0, expect: '10px'},
+  {at: 0.3, expect: '19px'},
+  {at: 0.6, expect: '28px'},
+  {at: 1, expect: '40px'},
+  {at: 1.5, expect: '55px'},
+]);
+
+test_no_interpolation({
+  property: 'vertical-align',
+  from: 'initial',
+  to: '40px',
+});
+
+test_interpolation({
+  property: 'vertical-align',
+  from: 'inherit',
+  to: '40px',
+}, [
+  {at: -0.5, expect: '130px'},
+  {at: 0, expect: '100px'},
+  {at: 0.3, expect: '82px'},
+  {at: 0.6, expect: '64px'},
+  {at: 1, expect: '40px'},
+  {at: 1.5, expect: '10px'},
+]);
+
+test_no_interpolation({
+  property: 'vertical-align',
+  from: 'unset',
+  to: '40px',
+});
+
+test_interpolation({
+  property: 'vertical-align',
+  from: '0px',
+  to: '100px'
+}, [
+  {at: -0.5, expect: '-50px'},
+  {at: 0, expect: '0px'},
+  {at: 0.3, expect: '30px'},
+  {at: 0.6, expect: '60px'},
+  {at: 1, expect: '100px'},
+  {at: 1.5, expect: '150px'}
+]);
+
+test_interpolation({
+  property: 'vertical-align',
+  from: '40px',
+  to: '40%'
+}, [
+  {at: -0.5, expect: 'calc(60px - 20%)'},
+  {at: 0, expect: 'calc(40px + 0%)'},
+  {at: 0.3, expect: 'calc(28px + 12%)'},
+  {at: 1, expect: 'calc(0px + 40%)'},
+  {at: 1.5, expect: 'calc(-20px + 60%)'}
+]);
+
+test_no_interpolation({
+  property: 'vertical-align',
+  from: 'super',
+  to: '40%'
+});
+</script>
+</body>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/w3c-import.log
new file mode 100644 (file)
index 0000000..c8e67bd
--- /dev/null
@@ -0,0 +1,21 @@
+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the WPT github:
+       https://github.com/web-platform-tests/wpt
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-composition.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/text-shadow-interpolation.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-composition.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/vertical-align-interpolation.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation.html
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation-expected.txt
new file mode 100644 (file)
index 0000000..9ba55f8
--- /dev/null
@@ -0,0 +1,210 @@
+
+PASS CSS Transitions: property <z-index> from neutral to [5] at (-0.3) should be [-4] 
+PASS CSS Transitions: property <z-index> from neutral to [5] at (0) should be [-2] 
+PASS CSS Transitions: property <z-index> from neutral to [5] at (0.3) should be [0] 
+PASS CSS Transitions: property <z-index> from neutral to [5] at (0.6) should be [2] 
+PASS CSS Transitions: property <z-index> from neutral to [5] at (1) should be [5] 
+PASS CSS Transitions: property <z-index> from neutral to [5] at (1.5) should be [9] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (-0.3) should be [-4] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (0) should be [-2] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (0.3) should be [0] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (0.6) should be [2] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (1) should be [5] 
+PASS CSS Transitions with transition: all: property <z-index> from neutral to [5] at (1.5) should be [9] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (-0.3) should be [-4] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (0) should be [-2] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (0.3) should be [0] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (0.6) should be [2] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (1) should be [5] 
+PASS CSS Animations: property <z-index> from neutral to [5] at (1.5) should be [9] 
+PASS Web Animations: property <z-index> from neutral to [5] at (-0.3) should be [-4] 
+FAIL Web Animations: property <z-index> from neutral to [5] at (0) should be [-2] assert_equals: expected "- 2 " but got "- 4 "
+FAIL Web Animations: property <z-index> from neutral to [5] at (0.3) should be [0] assert_equals: expected "0 " but got "- 1 "
+FAIL Web Animations: property <z-index> from neutral to [5] at (0.6) should be [2] assert_equals: expected "2 " but got "3 "
+PASS Web Animations: property <z-index> from neutral to [5] at (1) should be [5] 
+FAIL Web Animations: property <z-index> from neutral to [5] at (1.5) should be [9] assert_equals: expected "9 " but got "5 "
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (-0.3) should be [5] assert_equals: expected "5 " but got "- 1 "
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (0) should be [5] assert_equals: expected "5 " but got "0 "
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (0.3) should be [5] assert_equals: expected "5 " but got "2 "
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Transitions: property <z-index> from [initial] to [5] at (1) should be [5] 
+FAIL CSS Transitions: property <z-index> from [initial] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (-0.3) should be [5] assert_equals: expected "5 " but got "- 1 "
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (0) should be [5] assert_equals: expected "5 " but got "0 "
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (0.3) should be [5] assert_equals: expected "5 " but got "2 "
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (1) should be [5] 
+FAIL CSS Transitions with transition: all: property <z-index> from [initial] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (-0.3) should be [initial] assert_equals: expected "auto " but got "- 1 "
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (0) should be [initial] assert_equals: expected "auto " but got "0 "
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (0.3) should be [initial] assert_equals: expected "auto " but got "2 "
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Animations: property <z-index> from [initial] to [5] at (1) should be [5] 
+FAIL CSS Animations: property <z-index> from [initial] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL Web Animations: property <z-index> from [initial] to [5] at (-0.3) should be [initial] assert_equals: expected "auto " but got "- 1 "
+FAIL Web Animations: property <z-index> from [initial] to [5] at (0) should be [initial] assert_equals: expected "auto " but got "0 "
+FAIL Web Animations: property <z-index> from [initial] to [5] at (0.3) should be [initial] assert_equals: expected "auto " but got "2 "
+FAIL Web Animations: property <z-index> from [initial] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL Web Animations: property <z-index> from [initial] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS Web Animations: property <z-index> from [initial] to [5] at (1) should be [5] 
+FAIL Web Animations: property <z-index> from [initial] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (-0.3) should be [18] 
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (0) should be [15] 
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (0.3) should be [12] 
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (0.6) should be [9] 
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (1) should be [5] 
+PASS CSS Transitions: property <z-index> from [inherit] to [5] at (1.5) should be [0] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (-0.3) should be [18] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (0) should be [15] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (0.3) should be [12] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (0.6) should be [9] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (1) should be [5] 
+PASS CSS Transitions with transition: all: property <z-index> from [inherit] to [5] at (1.5) should be [0] 
+FAIL CSS Animations: property <z-index> from [inherit] to [5] at (-0.3) should be [18] assert_equals: expected "18 " but got "- 4 "
+FAIL CSS Animations: property <z-index> from [inherit] to [5] at (0) should be [15] assert_equals: expected "15 " but got "- 2 "
+FAIL CSS Animations: property <z-index> from [inherit] to [5] at (0.3) should be [12] assert_equals: expected "12 " but got "0 "
+FAIL CSS Animations: property <z-index> from [inherit] to [5] at (0.6) should be [9] assert_equals: expected "9 " but got "2 "
+PASS CSS Animations: property <z-index> from [inherit] to [5] at (1) should be [5] 
+FAIL CSS Animations: property <z-index> from [inherit] to [5] at (1.5) should be [0] assert_equals: expected "0 " but got "9 "
+FAIL Web Animations: property <z-index> from [inherit] to [5] at (-0.3) should be [18] assert_equals: expected "18 " but got "- 4 "
+FAIL Web Animations: property <z-index> from [inherit] to [5] at (0) should be [15] assert_equals: expected "15 " but got "- 4 "
+FAIL Web Animations: property <z-index> from [inherit] to [5] at (0.3) should be [12] assert_equals: expected "12 " but got "- 1 "
+FAIL Web Animations: property <z-index> from [inherit] to [5] at (0.6) should be [9] assert_equals: expected "9 " but got "3 "
+PASS Web Animations: property <z-index> from [inherit] to [5] at (1) should be [5] 
+FAIL Web Animations: property <z-index> from [inherit] to [5] at (1.5) should be [0] assert_equals: expected "0 " but got "5 "
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (-0.3) should be [5] assert_equals: expected "5 " but got "- 1 "
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (0) should be [5] assert_equals: expected "5 " but got "0 "
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (0.3) should be [5] assert_equals: expected "5 " but got "2 "
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Transitions: property <z-index> from [unset] to [5] at (1) should be [5] 
+FAIL CSS Transitions: property <z-index> from [unset] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (-0.3) should be [5] assert_equals: expected "5 " but got "- 1 "
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (0) should be [5] assert_equals: expected "5 " but got "0 "
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (0.3) should be [5] assert_equals: expected "5 " but got "2 "
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (1) should be [5] 
+FAIL CSS Transitions with transition: all: property <z-index> from [unset] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (-0.3) should be [unset] assert_equals: expected "auto " but got "- 1 "
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (0) should be [unset] assert_equals: expected "auto " but got "0 "
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (0.3) should be [unset] assert_equals: expected "auto " but got "2 "
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS CSS Animations: property <z-index> from [unset] to [5] at (1) should be [5] 
+FAIL CSS Animations: property <z-index> from [unset] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+FAIL Web Animations: property <z-index> from [unset] to [5] at (-0.3) should be [unset] assert_equals: expected "auto " but got "- 1 "
+FAIL Web Animations: property <z-index> from [unset] to [5] at (0) should be [unset] assert_equals: expected "auto " but got "0 "
+FAIL Web Animations: property <z-index> from [unset] to [5] at (0.3) should be [unset] assert_equals: expected "auto " but got "2 "
+FAIL Web Animations: property <z-index> from [unset] to [5] at (0.5) should be [5] assert_equals: expected "5 " but got "3 "
+FAIL Web Animations: property <z-index> from [unset] to [5] at (0.6) should be [5] assert_equals: expected "5 " but got "3 "
+PASS Web Animations: property <z-index> from [unset] to [5] at (1) should be [5] 
+FAIL Web Animations: property <z-index> from [unset] to [5] at (1.5) should be [5] assert_equals: expected "5 " but got "8 "
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (-0.3) should be [-8] 
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (0) should be [-5] 
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (0.3) should be [-2] 
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (0.6) should be [1] 
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (1) should be [5] 
+PASS CSS Transitions: property <z-index> from [-5] to [5] at (1.5) should be [10] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (-0.3) should be [-8] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (0) should be [-5] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (0.3) should be [-2] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (0.6) should be [1] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (1) should be [5] 
+PASS CSS Transitions with transition: all: property <z-index> from [-5] to [5] at (1.5) should be [10] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (-0.3) should be [-8] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (0) should be [-5] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (0.3) should be [-2] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (0.6) should be [1] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (1) should be [5] 
+PASS CSS Animations: property <z-index> from [-5] to [5] at (1.5) should be [10] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (-0.3) should be [-8] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (0) should be [-5] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (0.3) should be [-2] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (0.6) should be [1] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (1) should be [5] 
+PASS Web Animations: property <z-index> from [-5] to [5] at (1.5) should be [10] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (-0.3) should be [1] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (0) should be [2] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (0.3) should be [3] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (0.6) should be [3] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (1) should be [4] 
+PASS CSS Transitions: property <z-index> from [2] to [4] at (1.5) should be [5] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (-0.3) should be [1] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (0) should be [2] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (0.3) should be [3] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (0.6) should be [3] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (1) should be [4] 
+PASS CSS Transitions with transition: all: property <z-index> from [2] to [4] at (1.5) should be [5] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (-0.3) should be [1] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (0) should be [2] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (0.3) should be [3] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (0.6) should be [3] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (1) should be [4] 
+PASS CSS Animations: property <z-index> from [2] to [4] at (1.5) should be [5] 
+PASS Web Animations: property <z-index> from [2] to [4] at (-0.3) should be [1] 
+PASS Web Animations: property <z-index> from [2] to [4] at (0) should be [2] 
+PASS Web Animations: property <z-index> from [2] to [4] at (0.3) should be [3] 
+PASS Web Animations: property <z-index> from [2] to [4] at (0.6) should be [3] 
+PASS Web Animations: property <z-index> from [2] to [4] at (1) should be [4] 
+PASS Web Animations: property <z-index> from [2] to [4] at (1.5) should be [5] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (-0.3) should be [-1] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (0) should be [-2] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (0.1) should be [-2] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (0.3) should be [-3] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (0.6) should be [-3] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (1) should be [-4] 
+PASS CSS Transitions: property <z-index> from [-2] to [-4] at (1.5) should be [-5] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (-0.3) should be [-1] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (0) should be [-2] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (0.1) should be [-2] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (0.3) should be [-3] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (0.6) should be [-3] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (1) should be [-4] 
+PASS CSS Transitions with transition: all: property <z-index> from [-2] to [-4] at (1.5) should be [-5] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (-0.3) should be [-1] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (0) should be [-2] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (0.1) should be [-2] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (0.3) should be [-3] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (0.6) should be [-3] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (1) should be [-4] 
+PASS CSS Animations: property <z-index> from [-2] to [-4] at (1.5) should be [-5] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (-0.3) should be [-1] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (0) should be [-2] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (0.1) should be [-2] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (0.3) should be [-3] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (0.6) should be [-3] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (1) should be [-4] 
+PASS Web Animations: property <z-index> from [-2] to [-4] at (1.5) should be [-5] 
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (-0.3) should be [10] assert_equals: expected "10 " but got "- 3 "
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (0) should be [10] assert_equals: expected "10 " but got "0 "
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (0.3) should be [10] assert_equals: expected "10 " but got "3 "
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (0.5) should be [10] assert_equals: expected "10 " but got "5 "
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (0.6) should be [10] assert_equals: expected "10 " but got "6 "
+PASS CSS Transitions: property <z-index> from [auto] to [10] at (1) should be [10] 
+FAIL CSS Transitions: property <z-index> from [auto] to [10] at (1.5) should be [10] assert_equals: expected "10 " but got "15 "
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (-0.3) should be [10] assert_equals: expected "10 " but got "- 3 "
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (0) should be [10] assert_equals: expected "10 " but got "0 "
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (0.3) should be [10] assert_equals: expected "10 " but got "3 "
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (0.5) should be [10] assert_equals: expected "10 " but got "5 "
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (0.6) should be [10] assert_equals: expected "10 " but got "6 "
+PASS CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (1) should be [10] 
+FAIL CSS Transitions with transition: all: property <z-index> from [auto] to [10] at (1.5) should be [10] assert_equals: expected "10 " but got "15 "
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (-0.3) should be [auto] assert_equals: expected "auto " but got "- 3 "
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (0) should be [auto] assert_equals: expected "auto " but got "0 "
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (0.3) should be [auto] assert_equals: expected "auto " but got "3 "
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (0.5) should be [10] assert_equals: expected "10 " but got "5 "
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (0.6) should be [10] assert_equals: expected "10 " but got "6 "
+PASS CSS Animations: property <z-index> from [auto] to [10] at (1) should be [10] 
+FAIL CSS Animations: property <z-index> from [auto] to [10] at (1.5) should be [10] assert_equals: expected "10 " but got "15 "
+FAIL Web Animations: property <z-index> from [auto] to [10] at (-0.3) should be [auto] assert_equals: expected "auto " but got "- 3 "
+FAIL Web Animations: property <z-index> from [auto] to [10] at (0) should be [auto] assert_equals: expected "auto " but got "0 "
+FAIL Web Animations: property <z-index> from [auto] to [10] at (0.3) should be [auto] assert_equals: expected "auto " but got "3 "
+FAIL Web Animations: property <z-index> from [auto] to [10] at (0.5) should be [10] assert_equals: expected "10 " but got "5 "
+FAIL Web Animations: property <z-index> from [auto] to [10] at (0.6) should be [10] assert_equals: expected "10 " but got "6 "
+PASS Web Animations: property <z-index> from [auto] to [10] at (1) should be [10] 
+FAIL Web Animations: property <z-index> from [auto] to [10] at (1.5) should be [10] assert_equals: expected "10 " but got "15 "
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/animations/z-index-interpolation.html
new file mode 100644 (file)
index 0000000..9673cc4
--- /dev/null
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>z-index interpolation</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visuren.html#z-index">
+<meta name="assert" content="z-index supports animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+body {
+  margin-top: 20px;
+}
+.layer-reference {
+  position: fixed;
+  top: 0px;
+  height: 100vh;
+  width: 50px;
+  background-color: rgba(255, 255, 255, 0.75);
+  font-family: sans-serif;
+  text-align: center;
+  padding-top: 5px;
+  border: 1px solid;
+}
+.parent {
+  z-index: 15;
+}
+.target {
+  position: relative;
+  width: 350px;
+  height: 10px;
+  z-index: -2;
+}
+.actual {
+  background-color: black;
+}
+.expected {
+  background-color: green;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+  property: 'z-index',
+  from: neutralKeyframe,
+  to: '5',
+}, [
+  {at: -0.3, expect: '-4'},
+  {at: 0, expect: '-2'},
+  {at: 0.3, expect: '0'},
+  {at: 0.6, expect: '2'},
+  {at: 1, expect: '5'},
+  {at: 1.5, expect: '9'},
+]);
+
+test_no_interpolation({
+  property: 'z-index',
+  from: 'initial',
+  to: '5',
+});
+
+// We fail to inherit correctly due to style overadjustment: crbug.com/375982
+test_interpolation({
+  property: 'z-index',
+  from: 'inherit',
+  to: '5',
+}, [
+  {at: -0.3, expect: '18'},
+  {at: 0, expect: '15'},
+  {at: 0.3, expect: '12'},
+  {at: 0.6, expect: '9'},
+  {at: 1, expect: '5'},
+  {at: 1.5, expect: '0'},
+]);
+
+test_no_interpolation({
+  property: 'z-index',
+  from: 'unset',
+  to: '5',
+});
+
+test_interpolation({
+  property: 'z-index',
+  from: '-5',
+  to: '5'
+}, [
+  {at: -0.3, expect: '-8'},
+  {at: 0, expect: '-5'},
+  {at: 0.3, expect: '-2'},
+  {at: 0.6, expect: '1'},
+  {at: 1, expect: '5'},
+  {at: 1.5, expect: '10'},
+]);
+
+test_interpolation({
+  property: 'z-index',
+  from: '2',
+  to: '4'
+}, [
+  {at: -0.3, expect: '1'},
+  {at: 0, expect: '2'},
+  {at: 0.3, expect: '3'},
+  {at: 0.6, expect: '3'},
+  {at: 1, expect: '4'},
+  {at: 1.5, expect: '5'},
+]);
+
+test_interpolation({
+  property: 'z-index',
+  from: '-2',
+  to: '-4'
+}, [
+  {at: -0.3, expect: '-1'},
+  {at: 0, expect: '-2'},
+  {at: 0.1, expect: '-2'},
+  {at: 0.3, expect: '-3'},
+  {at: 0.6, expect: '-3'},
+  {at: 1, expect: '-4'},
+  {at: 1.5, expect: '-5'},
+]);
+
+test_no_interpolation({
+  property: 'z-index',
+  from: 'auto',
+  to: '10',
+});
+</script>
index 231a585..009260e 100644 (file)
@@ -4,9 +4,9 @@
 <meta charset="utf-8">
 <title>CSS Transitions Test: Transitioning before load event</title>
 <meta name="assert" content="Test checks that transitions are run even before the load event fires">
-<!--  NOTE: This test covers unspecified behavior and should probably be
+<!-- NOTE: This test covers unspecified behavior and should probably be
      removed. It this behavior *were* specified, it would probably be
-     specified here:  -->
+     specified here: -->
 <link rel="help" title="5. Transition Events" href="https://drafts.csswg.org/css-transitions/#starting">
 <link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">
 
index 140dead..d730b72 100644 (file)
@@ -1,7 +1,5 @@
 
 PASS Property transition-timing-function value 'linear' computes to 'linear' 
-FAIL Property transition-timing-function value '' computes to 'ease' assert_true: '' is a supported value for transition-timing-function. expected true got false
-PASS Property transition-timing-function value 'initial' computes to 'ease' 
 PASS Property transition-timing-function value 'ease' computes to 'ease' 
 PASS Property transition-timing-function value 'ease-in' computes to 'ease-in' 
 PASS Property transition-timing-function value 'ease-out' computes to 'ease-out' 
index e57856b..cb11054 100644 (file)
@@ -13,8 +13,6 @@
 <div id="target"></div>
 <script>
 test_computed_value("transition-timing-function", "linear");
-test_computed_value("transition-timing-function", "", "ease");
-test_computed_value("transition-timing-function", "initial", "ease");
 
 test_computed_value("transition-timing-function", "ease");
 test_computed_value("transition-timing-function", "ease-in");
index 9c159af..1f6d498 100644 (file)
@@ -30,9 +30,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // this test takes its time, give it a minute to run
index 6ea59e0..9c5d9af 100644 (file)
@@ -29,9 +29,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // this suite tests property value types that haven't been specified
index 6194f7f..4f6bbda 100644 (file)
@@ -30,9 +30,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // see README.md for an explanation of how this test suite works
index b1f66ee..6c932aa 100644 (file)
@@ -28,9 +28,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // see README.md for an explanation of how this test suite works
index 717b680..8500436 100644 (file)
@@ -29,9 +29,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // see README.md for an explanation of how this test suite works
index e274349..abbdecd 100644 (file)
@@ -29,9 +29,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // http://www.w3.org/TR/css3-transitions/#starting
index f981bcd..9556cf7 100644 (file)
@@ -29,9 +29,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // http://www.w3.org/TR/css3-transitions/#starting
index 22e563b..13a1613 100644 (file)
@@ -28,9 +28,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
             // http://www.w3.org/TR/css3-transitions/#starting
index 8649df0..146c533 100644 (file)
@@ -30,9 +30,9 @@
         </style>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="fixture" class="fixture">
             <div class="container">
                 <div class="transition">Text sample</div>
         </div>
         <div id="offscreen"></div>
 
-        <!-- 
+        <!--
             SEE ./support/README.md for an abstract explanation of the test procedure
             http://test.csswg.org/source/contributors/rodneyrehm/submitted/css3-transitions/README.md
-         -->
+        -->
 
         <script>
 
index 4459399..e0bf09a 100644 (file)
@@ -15,9 +15,9 @@
         <script src="./support/helper.js" type="text/javascript"></script>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="container">
             <div id="transition"></div>
         </div>
index 9764c4a..921525e 100644 (file)
@@ -16,9 +16,9 @@
         <script src="./support/helper.js" type="text/javascript"></script>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="container">
             <div id="transition"></div>
         </div>
index 88a581e..b5c095f 100644 (file)
@@ -16,9 +16,9 @@
         <script src="./support/helper.js" type="text/javascript"></script>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="container">
             <div id="transition"></div>
         </div>
index 228bf34..47a1417 100644 (file)
@@ -15,9 +15,9 @@
         <script src="./support/helper.js" type="text/javascript"></script>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="container">
             <div id="transition"></div>
         </div>
index 86fcf83..99196b6 100644 (file)
@@ -15,9 +15,9 @@
         <script src="./support/helper.js" type="text/javascript"></script>
     </head>
     <body>
-        <!--  required by testharnessreport.js  -->
+        <!-- required by testharnessreport.js -->
         <div id="log"></div>
-        <!--  elements used for testing  -->
+        <!-- elements used for testing -->
         <div id="container">
             <div id="transition"></div>
         </div>
index cd47469..a40ba45 100644 (file)
@@ -19,7 +19,7 @@ test(function() {
 }, "the event inherts from Event");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent();
   }, 'First argument is required, so was expecting a TypeError.');
 }, 'Missing type argument');
@@ -185,37 +185,37 @@ test(function() {
 }, "elapsedTime set to an object with a valueOf function");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: NaN});
   }, 'elapsedTime cannot be NaN so was expecting a TypeError');
 }, "elapsedTime cannot be set to NaN");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: Infinity});
   }, 'elapsedTime cannot be Infinity so was expecting a TypeError');
 }, "elapsedTime cannot be set to Infinity");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: -Infinity});
   }, 'elapsedTime cannot be -Infinity so was expecting a TypeError');
 }, "elapsedTime cannot be set to -Infinity");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: "sample"});
   }, 'elapsedTime cannot be a string so was expecting a TypeError');
 }, "elapsedTime cannot be set to 'sample'");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: [0.5, 1.0]});
   }, 'elapsedTime cannot be a multi-element array so was expecting a TypeError');
 }, "elapsedTime cannot be set to [0.5, 1.0]");
 
 test(function() {
-  assert_throws(new TypeError(), function() {
+  assert_throws_js(TypeError, function() {
     new TransitionEvent("test", {elapsedTime: { sample: 0.5}});
   }, 'elapsedTime cannot be an object so was expecting a TypeError');
 }, "elapsedTime cannot be set to an object");
index 0d9b756..128fd85 100644 (file)
@@ -15,7 +15,6 @@ None
 ------------------------------------------------------------------------
 List of files:
 /LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html
-/LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSPseudoElement-getAnimations.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-canceling.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-currentTime.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/CSSTransition-effect.tentative.html
index 9e63b02..16a1c0e 100644 (file)
@@ -1,6 +1,7 @@
 'use strict';
 (function() {
   var interpolationTests = [];
+  var compositionTests = [];
   var cssAnimationsData = {
     sharedStyle: null,
     nextID: 0,
@@ -18,6 +19,7 @@
 
   var cssAnimationsInterpolation = {
     name: 'CSS Animations',
+    isSupported: function() {return true;},
     supportsProperty: function() {return true;},
     supportsValue: function() {return true;},
     setup: function() {},
@@ -43,6 +45,7 @@
 
   var cssTransitionsInterpolation = {
     name: 'CSS Transitions',
+    isSupported: function() {return true;},
     supportsProperty: function() {return true;},
     supportsValue: function() {return true;},
     setup: function(property, from, target) {
@@ -64,6 +67,7 @@
 
   var cssTransitionAllInterpolation = {
     name: 'CSS Transitions with transition: all',
+    isSupported: function() {return true;},
     // The 'all' value doesn't cover custom properties.
     supportsProperty: function(property) {return property.indexOf('--') !== 0;},
     supportsValue: function() {return true;},
@@ -86,6 +90,7 @@
 
   var webAnimationsInterpolation = {
     name: 'Web Animations',
+    isSupported: function() {return 'animate' in Element.prototype;},
     supportsProperty: function(property) {return true;},
     supportsValue: function(value) {return value !== '';},
     setup: function() {},
       this.interpolateComposite(property, from, 'replace', to, 'replace', at, target);
     },
     interpolateComposite: function(property, from, fromComposite, to, toComposite, at, target) {
+      // This case turns into a test error later on.
+      if (!this.isSupported())
+        return;
+
       // Convert standard properties to camelCase.
       if (!property.startsWith('--')) {
         for (var i = property.length - 2; i > 0; --i) {
     return expectations.map(function(expectation) {
       var actualTargetContainer = createTargetContainer(testContainer, 'actual');
       var expectedTargetContainer = createTargetContainer(testContainer, 'expected');
-      if (!isNeutralKeyframe(expectation.expect)) {
-        expectedTargetContainer.target.style.setProperty(property, expectation.expect);
+      var expectedStr = expectation.option || expectation.expect;
+      if (!isNeutralKeyframe(expectedStr)) {
+        expectedTargetContainer.target.style.setProperty(property, expectedStr);
       }
       var target = actualTargetContainer.target;
       interpolationMethod.setup(property, from, target);
       target.measure = function() {
         var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(property);
         test(function() {
+          assert_true(interpolationMethod.isSupported(), `${interpolationMethod.name} should be supported`);
+
           if (from && from !== neutralKeyframe) {
             assert_true(CSS.supports(property, from), '\'from\' value should be supported');
           }
           comparisonFunction(
               getComputedStyle(target).getPropertyValue(property),
               expectedValue);
-        }, `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectation.expect)}]`);
+        }, `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectedStr)}]`);
       };
       return target;
     });
   }
 
-  function createTestTargets(interpolationMethods, interpolationTests, container) {
+  function createCompositionTestTargets(compositionContainer, compositionTest) {
+    var options = compositionTest.options;
+    var property = options.property;
+    var underlying = options.underlying;
+    var comparisonFunction = options.comparisonFunction;
+    var from = options.accumulateFrom || options.addFrom || options.replaceFrom;
+    var to = options.accumulateTo || options.addTo || options.replaceTo;
+    var fromComposite = 'accumulateFrom' in options ? 'accumulate' : 'addFrom' in options ? 'add' : 'replace';
+    var toComposite = 'accumulateTo' in options ? 'accumulate' : 'addTo' in options ? 'add' : 'replace';
+    const invalidFrom = 'addFrom' in options === 'replaceFrom' in options
+        && 'addFrom' in options === 'accumulateFrom' in options;
+    const invalidTo = 'addTo' in options === 'replaceTo' in options
+        && 'addTo' in options === 'accumulateTo' in options;
+    if (invalidFrom || invalidTo) {
+      test(function() {
+        assert_false(invalidFrom, 'Exactly one of accumulateFrom, addFrom, or replaceFrom must be specified');
+        assert_false(invalidTo, 'Exactly one of accumulateTo, addTo, or replaceTo must be specified');
+      }, `Composition tests must have valid setup`);
+    }
+
+    var testText = `Compositing: property <${property}> underlying [${underlying}] from ${fromComposite} [${from}] to ${toComposite} [${to}]`;
+    var testContainer = createElement(compositionContainer, 'div');
+    createElement(testContainer);
+
+    // Setup a standard equality function if an override is not provided.
+    if (!comparisonFunction) {
+      comparisonFunction = (actual, expected) => {
+        assert_equals(normalizeValue(actual), normalizeValue(expected));
+      };
+    }
+
+    return compositionTest.expectations.map(function(expectation) {
+      var actualTargetContainer = createTargetContainer(testContainer, 'actual');
+      var expectedTargetContainer = createTargetContainer(testContainer, 'expected');
+      var expectedStr = expectation.option || expectation.expect;
+      if (!isNeutralKeyframe(expectedStr)) {
+        expectedTargetContainer.target.style.setProperty(property, expectedStr);
+      }
+      var target = actualTargetContainer.target;
+      target.style.setProperty(property, underlying);
+      target.interpolate = function() {
+        webAnimationsInterpolation.interpolateComposite(property, from, fromComposite, to, toComposite, expectation.at, target);
+      };
+      target.measure = function() {
+        var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(property);
+        test(function() {
+
+          if (from && from !== neutralKeyframe) {
+            assert_true(CSS.supports(property, from), '\'from\' value should be supported');
+          }
+          if (to && to !== neutralKeyframe) {
+            assert_true(CSS.supports(property, to), '\'to\' value should be supported');
+          }
+          if (typeof underlying !== 'undefined') {
+            assert_true(CSS.supports(property, underlying), '\'underlying\' value should be supported');
+          }
+
+          comparisonFunction(
+              getComputedStyle(target).getPropertyValue(property),
+              expectedValue);
+        }, `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectedStr)}]`);
+      };
+      return target;
+    });
+  }
+
+
+
+  function createTestTargets(interpolationMethods, interpolationTests, compositionTests, container) {
     var targets = [];
     for (var interpolationMethod of interpolationMethods) {
       var interpolationMethodContainer = createElement(container);
         [].push.apply(targets, createInterpolationTestTargets(interpolationMethod, interpolationMethodContainer, interpolationTest));
       }
     }
+    var compositionContainer = createElement(container);
+    for (var compositionTest of compositionTests) {
+      [].push.apply(targets, createCompositionTestTargets(compositionContainer, compositionTest));
+    }
     return targets;
   }
 
   function test_no_interpolation(options) {
     test_interpolation(options, expectNoInterpolation);
   }
-
-  function test_interpolation(options, expectations) {
-    interpolationTests.push({options, expectations});
+  function create_tests() {
     var interpolationMethods = [
       cssTransitionsInterpolation,
       cssTransitionAllInterpolation,
       webAnimationsInterpolation,
     ];
     var container = createElement(document.body);
-    var targets = createTestTargets(interpolationMethods, interpolationTests, container);
+    var targets = createTestTargets(interpolationMethods, interpolationTests, compositionTests, container);
     // Separate interpolation and measurement into different phases to avoid O(n^2) of the number of targets.
     for (var target of targets) {
       target.interpolate();
       target.measure();
     }
     container.remove();
-    interpolationTests = [];
   }
 
+  function test_interpolation(options, expectations) {
+    interpolationTests.push({options, expectations});
+    create_tests();
+    interpolationTests = [];
+  }
+  function test_composition(options, expectations) {
+    compositionTests.push({options, expectations});
+    create_tests();
+    compositionTests = [];
+  }
   window.test_interpolation = test_interpolation;
   window.test_no_interpolation = test_no_interpolation;
+  window.test_composition = test_composition;
   window.neutralKeyframe = neutralKeyframe;
 })();
index 75493ce..c41e0e0 100644 (file)
@@ -59,7 +59,7 @@ Guidelines for writing tests
 
       ```javascript
       test(t => {
-        assert_throws({ name: 'TypeError' }, () => {
+        assert_throws_js(TypeError, () => {
           createDiv(t).animate(null, -1);
         });
       }, 'Setting a negative duration throws a TypeError');
index 11bbf1a..2f91ebc 100644 (file)
@@ -410,15 +410,6 @@ const gCSSProperties = {
       { type: 'discrete', options: [ [ 'auto', '1px' ] ] }
     ]
   },
-  'content': {
-    // https://drafts.csswg.org/css-content-3/#propdef-content
-    types: [
-      { type: 'discrete', options: [ [ '"a"', '"b"' ] ] }
-    ],
-    setup: t => {
-      return getPseudoElement(t, 'before');
-    }
-  },
   'counter-increment': {
     // https://drafts.csswg.org/css-lists-3/#propdef-counter-increment
     types: [
@@ -1432,13 +1423,11 @@ const gCSSProperties = {
 };
 
 function testAnimationSamples(animation, idlName, testSamples) {
-  const type = animation.effect.target.type;
-  const target = animation.effect.target.constructor.name === 'CSSPseudoElement'
-                 ? animation.effect.target.element
-                 : animation.effect.target;
+  const pseudoType = animation.effect.pseudoElement;
+  const target = animation.effect.target;
   for (const testSample of testSamples) {
     animation.currentTime = testSample.time;
-    assert_equals(getComputedStyle(target, type)[idlName],
+    assert_equals(getComputedStyle(target, pseudoType)[idlName],
                   testSample.expected,
                   `The value should be ${testSample.expected}` +
                   ` at ${testSample.time}ms`);
@@ -1453,10 +1442,8 @@ function toOrderedArray(string) {
 // don't specify an order for serializing computed values.
 // This test is for such the property.
 function testAnimationSamplesWithAnyOrder(animation, idlName, testSamples) {
-  const type = animation.effect.target.type;
-  const target = animation.effect.target.constructor.name === 'CSSPseudoElement'
-                 ? animation.effect.target.element
-                 : animation.effect.target;
+  const type = animation.effect.pseudoElement;
+  const target = animation.effect.target;
   for (const testSample of testSamples) {
     animation.currentTime = testSample.time;
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform-expected.txt
new file mode 100644 (file)
index 0000000..6e9ed00
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS  apply interpolated transform on multiple keyframes 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html
new file mode 100644 (file)
index 0000000..c101b5f
--- /dev/null
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title> apply interpolated transform on multiple keyframes</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations/#keyframes-section">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<div id="target"></div>
+<script>
+'use strict';
+// This test tests the correctness if animation behavior under
+// box-size-denpendent and non-box-size-dependent transformation.
+test(t => {
+  var div_1 = createDiv(t);
+  div_1.style.width = "100px";
+  // Non-pairwise compatible transforms that are effectively no-ops with a
+  // matrix fallback. Both rotate(360deg) and scale(1) are identity matrix,
+  // making it easy to compute.
+  const keyframe1 = [
+      {"transform":"translateX( 200px ) rotate( 360deg )"},
+      {"transform":"translateX( 100% ) scale( 1 )"},
+    ];
+  const keyframe2 = [
+      {"transform":"translateX( 200px ) rotate( 360deg )"},
+      {"transform":"translateX( 100% ) scale( 1 )"},
+      {"transform":"none"},
+      {}
+    ];
+
+  const animation1 = div_1.animate(keyframe1, {
+                            "duration":3000,
+                            "easing":"linear",
+    });
+  const animation2 = div_1.animate(keyframe2, {
+                            "duration":3000,
+                            "easing":"linear",
+    });
+ // new animation on the second div, using px value instead of % as a reference
+
+  var div_2 = createDiv(t);
+  div_2.style.width = "100px";
+  const keyframe3 = [
+      {"transform":"translateX( 200px ) rotate( 360deg )"},
+      {"transform":"translateX( 100px ) scale( 1 )"},
+    ];
+  const keyframe4 = [
+      {"transform":"translateX( 200px ) rotate( 360deg )"},
+      {"transform":"translateX( 100px ) scale( 1 )"},
+      {"transform":"none"},
+      {}
+    ];
+
+  const animation3 = div_2.animate(keyframe1, {
+                            "duration":3000,
+                            "easing":"linear",
+    });
+  const animation4 = div_2.animate(keyframe2, {
+                            "duration":3000,
+                            "easing":"linear",
+                            "composite": 'replace',
+    });
+  animation1.pause();
+  animation2.pause();
+  animation3.pause();
+  animation4.pause();
+  var i;
+  for (i = 0; i <= 30; i++) {
+    animation2.currentTime = 100 * i;
+    animation4.currentTime = 100 * i;
+    var box_size_dependent_transform = getComputedStyle(div_1)['transform'];
+    var reference_transform = getComputedStyle(div_2)['transform']
+    var progress = i / 30;
+    // The second animation replaces the first animation. As the rotate and
+    // scale perations are effectively no-ops when the matrix fallback is
+    // applied. The expected behavior is to go from x-postion 200px to 0 in the
+    // first 2000ms and go back to x-position 200px in the last 1000ms.
+    var expected_transform = 'matrix(1, 0, 0, 1, $1, 0)'
+                            .replace('$1', Math.max(200 - 300 * progress, 0)
+                            + Math.max(0, -400 + 600 * progress));
+    assert_matrix_equals(box_size_dependent_transform, reference_transform);
+    assert_matrix_equals(reference_transform, expected_transform);
+  }
+})
+</script>
+</body>
index e11f0c7..1926858 100644 (file)
@@ -14,5 +14,6 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
+/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-interpolated-transform.html
 /LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html
 /LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/combining-effects/effect-composition.html
index b844db5..7514426 100644 (file)
@@ -133,8 +133,12 @@ PASS Element.animate() correctly sets the Animation's timeline
 PASS Element.animate() correctly sets the Animation's timeline when triggered on an element in a different document 
 PASS Element.animate() calls play on the Animation 
 PASS Element.animate() does NOT trigger a style change event 
-PASS CSSPseudoElement.animate() creates an Animation object 
-FAIL CSSPseudoElement.animate() creates an Animation object for ::marker assert_true: expected true got false
-PASS CSSPseudoElement.animate() creates an Animation object targeting to the correct CSSPseudoElement object 
-FAIL CSSPseudoElement.animate() creates an Animation object targeting to the correct CSSPseudoElement object for ::marker assert_true: expected true got false
+PASS animate() with pseudoElement parameter creates an Animation object 
+PASS animate() with pseudoElement parameter without content creates an Animation object 
+PASS animate() with pseudoElement parameter  creates an Animation object for ::marker 
+PASS animate() with pseudoElement parameter  creates an Animation object for ::first-line 
+FAIL animate() with pseudoElement an Animation object targeting the correct pseudo-element assert_equals: The returned Animation targets the correct selector expected (string) "::before" but got (undefined) undefined
+FAIL animate() with pseudoElement without content creates an Animation object targeting the correct pseudo-element assert_equals: The returned Animation targets the correct selector expected (string) "::before" but got (undefined) undefined
+FAIL animate() with pseudoElement an Animation object targeting the correct pseudo-element for ::marker assert_equals: The returned Animation targets the correct selector expected (string) "::marker" but got (undefined) undefined
+FAIL animate() with pseudoElement an Animation object targeting the correct pseudo-element for ::first-line assert_equals: The returned Animation targets the correct selector expected (string) "::first-line" but got (undefined) undefined
 
index fcf753b..4d17d2d 100644 (file)
 <script src="../../resources/keyframe-tests.js"></script>
 <script src="../../resources/timing-utils.js"></script>
 <script src="../../resources/timing-tests.js"></script>
+<style>
+.pseudo::before {content: '';}
+.pseudo::after {content: '';}
+.pseudo::marker {content: '';}
+</style>
 <body>
 <div id="log"></div>
 <iframe width="10" height="10" id="iframe"></iframe>
@@ -76,7 +81,7 @@ for (const subtest of gKeyframesTests) {
 for (const subtest of gInvalidKeyframesTests) {
   test(t => {
     const div = createDiv(t);
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       div.animate(subtest.input, 2000);
     });
   }, `Element.animate() does not accept ${subtest.desc}`);
@@ -103,7 +108,7 @@ test(t => {
 
 for (const invalid of gBadDelayValues) {
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate(null, { delay: invalid });
     });
   }, `Element.animate() does not accept invalid delay value: ${invalid}`);
@@ -122,7 +127,7 @@ for (const invalid of gBadDurationValues) {
     continue;
   }
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate(null, invalid);
     });
   }, 'Element.animate() does not accept invalid duration value: '
@@ -131,7 +136,7 @@ for (const invalid of gBadDurationValues) {
 
 for (const invalid of gBadDurationValues) {
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate(null, { duration: invalid });
     });
   }, 'Element.animate() does not accept invalid duration value: '
@@ -141,7 +146,7 @@ for (const invalid of gBadDurationValues) {
 
 for (const invalidEasing of gInvalidEasings) {
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate({ easing: invalidEasing }, 2000);
     });
   }, `Element.animate() does not accept invalid easing: '${invalidEasing}'`);
@@ -149,7 +154,7 @@ for (const invalidEasing of gInvalidEasings) {
 
 for (const invalid of gBadIterationStartValues) {
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate(null, { iterationStart: invalid });
     });
   }, 'Element.animate() does not accept invalid iterationStart value: ' +
@@ -158,7 +163,7 @@ for (const invalid of gBadIterationStartValues) {
 
 for (const invalid of gBadIterationsValues) {
   test(t => {
-    assert_throws(new TypeError, () => {
+    assert_throws_js(TypeError, () => {
       createDiv(t).animate(null, { iterations: invalid });
     });
   }, 'Element.animate() does not accept invalid iterations value: ' +
@@ -235,34 +240,83 @@ promise_test(async t => {
   assert_false(gotTransition, 'A transition should NOT have been triggered');
 }, 'Element.animate() does NOT trigger a style change event');
 
-// Tests on CSSPseudoElement
+// Tests on pseudo-elements
+// Some tests occur twice (on pseudo-elements with and without content)
+// in order to test both code paths for tree-abiding pseudo-elements in blink.
 
 test(t => {
-  const pseudoTarget = getPseudoElement(t, 'before');
-  const anim = pseudoTarget.animate(null);
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  getComputedStyle(div,"::before").content; // Sync style
+  const anim = div.animate(null, {pseudoElement: '::before'});
+  assert_class_string(anim, 'Animation', 'The returned object is an Animation');
+}, 'animate() with pseudoElement parameter creates an Animation object');
+
+test(t => {
+  const div = createDiv(t);
+  const anim = div.animate(null, {pseudoElement: '::before'});
   assert_class_string(anim, 'Animation', 'The returned object is an Animation');
-}, 'CSSPseudoElement.animate() creates an Animation object');
+}, 'animate() with pseudoElement parameter without content creates an Animation object');
 
 test(t => {
-  const pseudoTarget = getPseudoElement(t, 'marker');
-  const anim = pseudoTarget.animate(null);
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  div.style.display = 'list-item';
+  getComputedStyle(div,"::marker").content; // Sync style
+  const anim = div.animate(null, {pseudoElement: '::marker'});
   assert_class_string(anim, 'Animation', 'The returned object is an Animation for ::marker');
-}, 'CSSPseudoElement.animate() creates an Animation object for ::marker');
+}, 'animate() with pseudoElement parameter  creates an Animation object for ::marker');
+
+test(t => {
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  div.textContent = 'foo';
+  const anim = div.animate(null, {pseudoElement: '::first-line'});
+  assert_class_string(anim, 'Animation', 'The returned object is an Animation for ::first-line');
+}, 'animate() with pseudoElement parameter  creates an Animation object for ::first-line');
 
 test(t => {
-  const pseudoTarget = getPseudoElement(t, 'before');
-  const anim = pseudoTarget.animate(null);
-  assert_equals(anim.effect.target, pseudoTarget,
-                'The returned Animation targets to the correct object');
-}, 'CSSPseudoElement.animate() creates an Animation object targeting ' +
-   'to the correct CSSPseudoElement object');
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  getComputedStyle(div,"::before").content; // Sync style
+  const anim = div.animate(null, {pseudoElement: '::before'});
+  assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
+  assert_equals(anim.effect.pseudoElement, '::before',
+                'The returned Animation targets the correct selector');
+}, 'animate() with pseudoElement an Animation object targeting ' +
+   'the correct pseudo-element');
 
 test(t => {
-  const pseudoTarget = getPseudoElement(t, 'marker');
-  const anim = pseudoTarget.animate(null);
-  assert_equals(anim.effect.target, pseudoTarget,
-                'The returned Animation targets to the correct object for ::marker');
-}, 'CSSPseudoElement.animate() creates an Animation object targeting ' +
-   'to the correct CSSPseudoElement object for ::marker');
+  const div = createDiv(t);
+  const anim = div.animate(null, {pseudoElement: '::before'});
+  assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
+  assert_equals(anim.effect.pseudoElement, '::before',
+                'The returned Animation targets the correct selector');
+}, 'animate() with pseudoElement without content creates an Animation object targeting ' +
+   'the correct pseudo-element');
+
+test(t => {
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  div.style.display = 'list-item';
+  getComputedStyle(div,"::marker").content; // Sync style
+  const anim = div.animate(null, {pseudoElement: '::marker'});
+  assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
+  assert_equals(anim.effect.pseudoElement, '::marker',
+                'The returned Animation targets the correct selector');
+}, 'animate() with pseudoElement an Animation object targeting ' +
+   'the correct pseudo-element for ::marker');
+
+test(t => {
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  div.textContent = 'foo';
+  const anim = div.animate(null, {pseudoElement: '::first-line'});
+  assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
+  assert_equals(anim.effect.pseudoElement, '::first-line',
+                'The returned Animation targets the correct selector');
+}, 'animate() with pseudoElement an Animation object targeting ' +
+   'the correct pseudo-element for ::first-line');
+
 </script>
 </body>
index d37e34f..3650227 100644 (file)
@@ -4,17 +4,23 @@ PASS Commits styles for an animation that has been removed
 PASS Commits shorthand styles 
 FAIL Commits logical properties assert_equals: expected "20px" but got "10px"
 PASS Commits values calculated mid-interval 
-PASS Commits variables as their computed values 
+PASS Commits variable references as their computed values 
+FAIL Commits custom variables assert_approx_equals: expected 0.8 +/- 0.0001 but got 0.5
 FAIL Commits em units as pixel values assert_approx_equals: expected 100 +/- 0.0001 but got 0
 FAIL Commits the intermediate value of an animation in the middle of stack assert_approx_equals: expected 0.4 +/- 0.0001 but got 0.20000000298023224
+FAIL Commit composites on top of the underlying value assert_approx_equals: expected 0.5 +/- 0.0001 but got 0.20000000298023224
 PASS Triggers mutation observers when updating style 
 FAIL Does NOT trigger mutation observers when the change to style is redundant assert_equals: Should have no mutation records expected 0 but got 1
-PASS Throws if the target element is a pseudo element 
+FAIL Throws if the target element is a pseudo element assert_throws_dom: function "() => {
+    animation.commitStyles();
+  }" did not throw
 PASS Throws if the target element is not something with a style attribute 
 PASS Throws if the target effect is display:none 
 PASS Throws if the target effect's ancestor is display:none 
 PASS Treats display:contents as rendered 
 PASS Treats display:contents in a display:none subtree as not rendered 
 PASS Throws if the target effect is disconnected 
-FAIL Checks the pseudo element condition before the not rendered condition undefined is not an object (evaluating 'pseudo.element.remove')
+FAIL Checks the pseudo element condition before the not rendered condition assert_throws_dom: function "() => {
+    animation.commitStyles();
+  }" threw object "InvalidStateError: The object is in an invalid state." that is not a DOMException NoModificationAllowedError: property "code" is equal to 11, expected 7
 
index 9005db9..ca7d641 100644 (file)
@@ -5,6 +5,11 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="../../testcommon.js"></script>
+<style>
+.pseudo::before {content: '';}
+.pseudo::after {content: '';}
+.pseudo::marker {content: '';}
+</style>
 <body>
 <div id="log"></div>
 <script>
@@ -123,7 +128,23 @@ test(t => {
   div.style.setProperty('--target', '1');
 
   assert_numeric_style_equals(getComputedStyle(div).opacity, 0.5);
-}, 'Commits variables as their computed values');
+}, 'Commits variable references as their computed values');
+
+
+test(t => {
+  const div = createDiv(t);
+  div.style.setProperty('--target', '0.5');
+  div.style.opacity = 'var(--target)';
+  const animation = div.animate(
+    { '--target': 0.8 },
+    { duration: 1, fill: 'forwards' }
+  );
+  animation.finish();
+  animation.commitStyles();
+  animation.cancel();
+
+  assert_numeric_style_equals(getComputedStyle(div).opacity, 0.8);
+}, 'Commits custom variables');
 
 test(t => {
   const div = createDiv(t);
@@ -206,6 +227,54 @@ promise_test(async t => {
   const div = createDiv(t);
   div.style.opacity = '0.1';
 
+  const animA = div.animate(
+    { opacity: '0.2', composite: 'add' },
+    { duration: 1, fill: 'forwards' }
+  );
+  const animB = div.animate(
+    { opacity: '0.2', composite: 'add' },
+    { duration: 1, fill: 'forwards' }
+  );
+  const animC = div.animate(
+    { opacity: '0.3', composite: 'add' },
+    { duration: 1, fill: 'forwards' }
+  );
+
+  animA.persist();
+  animB.persist();
+  await animB.finished;
+
+  // The error cases are similar to the above test with one additional case;
+  // verifying that the animations composite on top of the correct underlying
+  // base style.
+  //
+  //  Expected result:
+  //
+  //  <underlying> + animA + animB = 0.5
+  //
+  //  Additional error results:
+  //
+  //    <underlying> + animA + animB + animC + animA + animB = 1.0 (saturates)
+  //    (Added to the computed value instead of underlying value when
+  //    resolving)
+  //
+  //    animA + animB = 0.4
+  //    Failed to composite on top of underlying value.
+  //
+
+  animB.commitStyles();
+
+  animA.cancel();
+  animB.cancel();
+  animC.cancel();
+
+  assert_numeric_style_equals(getComputedStyle(div).opacity, 0.5);
+}, 'Commit composites on top of the underlying value');
+
+promise_test(async t => {
+  const div = createDiv(t);
+  div.style.opacity = '0.1';
+
   // Setup animation
   const animation = div.animate(
     { opacity: 0.2 },
@@ -263,13 +332,15 @@ promise_test(async t => {
 }, 'Does NOT trigger mutation observers when the change to style is redundant');
 
 test(t => {
-  const pseudo = getPseudoElement(t, 'before');
-  const animation = pseudo.animate(
+
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  const animation = div.animate(
     { opacity: 0 },
-    { duration: 1, fill: 'forwards' }
+    { duration: 1, fill: 'forwards', pseudoElement: '::before' }
   );
 
-  assert_throws('NoModificationAllowedError', () => {
+  assert_throws_dom('NoModificationAllowedError', () => {
     animation.commitStyles();
   });
 }, 'Throws if the target element is a pseudo element');
@@ -285,7 +356,7 @@ test(t => {
   document.body.appendChild(nonStyleElement);
   animation.effect.target = nonStyleElement;
 
-  assert_throws('NoModificationAllowedError', () => {
+  assert_throws_dom('NoModificationAllowedError', () => {
     animation.commitStyles();
   });
 
@@ -301,7 +372,7 @@ test(t => {
 
   div.style.display = 'none';
 
-  assert_throws('InvalidStateError', () => {
+  assert_throws_dom('InvalidStateError', () => {
     animation.commitStyles();
   });
 }, 'Throws if the target effect is display:none');
@@ -318,7 +389,7 @@ test(t => {
 
   container.style.display = 'none';
 
-  assert_throws('InvalidStateError', () => {
+  assert_throws_dom('InvalidStateError', () => {
     animation.commitStyles();
   });
 }, "Throws if the target effect's ancestor is display:none");
@@ -352,7 +423,7 @@ test(t => {
   div.style.display = 'contents';
   container.style.display = 'none';
 
-  assert_throws('InvalidStateError', () => {
+  assert_throws_dom('InvalidStateError', () => {
     animation.commitStyles();
   });
 }, 'Treats display:contents in a display:none subtree as not rendered');
@@ -366,21 +437,22 @@ test(t => {
 
   div.remove();
 
-  assert_throws('InvalidStateError', () => {
+  assert_throws_dom('InvalidStateError', () => {
     animation.commitStyles();
   });
 }, 'Throws if the target effect is disconnected');
 
 test(t => {
-  const pseudo = getPseudoElement(t, 'before');
-  const animation = pseudo.animate(
+  const div = createDiv(t);
+  div.classList.add('pseudo');
+  const animation = div.animate(
     { opacity: 0 },
-    { duration: 1, fill: 'forwards' }
+    { duration: 1, fill: 'forwards', pseudoElement: '::before' }
   );
 
-  pseudo.element.remove();
+  div.remove();
 
-  assert_throws('NoModificationAllowedError', () => {
+  assert_throws_dom('NoModificationAllowedError', () => {
     animation.commitStyles();
   });
 }, 'Checks the pseudo element condition before the not rendered condition');
diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove-expected.txt
new file mode 100644 (file)
index 0000000..439c737
--- /dev/null
@@ -0,0 +1,4 @@
+
+PASS onremove event is fired when replaced animation is removed. 
+PASS onremove events are fired in the correct order 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove.html b/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/onremove.html
new file mode 100644 (file)
index 0000000..d770994
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Animation.onremove</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-onremove">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+async_test(t => {
+  const div = createDiv(t);
+  const animA = div.animate({ opacity: 1 }, { duration: 1, fill: 'forwards' });
+  const animB = div.animate({ opacity: 1 }, { duration: 1, fill: 'forwards' });
+
+  let finishedTimelineTime = null;
+  animB.onfinish = event => {