mirror of
https://github.com/zebrajr/ladybird.git
synced 2025-12-06 12:20:00 +01:00
LibWeb/CSS: Implement CSSTransformValue
This is the final CSSStyleValue class used by the per-property test harness, so those now actually run instead of throwing an exception on load. 🎉 +39 WPT subtests. (Plus however many from the per-property tests finally running.) The two failing serialization tests are also failed by Safari in exactly the same way, so that seems more like a spec issue. (The spec is incomplete in quite a few places.) The failing subtest for toMatrix() is also a spec issue: is2D is handled oddly by CSSMatrixComponent and this subtest fails because of the `matrix` getter, which is unspecified. See https://github.com/w3c/css-houdini-drafts/issues/1155 for details.
This commit is contained in:
parent
3269937e6d
commit
d5977b9f74
|
|
@ -150,6 +150,7 @@ set(SOURCES
|
|||
CSS/CSSStyleValue.cpp
|
||||
CSS/CSSSupportsRule.cpp
|
||||
CSS/CSSTransformComponent.cpp
|
||||
CSS/CSSTransformValue.cpp
|
||||
CSS/CSSTransition.cpp
|
||||
CSS/CSSTranslate.cpp
|
||||
CSS/CSSUnitValue.cpp
|
||||
|
|
|
|||
158
Libraries/LibWeb/CSS/CSSTransformValue.cpp
Normal file
158
Libraries/LibWeb/CSS/CSSTransformValue.cpp
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
/*
|
||||
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "CSSTransformValue.h"
|
||||
#include <LibWeb/Bindings/CSSTransformValuePrototype.h>
|
||||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/CSS/CSSTransformComponent.h>
|
||||
#include <LibWeb/Geometry/DOMMatrix.h>
|
||||
#include <LibWeb/WebIDL/ExceptionOr.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
GC_DEFINE_ALLOCATOR(CSSTransformValue);
|
||||
|
||||
GC::Ref<CSSTransformValue> CSSTransformValue::create(JS::Realm& realm, Vector<GC::Ref<CSSTransformComponent>> transforms)
|
||||
{
|
||||
return realm.create<CSSTransformValue>(realm, move(transforms));
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#dom-csstransformvalue-csstransformvalue
|
||||
WebIDL::ExceptionOr<GC::Ref<CSSTransformValue>> CSSTransformValue::construct_impl(JS::Realm& realm, GC::RootVector<GC::Root<CSSTransformComponent>> transforms)
|
||||
{
|
||||
// The CSSTransformValue(transforms) constructor must, when called, perform the following steps:
|
||||
|
||||
// 1. If transforms is empty, throw a TypeError.
|
||||
if (transforms.is_empty())
|
||||
return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "CSSTransformValue's transforms list cannot be empty."sv };
|
||||
|
||||
// 2. Return a new CSSTransformValue whose values to iterate over is transforms.
|
||||
Vector<GC::Ref<CSSTransformComponent>> converted_transforms;
|
||||
converted_transforms.ensure_capacity(transforms.size());
|
||||
for (auto const& transform : transforms)
|
||||
converted_transforms.append(*transform);
|
||||
return CSSTransformValue::create(realm, move(converted_transforms));
|
||||
}
|
||||
|
||||
CSSTransformValue::CSSTransformValue(JS::Realm& realm, Vector<GC::Ref<CSSTransformComponent>> transforms)
|
||||
: CSSStyleValue(realm)
|
||||
, m_transforms(move(transforms))
|
||||
{
|
||||
m_legacy_platform_object_flags = LegacyPlatformObjectFlags {
|
||||
.supports_indexed_properties = true,
|
||||
.has_indexed_property_setter = true,
|
||||
};
|
||||
}
|
||||
|
||||
CSSTransformValue::~CSSTransformValue() = default;
|
||||
|
||||
void CSSTransformValue::initialize(JS::Realm& realm)
|
||||
{
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSTransformValue);
|
||||
Base::initialize(realm);
|
||||
}
|
||||
|
||||
void CSSTransformValue::visit_edges(Visitor& visitor)
|
||||
{
|
||||
Base::visit_edges(visitor);
|
||||
visitor.visit(m_transforms);
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#dom-csstransformvalue-length
|
||||
WebIDL::UnsignedLong CSSTransformValue::length() const
|
||||
{
|
||||
// The length attribute indicates how many transform components are contained within the CSSTransformValue.
|
||||
return m_transforms.size();
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#ref-for-dfn-determine-the-value-of-an-indexed-property%E2%91%A0
|
||||
Optional<JS::Value> CSSTransformValue::item_value(size_t index) const
|
||||
{
|
||||
// To determine the value of an indexed property of a CSSTransformValue this and an index n, let values be this’s
|
||||
// [[values]] internal slot, and return values[n].
|
||||
if (index >= m_transforms.size())
|
||||
return {};
|
||||
return m_transforms[index];
|
||||
}
|
||||
|
||||
static WebIDL::ExceptionOr<GC::Ref<CSSTransformComponent>> transform_component_from_js_value(JS::Value& value)
|
||||
{
|
||||
if (value.is_object()) {
|
||||
if (auto* transform_component = as_if<CSSTransformComponent>(value.as_object()))
|
||||
return GC::Ref { *transform_component };
|
||||
}
|
||||
return WebIDL::SimpleException { WebIDL::SimpleExceptionType::TypeError, "Value must be a CSSTransformComponent"sv };
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#ref-for-dfn-set-the-value-of-an-existing-indexed-property%E2%91%A0
|
||||
WebIDL::ExceptionOr<void> CSSTransformValue::set_value_of_existing_indexed_property(u32 n, JS::Value new_value)
|
||||
{
|
||||
// To set the value of an existing indexed property of a CSSTransformValue this, an index n, and a value new value,
|
||||
// let values be this’s [[values]] internal slot, and set values[n] to new value.
|
||||
m_transforms[n] = TRY(transform_component_from_js_value(new_value));
|
||||
return {};
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#ref-for-dfn-set-the-value-of-a-new-indexed-property①
|
||||
WebIDL::ExceptionOr<void> CSSTransformValue::set_value_of_new_indexed_property(u32 n, JS::Value new_value)
|
||||
{
|
||||
// To set the value of a new indexed property of a CSSTransformValue this, an index n, and a value new value, let
|
||||
// values be this’s [[values]] internal slot. If n is not equal to the size of values, throw a RangeError.
|
||||
// Otherwise, append new value to values.
|
||||
if (n != m_transforms.size())
|
||||
return WebIDL::SimpleException { WebIDL::SimpleExceptionType::RangeError, "Index out of range"sv };
|
||||
|
||||
m_transforms.append(TRY(transform_component_from_js_value(new_value)));
|
||||
return {};
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#dom-csstransformvalue-is2d
|
||||
bool CSSTransformValue::is_2d() const
|
||||
{
|
||||
// The is2D attribute of a CSSTransformValue this must, on getting, return true if, for each func in this’s values
|
||||
// to iterate over, the func’s is2D attribute would return true; otherwise, the attribute returns false.
|
||||
return all_of(m_transforms, [](auto& transform) { return transform->is_2d(); });
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#dom-csstransformvalue-tomatrix
|
||||
WebIDL::ExceptionOr<GC::Ref<Geometry::DOMMatrix>> CSSTransformValue::to_matrix() const
|
||||
{
|
||||
// The toMatrix() method of a CSSTransformValue this must, when called, perform the following steps:
|
||||
|
||||
// 1. Let matrix be a new DOMMatrix, initialized to the identity matrix, with its is2D internal slot set to true.
|
||||
auto matrix = Geometry::DOMMatrix::create(realm());
|
||||
|
||||
// 2. For each func in this’s values to iterate over:
|
||||
for (auto const& function : m_transforms) {
|
||||
// 1. Let funcMatrix be the DOMMatrix returned by calling toMatrix() on func.
|
||||
// AD-HOC: This can throw exceptions.
|
||||
auto function_matrix = TRY(function->to_matrix());
|
||||
|
||||
// 2. Set matrix to the result of multiplying matrix and the matrix represented by funcMatrix.
|
||||
TRY(matrix->multiply_self(*function_matrix));
|
||||
}
|
||||
|
||||
// 3. Return matrix.
|
||||
return matrix;
|
||||
}
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#serialize-a-csstransformvalue
|
||||
WebIDL::ExceptionOr<String> CSSTransformValue::to_string() const
|
||||
{
|
||||
// 1. Return the result of serializing each item in this’s values to iterate over, then concatenating them
|
||||
// separated by " ".
|
||||
StringBuilder builder;
|
||||
bool first = true;
|
||||
for (auto const& transform : m_transforms) {
|
||||
if (!first)
|
||||
builder.append(" "sv);
|
||||
first = false;
|
||||
builder.append(TRY(transform->to_string()));
|
||||
}
|
||||
return builder.to_string_without_validation();
|
||||
}
|
||||
|
||||
}
|
||||
44
Libraries/LibWeb/CSS/CSSTransformValue.h
Normal file
44
Libraries/LibWeb/CSS/CSSTransformValue.h
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/CSS/CSSStyleValue.h>
|
||||
#include <LibWeb/WebIDL/Types.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#csstransformvalue
|
||||
class CSSTransformValue final : public CSSStyleValue {
|
||||
WEB_PLATFORM_OBJECT(CSSTransformValue, CSSStyleValue);
|
||||
GC_DECLARE_ALLOCATOR(CSSTransformValue);
|
||||
|
||||
public:
|
||||
[[nodiscard]] static GC::Ref<CSSTransformValue> create(JS::Realm&, Vector<GC::Ref<CSSTransformComponent>>);
|
||||
static WebIDL::ExceptionOr<GC::Ref<CSSTransformValue>> construct_impl(JS::Realm&, GC::RootVector<GC::Root<CSSTransformComponent>>);
|
||||
|
||||
virtual ~CSSTransformValue() override;
|
||||
|
||||
WebIDL::UnsignedLong length() const;
|
||||
virtual Optional<JS::Value> item_value(size_t index) const override;
|
||||
virtual WebIDL::ExceptionOr<void> set_value_of_existing_indexed_property(u32, JS::Value) override;
|
||||
virtual WebIDL::ExceptionOr<void> set_value_of_new_indexed_property(u32, JS::Value) override;
|
||||
|
||||
bool is_2d() const;
|
||||
WebIDL::ExceptionOr<GC::Ref<Geometry::DOMMatrix>> to_matrix() const;
|
||||
|
||||
virtual WebIDL::ExceptionOr<String> to_string() const override;
|
||||
|
||||
private:
|
||||
explicit CSSTransformValue(JS::Realm&, Vector<GC::Ref<CSSTransformComponent>>);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
virtual void visit_edges(Visitor&) override;
|
||||
|
||||
Vector<GC::Ref<CSSTransformComponent>> m_transforms;
|
||||
};
|
||||
|
||||
}
|
||||
16
Libraries/LibWeb/CSS/CSSTransformValue.idl
Normal file
16
Libraries/LibWeb/CSS/CSSTransformValue.idl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#import <CSS/CSSStyleValue.idl>
|
||||
#import <CSS/CSSTransformComponent.idl>
|
||||
#import <Geometry/DOMMatrix.idl>
|
||||
|
||||
// https://drafts.css-houdini.org/css-typed-om-1/#csstransformvalue
|
||||
[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]
|
||||
interface CSSTransformValue : CSSStyleValue {
|
||||
constructor(sequence<CSSTransformComponent> transforms);
|
||||
iterable<CSSTransformComponent>;
|
||||
readonly attribute unsigned long length;
|
||||
getter CSSTransformComponent (unsigned long index);
|
||||
setter undefined (unsigned long index, CSSTransformComponent val);
|
||||
|
||||
[ImplementedAs=is_2d] readonly attribute boolean is2D;
|
||||
DOMMatrix toMatrix();
|
||||
};
|
||||
|
|
@ -275,6 +275,7 @@ class CSSStyleSheet;
|
|||
class CSSStyleValue;
|
||||
class CSSSupportsRule;
|
||||
class CSSTransformComponent;
|
||||
class CSSTransformValue;
|
||||
class CSSTranslate;
|
||||
class CSSUnitValue;
|
||||
class CSSUnparsedValue;
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ libweb_js_bindings(CSS/CSSStyleSheet)
|
|||
libweb_js_bindings(CSS/CSSStyleValue)
|
||||
libweb_js_bindings(CSS/CSSSupportsRule)
|
||||
libweb_js_bindings(CSS/CSSTransformComponent)
|
||||
libweb_js_bindings(CSS/CSSTransformValue)
|
||||
libweb_js_bindings(CSS/CSSTransition)
|
||||
libweb_js_bindings(CSS/CSSTranslate)
|
||||
libweb_js_bindings(CSS/CSSUnitValue)
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ CSSStyleSheet
|
|||
CSSStyleValue
|
||||
CSSSupportsRule
|
||||
CSSTransformComponent
|
||||
CSSTransformValue
|
||||
CSSTransition
|
||||
CSSTranslate
|
||||
CSSUnitValue
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ Harness status: OK
|
|||
|
||||
Found 545 tests
|
||||
|
||||
360 Pass
|
||||
185 Fail
|
||||
370 Pass
|
||||
175 Fail
|
||||
Pass idl_test setup
|
||||
Pass idl_test validation
|
||||
Pass Partial interface Element: original interface defined
|
||||
|
|
@ -248,16 +248,16 @@ Pass CSSNumericArray interface: existence and properties of interface prototype
|
|||
Pass CSSNumericArray interface: existence and properties of interface prototype object's @@unscopables property
|
||||
Pass CSSNumericArray interface: iterable<CSSNumericValue>
|
||||
Pass CSSNumericArray interface: attribute length
|
||||
Fail CSSTransformValue interface: existence and properties of interface object
|
||||
Fail CSSTransformValue interface object length
|
||||
Fail CSSTransformValue interface object name
|
||||
Fail CSSTransformValue interface: existence and properties of interface prototype object
|
||||
Fail CSSTransformValue interface: existence and properties of interface prototype object's "constructor" property
|
||||
Fail CSSTransformValue interface: existence and properties of interface prototype object's @@unscopables property
|
||||
Fail CSSTransformValue interface: iterable<CSSTransformComponent>
|
||||
Fail CSSTransformValue interface: attribute length
|
||||
Fail CSSTransformValue interface: attribute is2D
|
||||
Fail CSSTransformValue interface: operation toMatrix()
|
||||
Pass CSSTransformValue interface: existence and properties of interface object
|
||||
Pass CSSTransformValue interface object length
|
||||
Pass CSSTransformValue interface object name
|
||||
Pass CSSTransformValue interface: existence and properties of interface prototype object
|
||||
Pass CSSTransformValue interface: existence and properties of interface prototype object's "constructor" property
|
||||
Pass CSSTransformValue interface: existence and properties of interface prototype object's @@unscopables property
|
||||
Pass CSSTransformValue interface: iterable<CSSTransformComponent>
|
||||
Pass CSSTransformValue interface: attribute length
|
||||
Pass CSSTransformValue interface: attribute is2D
|
||||
Pass CSSTransformValue interface: operation toMatrix()
|
||||
Fail CSSTransformValue must be primary interface of transformValue
|
||||
Fail Stringification of transformValue
|
||||
Fail CSSTransformValue interface: transformValue must inherit property "length" with the proper type
|
||||
|
|
|
|||
|
|
@ -1,3 +1,28 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 22 tests
|
||||
|
||||
20 Pass
|
||||
2 Fail
|
||||
Pass CSSTranslate with 2 arguments serializes correctly
|
||||
Pass CSSTranslate with 3 arguments serializes correctly
|
||||
Pass CSSScale with 2 arguments serializes correctly
|
||||
Pass CSSScale with 3 arguments serializes correctly
|
||||
Pass CSSRotate with 1 argument serializes correctly
|
||||
Pass CSSRotate with 4 arguments serializes correctly
|
||||
Pass CSSSkew serializes correctly
|
||||
Pass CSSSkew with Y which is 0 value serializes correctly
|
||||
Pass CSSSkewX serializes correctly
|
||||
Pass CSSSkewY serializes correctly
|
||||
Pass CSSPerspective serializes correctly
|
||||
Pass CSSPerspective with negative length serializes correctly
|
||||
Pass CSSPerspective with none as string serializes correctly
|
||||
Pass CSSPerspective with none as CSSKeyword serializes correctly
|
||||
Pass CSSTransformValue with a single transform serializes correctly
|
||||
Pass CSSTransformValue with multiple transforms serializes correctly
|
||||
Fail CSSTransformValue containing CSSMathValues serializes correctly
|
||||
Pass CSSMathInvert with 0 parameter serializes correctly
|
||||
Fail CSSMathInvert with 0 parameter and nested serializes correctly
|
||||
Pass CSSMatrixComponent with 6 elements serializes correctly
|
||||
Pass CSSMatrixComponent with 16 elements serializes correctly
|
||||
Pass CSSTransformValue with updated is2D serializes as 2D transforms
|
||||
|
|
@ -2,6 +2,7 @@ Harness status: OK
|
|||
|
||||
Found 2 tests
|
||||
|
||||
2 Fail
|
||||
Fail CSSTransformValue.toMatrix() multiplies its component matrices
|
||||
1 Pass
|
||||
1 Fail
|
||||
Pass CSSTransformValue.toMatrix() multiplies its component matrices
|
||||
Fail CSSTransformValue.toMatrix() respects is2D changes in its components
|
||||
|
|
@ -2,12 +2,12 @@ Harness status: OK
|
|||
|
||||
Found 8 tests
|
||||
|
||||
8 Fail
|
||||
Fail Constructing a CSSTransformValue with no components throws TypeError
|
||||
Fail CSSTransformValue can be constructed with multiple transforms
|
||||
Fail CSSTransformValue.set correctly sets the CSSTransformComponent at the given index
|
||||
Fail Setting a component in CSSTransformValue correctly appends the CSSTransformComponent if index specified is greater than length
|
||||
Fail CSSTransformValue.is2D is false when given mix of 2D and 3D transforms
|
||||
Fail CSSTransformValue.is2D is true when given only 2D transforms
|
||||
Fail CSSTransformValue.is2D is readonly
|
||||
Fail Can iterate through CSSTransformValue components
|
||||
8 Pass
|
||||
Pass Constructing a CSSTransformValue with no components throws TypeError
|
||||
Pass CSSTransformValue can be constructed with multiple transforms
|
||||
Pass CSSTransformValue.set correctly sets the CSSTransformComponent at the given index
|
||||
Pass Setting a component in CSSTransformValue correctly appends the CSSTransformComponent if index specified is greater than length
|
||||
Pass CSSTransformValue.is2D is false when given mix of 2D and 3D transforms
|
||||
Pass CSSTransformValue.is2D is true when given only 2D transforms
|
||||
Pass CSSTransformValue.is2D is readonly
|
||||
Pass Can iterate through CSSTransformValue components
|
||||
|
|
@ -1,3 +1,42 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 37 tests
|
||||
|
||||
37 Fail
|
||||
Fail Can set 'color' to CSS-wide keywords: initial
|
||||
Fail Can set 'color' to CSS-wide keywords: inherit
|
||||
Fail Can set 'color' to CSS-wide keywords: unset
|
||||
Fail Can set 'color' to CSS-wide keywords: revert
|
||||
Fail Can set 'color' to var() references: var(--A)
|
||||
Fail Can set 'color' to the 'currentcolor' keyword: currentcolor
|
||||
Fail Setting 'color' to a length: 0px throws TypeError
|
||||
Fail Setting 'color' to a length: -3.14em throws TypeError
|
||||
Fail Setting 'color' to a length: 3.14cm throws TypeError
|
||||
Fail Setting 'color' to a length: calc(0px + 0em) throws TypeError
|
||||
Fail Setting 'color' to a percent: 0% throws TypeError
|
||||
Fail Setting 'color' to a percent: -3.14% throws TypeError
|
||||
Fail Setting 'color' to a percent: 3.14% throws TypeError
|
||||
Fail Setting 'color' to a percent: calc(0% + 0%) throws TypeError
|
||||
Fail Setting 'color' to a time: 0s throws TypeError
|
||||
Fail Setting 'color' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'color' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'color' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'color' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'color' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'color' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'color' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'color' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'color' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'color' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'color' to a number: 0 throws TypeError
|
||||
Fail Setting 'color' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'color' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'color' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'color' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'color' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'color' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail 'color' does not support 'red'
|
||||
Fail 'color' does not support '#bbff00'
|
||||
Fail 'color' does not support 'rgb(255, 255, 128)'
|
||||
Fail 'color' does not support 'hsl(50, 33%, 25%)'
|
||||
Fail 'color' does not support 'transparent'
|
||||
|
|
@ -1,3 +1,74 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 69 tests
|
||||
|
||||
69 Fail
|
||||
Fail Can set 'cursor' to CSS-wide keywords: initial
|
||||
Fail Can set 'cursor' to CSS-wide keywords: inherit
|
||||
Fail Can set 'cursor' to CSS-wide keywords: unset
|
||||
Fail Can set 'cursor' to CSS-wide keywords: revert
|
||||
Fail Can set 'cursor' to var() references: var(--A)
|
||||
Fail Can set 'cursor' to the 'auto' keyword: auto
|
||||
Fail Can set 'cursor' to the 'default' keyword: default
|
||||
Fail Can set 'cursor' to the 'none' keyword: none
|
||||
Fail Can set 'cursor' to the 'context-menu' keyword: context-menu
|
||||
Fail Can set 'cursor' to the 'help' keyword: help
|
||||
Fail Can set 'cursor' to the 'pointer' keyword: pointer
|
||||
Fail Can set 'cursor' to the 'progress' keyword: progress
|
||||
Fail Can set 'cursor' to the 'wait' keyword: wait
|
||||
Fail Can set 'cursor' to the 'cell' keyword: cell
|
||||
Fail Can set 'cursor' to the 'crosshair' keyword: crosshair
|
||||
Fail Can set 'cursor' to the 'text' keyword: text
|
||||
Fail Can set 'cursor' to the 'vertical-text' keyword: vertical-text
|
||||
Fail Can set 'cursor' to the 'alias' keyword: alias
|
||||
Fail Can set 'cursor' to the 'copy' keyword: copy
|
||||
Fail Can set 'cursor' to the 'move' keyword: move
|
||||
Fail Can set 'cursor' to the 'no-drop' keyword: no-drop
|
||||
Fail Can set 'cursor' to the 'not-allowed' keyword: not-allowed
|
||||
Fail Can set 'cursor' to the 'grab' keyword: grab
|
||||
Fail Can set 'cursor' to the 'grabbing' keyword: grabbing
|
||||
Fail Can set 'cursor' to the 'e-resize' keyword: e-resize
|
||||
Fail Can set 'cursor' to the 'n-resize' keyword: n-resize
|
||||
Fail Can set 'cursor' to the 'ne-resize' keyword: ne-resize
|
||||
Fail Can set 'cursor' to the 'nw-resize' keyword: nw-resize
|
||||
Fail Can set 'cursor' to the 's-resize' keyword: s-resize
|
||||
Fail Can set 'cursor' to the 'se-resize' keyword: se-resize
|
||||
Fail Can set 'cursor' to the 'sw-resize' keyword: sw-resize
|
||||
Fail Can set 'cursor' to the 'w-resize' keyword: w-resize
|
||||
Fail Can set 'cursor' to the 'ew-resize' keyword: ew-resize
|
||||
Fail Can set 'cursor' to the 'ns-resize' keyword: ns-resize
|
||||
Fail Can set 'cursor' to the 'nesw-resize' keyword: nesw-resize
|
||||
Fail Can set 'cursor' to the 'nwse-resize' keyword: nwse-resize
|
||||
Fail Can set 'cursor' to the 'col-resize' keyword: col-resize
|
||||
Fail Can set 'cursor' to the 'row-resize' keyword: row-resize
|
||||
Fail Can set 'cursor' to the 'all-scroll' keyword: all-scroll
|
||||
Fail Can set 'cursor' to the 'zoom-in' keyword: zoom-in
|
||||
Fail Can set 'cursor' to the 'zoom-out' keyword: zoom-out
|
||||
Fail Setting 'cursor' to a length: 0px throws TypeError
|
||||
Fail Setting 'cursor' to a length: -3.14em throws TypeError
|
||||
Fail Setting 'cursor' to a length: 3.14cm throws TypeError
|
||||
Fail Setting 'cursor' to a length: calc(0px + 0em) throws TypeError
|
||||
Fail Setting 'cursor' to a percent: 0% throws TypeError
|
||||
Fail Setting 'cursor' to a percent: -3.14% throws TypeError
|
||||
Fail Setting 'cursor' to a percent: 3.14% throws TypeError
|
||||
Fail Setting 'cursor' to a percent: calc(0% + 0%) throws TypeError
|
||||
Fail Setting 'cursor' to a time: 0s throws TypeError
|
||||
Fail Setting 'cursor' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'cursor' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'cursor' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'cursor' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'cursor' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'cursor' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'cursor' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'cursor' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'cursor' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'cursor' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'cursor' to a number: 0 throws TypeError
|
||||
Fail Setting 'cursor' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'cursor' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'cursor' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'cursor' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'cursor' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'cursor' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail 'cursor' does not support 'url(hand.cur), pointer'
|
||||
Fail 'cursor' does not support 'url(cursor1.png) 4 12, auto'
|
||||
|
|
@ -1,3 +1,62 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 56 tests
|
||||
|
||||
2 Pass
|
||||
54 Fail
|
||||
Fail Can set 'display' to CSS-wide keywords: initial
|
||||
Fail Can set 'display' to CSS-wide keywords: inherit
|
||||
Fail Can set 'display' to CSS-wide keywords: unset
|
||||
Fail Can set 'display' to CSS-wide keywords: revert
|
||||
Fail Can set 'display' to var() references: var(--A)
|
||||
Fail Can set 'display' to the 'none' keyword: none
|
||||
Fail Can set 'display' to the 'block' keyword: block
|
||||
Fail Can set 'display' to the 'inline' keyword: inline
|
||||
Fail Can set 'display' to the 'flow-root' keyword: flow-root
|
||||
Fail Can set 'display' to the 'table' keyword: table
|
||||
Fail Can set 'display' to the 'flex' keyword: flex
|
||||
Fail Can set 'display' to the 'grid' keyword: grid
|
||||
Fail Can set 'display' to the 'list-item' keyword: list-item
|
||||
Fail Can set 'display' to the 'table-row-group' keyword: table-row-group
|
||||
Fail Can set 'display' to the 'table-header-group' keyword: table-header-group
|
||||
Fail Can set 'display' to the 'table-footer-group' keyword: table-footer-group
|
||||
Fail Can set 'display' to the 'table-row' keyword: table-row
|
||||
Fail Can set 'display' to the 'table-cell' keyword: table-cell
|
||||
Fail Can set 'display' to the 'table-column-group' keyword: table-column-group
|
||||
Fail Can set 'display' to the 'table-column' keyword: table-column
|
||||
Fail Can set 'display' to the 'table-caption' keyword: table-caption
|
||||
Fail Can set 'display' to the 'contents' keyword: contents
|
||||
Fail Can set 'display' to the 'inline-block' keyword: inline-block
|
||||
Fail Can set 'display' to the 'inline-table' keyword: inline-table
|
||||
Fail Can set 'display' to the 'inline-flex' keyword: inline-flex
|
||||
Fail Can set 'display' to the 'inline-grid' keyword: inline-grid
|
||||
Fail Setting 'display' to a length: 0px throws TypeError
|
||||
Fail Setting 'display' to a length: -3.14em throws TypeError
|
||||
Fail Setting 'display' to a length: 3.14cm throws TypeError
|
||||
Fail Setting 'display' to a length: calc(0px + 0em) throws TypeError
|
||||
Fail Setting 'display' to a percent: 0% throws TypeError
|
||||
Fail Setting 'display' to a percent: -3.14% throws TypeError
|
||||
Fail Setting 'display' to a percent: 3.14% throws TypeError
|
||||
Fail Setting 'display' to a percent: calc(0% + 0%) throws TypeError
|
||||
Fail Setting 'display' to a time: 0s throws TypeError
|
||||
Fail Setting 'display' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'display' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'display' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'display' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'display' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'display' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'display' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'display' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'display' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'display' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'display' to a number: 0 throws TypeError
|
||||
Fail Setting 'display' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'display' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'display' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'display' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'display' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'display' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Pass 'display' does not support setting 'inline math'
|
||||
Pass 'display' does not support setting 'math inline'
|
||||
Fail 'display' does not support 'block math'
|
||||
Fail 'display' does not support 'math block'
|
||||
|
|
@ -1,3 +1,10 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 5 tests
|
||||
|
||||
5 Fail
|
||||
Fail 'font' does not support '1.2em "Fira Sans", sans-serif'
|
||||
Fail 'font' does not support 'italic 1.2em "Fira Sans", serif'
|
||||
Fail 'font' does not support 'italic small-caps bold 16px/2 cursive'
|
||||
Fail 'font' does not support 'small-caps bold 24px/1 sans-serif'
|
||||
Fail 'font' does not support 'caption'
|
||||
|
|
@ -1,3 +1,129 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 124 tests
|
||||
|
||||
124 Fail
|
||||
Fail Can set 'padding-top' to CSS-wide keywords: initial
|
||||
Fail Can set 'padding-top' to CSS-wide keywords: inherit
|
||||
Fail Can set 'padding-top' to CSS-wide keywords: unset
|
||||
Fail Can set 'padding-top' to CSS-wide keywords: revert
|
||||
Fail Can set 'padding-top' to var() references: var(--A)
|
||||
Fail Can set 'padding-top' to a percent: 0%
|
||||
Fail Can set 'padding-top' to a percent: -3.14%
|
||||
Fail Can set 'padding-top' to a percent: 3.14%
|
||||
Fail Can set 'padding-top' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'padding-top' to a length: 0px
|
||||
Fail Can set 'padding-top' to a length: -3.14em
|
||||
Fail Can set 'padding-top' to a length: 3.14cm
|
||||
Fail Can set 'padding-top' to a length: calc(0px + 0em)
|
||||
Fail Setting 'padding-top' to a time: 0s throws TypeError
|
||||
Fail Setting 'padding-top' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'padding-top' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'padding-top' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'padding-top' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'padding-top' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'padding-top' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'padding-top' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'padding-top' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'padding-top' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'padding-top' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'padding-top' to a number: 0 throws TypeError
|
||||
Fail Setting 'padding-top' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'padding-top' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'padding-top' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'padding-top' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'padding-top' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'padding-top' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail Can set 'padding-left' to CSS-wide keywords: initial
|
||||
Fail Can set 'padding-left' to CSS-wide keywords: inherit
|
||||
Fail Can set 'padding-left' to CSS-wide keywords: unset
|
||||
Fail Can set 'padding-left' to CSS-wide keywords: revert
|
||||
Fail Can set 'padding-left' to var() references: var(--A)
|
||||
Fail Can set 'padding-left' to a percent: 0%
|
||||
Fail Can set 'padding-left' to a percent: -3.14%
|
||||
Fail Can set 'padding-left' to a percent: 3.14%
|
||||
Fail Can set 'padding-left' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'padding-left' to a length: 0px
|
||||
Fail Can set 'padding-left' to a length: -3.14em
|
||||
Fail Can set 'padding-left' to a length: 3.14cm
|
||||
Fail Can set 'padding-left' to a length: calc(0px + 0em)
|
||||
Fail Setting 'padding-left' to a time: 0s throws TypeError
|
||||
Fail Setting 'padding-left' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'padding-left' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'padding-left' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'padding-left' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'padding-left' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'padding-left' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'padding-left' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'padding-left' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'padding-left' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'padding-left' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'padding-left' to a number: 0 throws TypeError
|
||||
Fail Setting 'padding-left' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'padding-left' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'padding-left' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'padding-left' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'padding-left' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'padding-left' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail Can set 'padding-right' to CSS-wide keywords: initial
|
||||
Fail Can set 'padding-right' to CSS-wide keywords: inherit
|
||||
Fail Can set 'padding-right' to CSS-wide keywords: unset
|
||||
Fail Can set 'padding-right' to CSS-wide keywords: revert
|
||||
Fail Can set 'padding-right' to var() references: var(--A)
|
||||
Fail Can set 'padding-right' to a percent: 0%
|
||||
Fail Can set 'padding-right' to a percent: -3.14%
|
||||
Fail Can set 'padding-right' to a percent: 3.14%
|
||||
Fail Can set 'padding-right' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'padding-right' to a length: 0px
|
||||
Fail Can set 'padding-right' to a length: -3.14em
|
||||
Fail Can set 'padding-right' to a length: 3.14cm
|
||||
Fail Can set 'padding-right' to a length: calc(0px + 0em)
|
||||
Fail Setting 'padding-right' to a time: 0s throws TypeError
|
||||
Fail Setting 'padding-right' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'padding-right' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'padding-right' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'padding-right' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'padding-right' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'padding-right' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'padding-right' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'padding-right' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'padding-right' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'padding-right' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'padding-right' to a number: 0 throws TypeError
|
||||
Fail Setting 'padding-right' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'padding-right' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'padding-right' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'padding-right' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'padding-right' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'padding-right' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail Can set 'padding-bottom' to CSS-wide keywords: initial
|
||||
Fail Can set 'padding-bottom' to CSS-wide keywords: inherit
|
||||
Fail Can set 'padding-bottom' to CSS-wide keywords: unset
|
||||
Fail Can set 'padding-bottom' to CSS-wide keywords: revert
|
||||
Fail Can set 'padding-bottom' to var() references: var(--A)
|
||||
Fail Can set 'padding-bottom' to a percent: 0%
|
||||
Fail Can set 'padding-bottom' to a percent: -3.14%
|
||||
Fail Can set 'padding-bottom' to a percent: 3.14%
|
||||
Fail Can set 'padding-bottom' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'padding-bottom' to a length: 0px
|
||||
Fail Can set 'padding-bottom' to a length: -3.14em
|
||||
Fail Can set 'padding-bottom' to a length: 3.14cm
|
||||
Fail Can set 'padding-bottom' to a length: calc(0px + 0em)
|
||||
Fail Setting 'padding-bottom' to a time: 0s throws TypeError
|
||||
Fail Setting 'padding-bottom' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'padding-bottom' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'padding-bottom' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'padding-bottom' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'padding-bottom' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'padding-bottom' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'padding-bottom' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'padding-bottom' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'padding-bottom' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'padding-bottom' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'padding-bottom' to a number: 0 throws TypeError
|
||||
Fail Setting 'padding-bottom' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'padding-bottom' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'padding-bottom' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'padding-bottom' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'padding-bottom' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'padding-bottom' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
|
|
@ -1,3 +1,38 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 33 tests
|
||||
|
||||
33 Fail
|
||||
Fail Can set 'transform' to CSS-wide keywords: initial
|
||||
Fail Can set 'transform' to CSS-wide keywords: inherit
|
||||
Fail Can set 'transform' to CSS-wide keywords: unset
|
||||
Fail Can set 'transform' to CSS-wide keywords: revert
|
||||
Fail Can set 'transform' to var() references: var(--A)
|
||||
Fail Can set 'transform' to the 'none' keyword: none
|
||||
Fail Can set 'transform' to a transform: translate(50%, 50%)
|
||||
Fail Can set 'transform' to a transform: perspective(10em)
|
||||
Fail Can set 'transform' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6)
|
||||
Fail Setting 'transform' to a length: 0px throws TypeError
|
||||
Fail Setting 'transform' to a length: -3.14em throws TypeError
|
||||
Fail Setting 'transform' to a length: 3.14cm throws TypeError
|
||||
Fail Setting 'transform' to a length: calc(0px + 0em) throws TypeError
|
||||
Fail Setting 'transform' to a percent: 0% throws TypeError
|
||||
Fail Setting 'transform' to a percent: -3.14% throws TypeError
|
||||
Fail Setting 'transform' to a percent: 3.14% throws TypeError
|
||||
Fail Setting 'transform' to a percent: calc(0% + 0%) throws TypeError
|
||||
Fail Setting 'transform' to a time: 0s throws TypeError
|
||||
Fail Setting 'transform' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'transform' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'transform' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'transform' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'transform' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'transform' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'transform' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'transform' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'transform' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'transform' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'transform' to a number: 0 throws TypeError
|
||||
Fail Setting 'transform' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'transform' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'transform' to a number: calc(2 + 3) throws TypeError
|
||||
Fail 'transform' does not support 'matrix(sibling-index(), 2, 3, 4, 5 ,6)'
|
||||
|
|
@ -1,3 +1,100 @@
|
|||
Harness status: Error
|
||||
Harness status: OK
|
||||
|
||||
Found 0 tests
|
||||
Found 95 tests
|
||||
|
||||
95 Fail
|
||||
Fail Can set 'width' to CSS-wide keywords: initial
|
||||
Fail Can set 'width' to CSS-wide keywords: inherit
|
||||
Fail Can set 'width' to CSS-wide keywords: unset
|
||||
Fail Can set 'width' to CSS-wide keywords: revert
|
||||
Fail Can set 'width' to var() references: var(--A)
|
||||
Fail Can set 'width' to the 'auto' keyword: auto
|
||||
Fail Can set 'width' to a percent: 0%
|
||||
Fail Can set 'width' to a percent: -3.14%
|
||||
Fail Can set 'width' to a percent: 3.14%
|
||||
Fail Can set 'width' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'width' to a length: 0px
|
||||
Fail Can set 'width' to a length: -3.14em
|
||||
Fail Can set 'width' to a length: 3.14cm
|
||||
Fail Can set 'width' to a length: calc(0px + 0em)
|
||||
Fail Setting 'width' to a time: 0s throws TypeError
|
||||
Fail Setting 'width' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'width' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'width' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'width' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'width' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'width' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'width' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'width' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'width' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'width' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'width' to a number: 0 throws TypeError
|
||||
Fail Setting 'width' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'width' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'width' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'width' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'width' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'width' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail Can set 'min-width' to CSS-wide keywords: initial
|
||||
Fail Can set 'min-width' to CSS-wide keywords: inherit
|
||||
Fail Can set 'min-width' to CSS-wide keywords: unset
|
||||
Fail Can set 'min-width' to CSS-wide keywords: revert
|
||||
Fail Can set 'min-width' to var() references: var(--A)
|
||||
Fail Can set 'min-width' to a percent: 0%
|
||||
Fail Can set 'min-width' to a percent: -3.14%
|
||||
Fail Can set 'min-width' to a percent: 3.14%
|
||||
Fail Can set 'min-width' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'min-width' to a length: 0px
|
||||
Fail Can set 'min-width' to a length: -3.14em
|
||||
Fail Can set 'min-width' to a length: 3.14cm
|
||||
Fail Can set 'min-width' to a length: calc(0px + 0em)
|
||||
Fail Setting 'min-width' to a time: 0s throws TypeError
|
||||
Fail Setting 'min-width' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'min-width' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'min-width' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'min-width' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'min-width' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'min-width' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'min-width' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'min-width' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'min-width' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'min-width' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'min-width' to a number: 0 throws TypeError
|
||||
Fail Setting 'min-width' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'min-width' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'min-width' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'min-width' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'min-width' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'min-width' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Fail Can set 'max-width' to CSS-wide keywords: initial
|
||||
Fail Can set 'max-width' to CSS-wide keywords: inherit
|
||||
Fail Can set 'max-width' to CSS-wide keywords: unset
|
||||
Fail Can set 'max-width' to CSS-wide keywords: revert
|
||||
Fail Can set 'max-width' to var() references: var(--A)
|
||||
Fail Can set 'max-width' to the 'none' keyword: none
|
||||
Fail Can set 'max-width' to a percent: 0%
|
||||
Fail Can set 'max-width' to a percent: -3.14%
|
||||
Fail Can set 'max-width' to a percent: 3.14%
|
||||
Fail Can set 'max-width' to a percent: calc(0% + 0%)
|
||||
Fail Can set 'max-width' to a length: 0px
|
||||
Fail Can set 'max-width' to a length: -3.14em
|
||||
Fail Can set 'max-width' to a length: 3.14cm
|
||||
Fail Can set 'max-width' to a length: calc(0px + 0em)
|
||||
Fail Setting 'max-width' to a time: 0s throws TypeError
|
||||
Fail Setting 'max-width' to a time: -3.14ms throws TypeError
|
||||
Fail Setting 'max-width' to a time: 3.14s throws TypeError
|
||||
Fail Setting 'max-width' to a time: calc(0s + 0ms) throws TypeError
|
||||
Fail Setting 'max-width' to an angle: 0deg throws TypeError
|
||||
Fail Setting 'max-width' to an angle: 3.14rad throws TypeError
|
||||
Fail Setting 'max-width' to an angle: -3.14deg throws TypeError
|
||||
Fail Setting 'max-width' to an angle: calc(0rad + 0deg) throws TypeError
|
||||
Fail Setting 'max-width' to a flexible length: 0fr throws TypeError
|
||||
Fail Setting 'max-width' to a flexible length: 1fr throws TypeError
|
||||
Fail Setting 'max-width' to a flexible length: -3.14fr throws TypeError
|
||||
Fail Setting 'max-width' to a number: 0 throws TypeError
|
||||
Fail Setting 'max-width' to a number: -3.14 throws TypeError
|
||||
Fail Setting 'max-width' to a number: 3.14 throws TypeError
|
||||
Fail Setting 'max-width' to a number: calc(2 + 3) throws TypeError
|
||||
Fail Setting 'max-width' to a transform: translate(50%, 50%) throws TypeError
|
||||
Fail Setting 'max-width' to a transform: perspective(10em) throws TypeError
|
||||
Fail Setting 'max-width' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
|
||||
Loading…
Reference in New Issue
Block a user