Skip to content

Conversation

@ChrisC
Copy link
Contributor

@ChrisC ChrisC commented Oct 27, 2025

See commit messages for details on each web feature mapping commit.

(Note that the WebXR directories map almost one-to-one to web features so omitted detailed commit messages for those.)

ChrisC added 11 commits October 22, 2025 19:13
Feature: window-controls-overlay
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/window-controls-overlay.yml

Note: The `display_override: ["window-controls-overlay"]` web application manifest member enables progressive web apps to extend their content into the title bar area on desktop devices. This feature includes the Navigator.windowControlsOverlay API and CSS environment variables for titlebar area positioning.

Results:
- Total matches found: 54
- Filtered: 4 files

WEB_FEATURES.yml files created:
✅ appmanifest/display-override-member/WEB_FEATURES.yml - Display override tests (3 files) using '*window-controls-overlay*' pattern

WEB_FEATURES.yml files updated:
✅ html/webappapis/system-state-and-capabilities/the-navigator-object/WEB_FEATURES.yml - Navigator API test (1 file)

Excluded (6 files):
❌ css/mediaqueries/display-mode.tentative.html - Tests display-mode media query parsing, not WCO feature specifically (1 file)
Feature: window
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/window.yml

Note: The `window` global object represents a browser tab or iframe and its relationship to the document and other tabs. This feature includes Window object properties (name, length, closed, opener, parent, top, self), methods (open, close, focus, blur), BarProp objects, size properties, named/indexed access, and WindowProxy behavior.

Results:
- Total files found: 117
- Filtered: 97 files

WEB_FEATURES.yml files created:
✅ html/browsers/the-window-object/WEB_FEATURES.yml - Window object root-level tests using '*' pattern
✅ html/browsers/the-window-object/accessing-other-browsing-contexts/WEB_FEATURES.yml - Tests for window.length and window[n] indexed access (11 files) using '**' pattern
✅ html/browsers/the-window-object/named-access-on-the-window-object/WEB_FEATURES.yml - Tests for window.namedElement access (16 files) using '**' pattern
✅ html/browsers/the-window-object/open-close/WEB_FEATURES.yml - Tests for window.open() and window.close() methods (37 files) using '**' pattern
✅ html/browsers/the-window-object/security-window/WEB_FEATURES.yml - Tests for cross-origin Window property access (1 file) using '**' pattern

Excluded (20 files):
❌ html/browsers/the-window-object/garbage-collection-and-browsing-contexts/ - Tests browsing context garbage collection and lifecycle, not Window API (20 files)
Feature: will-change
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/will-change.yml

Note: The `will-change` CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style, enabling performance optimization for upcoming style changes.

Results:
- Total matches found: 238
- Filtered: 53 files

WEB_FEATURES.yml files created:
✅ css/css-will-change/WEB_FEATURES.yml - Will-change root-level tests (53 files) using '**' pattern

Excluded (0 files):
All tests in the css/css-will-change/ directory are dedicated to testing the will-change property.
Feature: width-height
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/width-height.yml

Note: The `width` and `height` CSS properties establish the preferred physical dimensions of an element. This classification includes tests for the auto value, percentage values, and property behavior across various contexts.

Search strategy: Searched for tests linking to "propdef-width", "propdef-height", "the-width-property", "the-height-property", and "preferred-size-properties".

Results:
- Total matches found: 431
- Filtered: 234 files

WEB_FEATURES.yml files created:
✅ css/CSS2/normal-flow/WEB_FEATURES.yml - CSS2.1 width/height tests (195 files)
✅ css/CSS2/css1/WEB_FEATURES.yml - CSS1 width/height tests (12 files)
✅ css/CSS2/positioning/WEB_FEATURES.yml - Absolute positioning width/height tests (4 files)
✅ css/CSS2/page-box/WEB_FEATURES.yml - Page container tests (4 files)
✅ css/CSS2/visudet/WEB_FEATURES.yml - Height percentage tests (3 files)
✅ css/CSS2/csswg-issues/submitted/css2.1/WEB_FEATURES.yml - Anonymous boxes test (1 file)
✅ css/css-sizing/WEB_FEATURES.yml - Percentage height test (1 file)
✅ css/css-sizing/animation/WEB_FEATURES.yml - Width/height animation tests (5 files)
✅ css/css-sizing/parsing/WEB_FEATURES.yml - Width/height parsing tests (4 files)
✅ css/css-box/parsing/WEB_FEATURES.yml - CSS Box 3 parsing tests (4 files)
✅ svg/geometry/parsing/WEB_FEATURES.yml - SVG sizing properties test (1 file)

