Repository navigation
--computed: list prefixed declarations only one side's CSS source has - #155
Merged
Merged
Conversation
Chromium's CSSOM serialises -webkit-user-select as user-select, so a lint autofix that drops a prefix Safari needs passes pixels and rule coverage alike. Read each load's stylesheet bodies as served and every <style>'s text, and print a prefixes: line next to rules: with the -webkit-/-moz-/ -ms-/-o- declarations one side has more of. Informational, like rules:. Refs #150 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… stripping A minifier rewrites values (0.3s to .3s), so a build upgrade read as left/right pairs that buried a dropped prefix; count each prefixed property's declarations per side and show a value only as context. A /* inside url() or a string no longer swallows the CSS after it, and a data URI's ; stays in its value. Sheets reset on every new main-frame document, not only at the job's load, and the prefix read runs beside rule coverage, each in its own timeout. The fixture gains an @import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 4, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #150
A Stylelint autofix that turns
-webkit-text-size-adjust,-webkit-background-clip: textand-webkit-user-selectinto their unprefixed forms passes a Chromium run on pixels and on--computed. Chromium honours both spellings, and its CSSOM serialises the prefixed name as the unprefixed one, so even rule coverage sees identical rules. Shooting in WebKit doesn't help either: measured on Playwright WebKit 26.5, none of the three changes a pixel, and desktop WebKit drops both spellings oftext-size-adjustwhen it parses them.So
--computednow also reads each side's CSS as written and compares the vendor-prefixed declarations.page.on("response")while it is still available, which covers cross-origin sheets the CSSOM can't read. Also the text of every<style>, open shadow roots included.-(webkit|moz|ms|o)-prop: valuedeclarations, with comments and whitespace normalised, ignoring which selector or file holds them. Minifying, reordering, moving a declaration between files or a new asset hash is no finding; one side holding an extra copy is.prefixes:block afterrules:, informational like it, never changing the exit code. Up to 10 declarations shown per side with(+N more).computed.prefixes: { left, right }per shot andsummary.prefixes({ side, declaration, at }).Not seen:
insertRule, adopted sheets,styleattributes, and prefixed selectors, media features or values. The docs say so.Tests
prefixfixture: one prefixed declaration in an inline<style>, one in a same-origin<link>, one in a cross-origin<link>(localhost vs 127.0.0.1, unreadable to the CSSOM). Chromium keeps pixel parity and lists all three.prefix-samefixture: the same set minified, reordered, moved between<style>and sheet, under a hashed file name. No finding.--computed: no prefix findings. Run by hand over the whole corpus (60 routes × 2 widths): none either.npm test, and the guardrails, computed, controls, equivalence and accepted visual files pass locally.🤖 Generated with Claude Code