LibWeb: Interpolate polygon() function by computed value

This commit is contained in:
Tim Ledbetter 2025-09-13 14:14:49 +01:00 committed by Sam Atkins
commit 4a0fe65923
Notes: github-actions[bot] 2025-09-15 09:36:13 +00:00
3 changed files with 80 additions and 58 deletions

View file

@ -1239,6 +1239,28 @@ static RefPtr<StyleValue const> interpolate_value_impl(DOM::Element& element, Ca
return {};
return Rect { *interpolated_rect_box };
},
[&](Polygon const& from_polygon) -> Optional<BasicShape> {
// If both shapes are of type polygon(), both polygons have the same number of vertices, and use the
// same <'fill-rule'>, interpolate between each value in the shape functions.
auto const& to_polygon = to_shape.get<Polygon>();
if (from_polygon.fill_rule != to_polygon.fill_rule)
return {};
if (from_polygon.points.size() != to_polygon.points.size())
return {};
Vector<Polygon::Point> interpolated_points;
interpolated_points.ensure_capacity(from_polygon.points.size());
for (size_t i = 0; i < from_polygon.points.size(); i++) {
auto const& from_point = from_polygon.points[i];
auto const& to_point = to_polygon.points[i];
auto interpolated_point_x = interpolate_length_percentage(calculation_context, from_point.x, to_point.x, delta);
auto interpolated_point_y = interpolate_length_percentage(calculation_context, from_point.y, to_point.y, delta);
if (!interpolated_point_x.has_value() || !interpolated_point_y.has_value())
return {};
interpolated_points.unchecked_append(Polygon::Point { *interpolated_point_x, *interpolated_point_y });
}
return Polygon { from_polygon.fill_rule, move(interpolated_points) };
},
[](auto&) -> Optional<BasicShape> {
return {};
});

View file

@ -2,8 +2,8 @@ Harness status: OK
Found 366 tests
264 Pass
102 Fail
282 Pass
84 Fail
Fail CSS Transitions: property <clip-path> from neutral to [circle(40% at 20% 20%)] at (-0.3) should be [circle(66% at 7% 33%)]
Fail CSS Transitions: property <clip-path> from neutral to [circle(40% at 20% 20%)] at (0) should be [circle(60% at 10% 30%)]
Fail CSS Transitions: property <clip-path> from neutral to [circle(40% at 20% 20%)] at (0.3) should be [circle(54% at 13% 27%)]
@ -184,30 +184,30 @@ Fail Web Animations: property <clip-path> from [ellipse(100% 100% at 0% 0%)] to
Fail Web Animations: property <clip-path> from [ellipse(100% 100% at 0% 0%)] to [ellipse(50% 50% at 25% 25%)] at (0.6) should be [ellipse(70% 70% at 15% 15%)]
Pass Web Animations: property <clip-path> from [ellipse(100% 100% at 0% 0%)] to [ellipse(50% 50% at 25% 25%)] at (1) should be [ellipse(50% 50% at 25% 25%)]
Fail Web Animations: property <clip-path> from [ellipse(100% 100% at 0% 0%)] to [ellipse(50% 50% at 25% 25%)] at (1.5) should be [ellipse(25% 25% at 37.5% 37.5%)]
Fail CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Fail CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Fail CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Fail CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1) should be [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)]
Fail CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Transitions: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1) should be [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Fail CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Fail CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Fail CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1) should be [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)]
Fail CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Fail Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass CSS Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)]
Fail Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Fail Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.6) should be [polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1) should be [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)]
Fail Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Pass Web Animations: property <clip-path> from [polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (1.5) should be [polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (-0.3) should be [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0) should be [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)] to [polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)] at (0.3) should be [polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)]

View file

@ -2,8 +2,8 @@ Harness status: OK
Found 720 tests
580 Pass
140 Fail
616 Pass
104 Fail
Pass CSS Transitions: property <clip-path> from neutral to [inset(20px)] at (-0.3) should be [inset(7px)]
Pass CSS Transitions: property <clip-path> from neutral to [inset(20px)] at (0) should be [inset(10px)]
Pass CSS Transitions: property <clip-path> from neutral to [inset(20px)] at (0.3) should be [inset(13px)]
@ -550,54 +550,54 @@ Fail Web Animations: property <clip-path> from [inset(1px 2px round 100px 200px)
Fail Web Animations: property <clip-path> from [inset(1px 2px round 100px 200px)] to [inset(101px 102px 101px 102px)] at (0.6) should be [inset(61px 62px round 40px 80px)]
Fail Web Animations: property <clip-path> from [inset(1px 2px round 100px 200px)] to [inset(101px 102px 101px 102px)] at (1) should be [inset(101px 102px)]
Fail Web Animations: property <clip-path> from [inset(1px 2px round 100px 200px)] to [inset(101px 102px 101px 102px)] at (1.5) should be [inset(151px 152px)]
Fail CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Fail CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Fail CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Fail CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1) should be [polygon(110px 120%, 130px 140%)]
Fail CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Transitions: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1) should be [polygon(110px 120%, 130px 140%)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Fail CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Fail CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Fail CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1) should be [polygon(110px 120%, 130px 140%)]
Fail CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Fail Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass CSS Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (-0.3) should be [polygon(-20px -10%, 0px 10%)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0) should be [polygon(10px 20%, 30px 40%)]
Fail Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Fail Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.3) should be [polygon(40px 50%, 60px 70%)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (0.6) should be [polygon(70px 80%, 90px 100%)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1) should be [polygon(110px 120%, 130px 140%)]
Fail Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Fail CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Fail CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Fail CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Fail CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass Web Animations: property <clip-path> from [polygon(10px 20%, 30px 40%)] to [polygon(110px 120%, 130px 140%)] at (1.5) should be [polygon(160px 170%, 180px 190%)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1) should be [polygon(evenodd, 110px 120px)]
Fail CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass CSS Transitions: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1) should be [polygon(evenodd, 110px 120px)]
Fail CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Fail CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass CSS Transitions with transition: all: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Fail CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Fail CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1) should be [polygon(evenodd, 110px 120px)]
Fail CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Fail Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass CSS Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (-0.3) should be [polygon(evenodd, -20px -10px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Fail Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Fail Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.3) should be [polygon(evenodd, 40px 50px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (0.6) should be [polygon(evenodd, 70px 80px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1) should be [polygon(evenodd, 110px 120px)]
Fail Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Pass Web Animations: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(evenodd, 110px 120px)] at (1.5) should be [polygon(evenodd, 160px 170px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(nonzero, 110px 120px)] at (-0.3) should be [polygon(evenodd, 10px 20px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(nonzero, 110px 120px)] at (0) should be [polygon(evenodd, 10px 20px)]
Pass CSS Transitions with transition-behavior:allow-discrete: property <clip-path> from [polygon(evenodd, 10px 20px)] to [polygon(nonzero, 110px 120px)] at (0.3) should be [polygon(evenodd, 10px 20px)]