Excluded (21 files):
- Float behavior (3 files): Primary focus is float shrink-to-fit, not width property
- Anonymous boxes/pagination (4 files): Primary focus is anonymous boxes/pagination behavior
- Run-in display (2 files): Primary focus is run-in display, not width/height properties
- Stretch keyword (2 files): Primary focus is stretch keyword
- Interpolate-size (4 files): Already mapped to interpolate-size feature
- Other features (4 files): Flexbox quirks, multicol, tables, calc() - width/height used incidentally
Feature: widows-orphans
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/widows-orphans.yml

Note: The `widows` and `orphans` CSS properties establish minimum line thresholds for text fragments that result from page, column, or region breaks. These properties help control how text breaks across pages or columns, preventing isolated lines from appearing alone at boundaries.

Search strategy: Searched for tests referencing "widows" and "orphans" properties.

Results:
- Total matches found: 288 unique files
- Filtered: 10 files

WEB_FEATURES.yml files created:
✅ css/CSS2/pagination/WEB_FEATURES.yml - CSS2.1 widows and orphans property tests (10 files)

Excluded (278 files):
- css/css-break/ (65 files): Already mapped to widows-orphans in existing WEB_FEATURES.yml with orphans-* and widows-* patterns
- css/css-multicol/ (112 files): Primary focus is multicol layout and column balancing, using widows/orphans incidentally
- css/CSS2/pagination/ (15 files): Other pagination tests (page-break-* properties), not widows/orphans
- css/css-flexbox/interactive/ (13 files): Primary focus is flexbox; sets widows:1/orphans:1 to prevent page breaks
- css/css-inline/text-box-trim/ (13 files): Primary focus is text-box-trim feature
- css/css-overflow/ (8 files): Overflow tests using these properties incidentally
- Crashtests (11 files): Incidental inclusion
- Other directories (41 files): Various tests using widows/orphans for layout control, not testing the properties themselves
Feature: white-space
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/white-space.yml

Note: The white-space CSS property controls how white space and line breaks inside an element are handled. It has six values: normal, nowrap, pre, pre-line, pre-wrap, and break-spaces. Also applies as a presentation attribute in SVG.

Search strategy: Searched for "white-space" property definition references in test files.

Results:
- Total matches found: 5,733 across 1,643 unique files
- Filtered: 514 files mapped

WEB_FEATURES.yml files created:
✅ [css/CSS2/text/WEB_FEATURES.yml](css/CSS2/text/WEB_FEATURES.yml) - CSS2 white-space tests (120 files)
✅ [css/css-text/white-space/WEB_FEATURES.yml](css/css-text/white-space/WEB_FEATURES.yml) - CSS Text white-space tests (391 files) - **UPDATED** existing file to add white-space feature alongside text-wrap-balance, text-wrap-nowrap, and white-space-collapse
✅ [svg/text/reftests/WEB_FEATURES.yml](svg/text/reftests/WEB_FEATURES.yml) - SVG multiline text with white-space tests (3 files)

Excluded (1,129 files):
- line-clamp tests (159 files): Primary focus on line-clamp feature
- Internationalization tests (113 files): Primary focus on i18n text rendering
- Table tests (73 files): Primary focus on table layout
- text-transform tests (69 files): Primary focus on text-transform feature
- Generated content (66 files): Primary focus on content property
- WebVTT subtitle rendering (44 files): Primary focus on subtitle display
- Other CSS2 text features (30 files): Tests for other text properties
- Already-mapped white-space features (6 files): text-wrap-balance, text-wrap-nowrap, white-space-collapse, line-edge-white-space-collapse
- SVG styling infrastructure (2 files): presentation-attributes.js and required-properties.svg test many properties
- Reference files and miscellaneous (567 files)
Feature: :where()
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/where.yml

Note: The :where() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity (zero specificity).

Search strategy: Searched for ":where" selector usage and "zero-matches" spec anchor references.

Results:
- Total matches found: 143 across 45 unique files
- Filtered: 18 files mapped

WEB_FEATURES.yml files created/updated:
✅ [css/selectors/WEB_FEATURES.yml](css/selectors/WEB_FEATURES.yml) - Root-level :where() tests (10 files) - **UPDATED**
✅ [css/selectors/invalidation/WEB_FEATURES.yml](css/selectors/invalidation/WEB_FEATURES.yml) - :where() invalidation tests (3 files) - **UPDATED**
✅ [css/selectors/parsing/WEB_FEATURES.yml](css/selectors/parsing/WEB_FEATURES.yml) - :where() parsing tests (2 files) - **UPDATED**
✅ [css/selectors/query/WEB_FEATURES.yml](css/selectors/query/WEB_FEATURES.yml) - :where() querySelector test (1 file) - **CREATED**
✅ [css/cssom/WEB_FEATURES.yml](css/cssom/WEB_FEATURES.yml) - :where() CSSOM crash test (1 file) - **UPDATED**

Excluded (27 files):
- @scope tests (7 files): Primary focus on @scope cascade behavior
- @supports tests (3 files): Primary focus on @supports selector() functionality
- Nesting tests (3 files): Primary focus on CSS nesting behavior
- Mixins tests (2 files): Primary focus on CSS mixins functionality
- :has() tests (3 files): Primary focus on :has() selector (parse-has-*, has-sibling-chrome-crash, invalidation test)
- :is() test (1 file): query-is.html is about :is(), not :where()
- :not() specificity test (1 file): Primary focus on :not() specificity behavior
- Scoping/shadow parts (2 files): Primary focus on ::slotted and ::part
- ::part parsing (1 file): Primary focus on ::part pseudo-element
- Container queries (1 file): Primary focus on container queries
- Scroll animations (1 file): Primary focus on scroll timeline animations
Feature: Wheel events
Reference: https://github.com/web-platform-dx/web-features/blob/main/features/wheel-events.yml

Note: The wheel event fires when the user moves a mouse wheel or similar spatially rotating input device. Includes the WheelEvent API with properties like deltaX, deltaY, deltaZ, and deltaMode.

Search strategy: Searched for "WheelEvent" API references, "wheel event" occurrences, and "deltaMode" property usage.

Results:
- Total matches found: 144 across 51 unique files
- Filtered: 39 files

WEB_FEATURES.yml files created/updated:
✅ [dom/events/WEB_FEATURES.yml](dom/events/WEB_FEATURES.yml) - Event constructors test (1 file) - **CREATED**
✅ [dom/events/non-cancelable-when-passive/WEB_FEATURES.yml](dom/events/non-cancelable-when-passive/WEB_FEATURES.yml) - Passive/non-passive wheel event listener tests (21 files) - **CREATED**
✅ [dom/events/scrolling/WEB_FEATURES.yml](dom/events/scrolling/WEB_FEATURES.yml) - Wheel event transaction tests (7 files) - **UPDATED**
✅ [uievents/WEB_FEATURES.yml](uievents/WEB_FEATURES.yml) - Historical and IDL harness tests (2 files) - **CREATED**
✅ [uievents/legacy-domevents-tests/submissions/Microsoft/WEB_FEATURES.yml](uievents/legacy-domevents-tests/submissions/Microsoft/WEB_FEATURES.yml) - Legacy WheelEvent tests (6 files) - **CREATED**
✅ [uievents/order-of-events/mouse-events/WEB_FEATURES.yml](uievents/order-of-events/mouse-events/WEB_FEATURES.yml) - Wheel event ordering tests (2 files) - **CREATED**

Excluded (12 files):
- CSS scroll tests (3 files): css/css-overscroll-behavior, css/css-scroll-snap - Primary focus on CSS scrolling features
- Cross-origin iframe test (1 file): Primary focus on cross-origin iframe scrolling behavior
- Generic event tests (3 files): Event-timestamp-high-resolution, Document-createEvent, hasFeature - Test many event types, not wheel events specifically
- Pointer events test (1 file): Primary focus on pointer events, not wheel events
- SVG event attributes test (1 file): Primary focus on event attributes in general
- Workers tests (2 files): Test interface object availability in workers (general infrastructure)
@foolip
Copy link
Member

foolip commented Nov 4, 2025

@ChrisC would you mind splitting out "maps width-height" into a separate PR? I think that one will be the most tricky to review, and it would be good to get everything else unblocked.

- text-wrap-nowrap-*
- name: white-space
files:
- append-whitespace-only-node-crash-001.html
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be simpler (more maintainable) to include "*" and exclude the things that shouldn't be mapped here? (It's a real question, I can't tell exactly what's being left out by these patterns, so I'm not sure.)

- user-valid.html
- name: where
files:
- is-where-*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also tests :is(), and it looks like most of the tests are for :is() and :where() together, which makes sense given the relationship between those features.

I think that for now it's best to treat mapping of :is() and :where() as out of scope, we'd need some way to isolate subtests for it to be practical. And having just a handful of the non-combined tests for :is() and :where() would be misleading I think.

features:
- name: wheel-events
files:
- Event-subclasses-constructors.html
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This tests many other events as well and can't be mapped to any feature.

- non-passive-wheel-event-listener-*
- passive-mousewheel-event-listener-*
- passive-wheel-event-listener-*
- synthetic-events-cancelable.html
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This test is for other events as well and can't be mapped to any feature.

features:
- name: white-space
files:
- text-multiline-*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed that this is right despite the filenames not being close, the tests are for https://svgwg.org/svg2-draft/text.html#TextLayoutPreMultiline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants