Refuse a page that moves something the reader cannot stop [#87] - #154
Merged
Conversation
A reader who tells their system to reduce motion has told every page, and the answer belongs to them. The pages this site serves today carry the query that answers it. The pages this generator produces carry no stylesheet at all, so nothing has been dropped yet and nothing would notice on the day it is: the byte budget counts a page with no query as the smaller one, and every other row reads something a stylesheet is not. The table gains a row over the produced pages. A declaration that moves something is answered either by sitting inside a query asking for no preference, or by a query asking for reduce that switches the same property off. Both shapes are in what this project publishes today, and a row refusing the second would be one somebody takes out the first time they write a stylesheet. Motion written inside the reduce query is refused on its own, because it is one word from the repair and what a reader gets for asking is the motion. The row reads bytes and cannot resolve a selector, so a reduce query switching a property off answers for every declaration of that property as far as it can see. What it refuses is the page that never asks, which is what a generator produces when it renders a stylesheet somebody wrote without the query. A page that asks and misses one rule is for the legs that load it in a browser. The report is the other half and not a second topic. Nothing this build writes moves, so the row would have printed ok over pages carrying none of what it judges, and a green mark over an empty set reads as a set of pages that answer the reader. A row that counts what it judges prints what it read instead. Only such a row carries the counter: where the page itself is the subject, every page is one, and the file count already says so. This is the static half of the issue. Loading every page under an emulated request to reduce motion waits on the browser, and nothing here claims it. Signed-off-by: Nils Lehnen <[email protected]>
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.
What was wrong
A reader who tells their system to reduce motion has told every page, and the
pages this site serves today answer them. The pages this generator produces
answer nothing, because they carry no stylesheet at all:
So nothing has been dropped yet, and nothing would notice on the day it is. The
byte budget reads a page with no query as the smaller one, and every other row
in the table reads something a stylesheet is not.
What this does
The invariant table gains
page-motion-answers-the-readerover the producedpages. It refuses a declaration that moves something where no query asking the
reader about motion switches it off.
Two shapes answer the reader and both are in what this project publishes today.
A declaration inside a query asking for no preference applies only to a reader
who has not asked for less, so the answer decides whether it exists. A
declaration in the ordinary cascade is answered by a query asking for reduce
that switches the same property off, which is the blanket override most
stylesheets are written with, and a row refusing that shape is one somebody
takes out the first time they write a stylesheet. Motion written inside the
reduce query is refused on its own, because it is one word from the repair and
what a reader gets for asking is the motion.
Two bounds, both stated at the operator. The row reads bytes and cannot resolve
a selector, so a reduce query switching a property off answers for every
declaration of that property as far as it can see; what it refuses is the page
that never asks, which is what a generator produces when it renders a stylesheet
written without the query, and a page that asks and misses one rule belongs to
the legs that load it in a browser. The property set is a floor: motion written
through a vendor-prefixed property, through an animation element inside an image
or through anything the set does not name is refused by nothing here.
The report is the other half of the same change rather than a second topic.
Nothing this build writes moves, so the row would have printed
okover pagescarrying none of what it judges, and a green mark over an empty set reads as a
set of pages that answer the reader. A row that counts what it judges prints
what it read instead:
Only such a row carries the counter. Where the page itself is the subject every
page is one, and the file count the run already prints says so.
Closes
Nothing. #87 asks for four things and this is one of them. Loading every page
under each emulated scheme and under an emulated request to reduce motion, and
reddening a run where the browser is present and will not start, are the other
three, and they wait on the browser in #63. The issue already carries that split
and this does not restate it.
What was run
The gate, at
878938cfe0203dc3e3e503df44f0a04b88c98b76:The set that needs the network was not asked for, which the run names above. No
test in this change was skipped, and none of them needs a display or elevation.
That the row bites, against the real frame rather than a fixture. With
<style>a { transition: color 120ms }</style>added totemplates/page.html.tmpl:and with the query that answers it added beside the same declaration,
@media (prefers-reduced-motion: reduce) { a { transition: none } }:The frame is back as it was on
mainin the commit that is pushed; the two runsabove were taken with it edited and it was restored afterwards.
That the guard is load bearing, by taking it out. With the row deleted from the
table and nothing else changed:
and with it back:
The near miss the suite spends its effort on is the last case in
TestTheMotionRowTellsTheQueryFromTheCascade: the query is written, theproperty is written, and the value is the one that moves. It is one word from
the shape above it in the same table, and it is the shape a reader who set the
preference actually meets.
The means
Go, in the package that already holds the table, because a rule here is a row
and adding one is adding a row. It carries the three things this repository asks
of a means. It is refusable, and the refusal goes through the same operator every
other row uses. The guard is shown to bite by the runs above and shown to be load
bearing by deleting it. Every number in this body carries the command that
produced it.
A rule written into the workflow that reports it would have no suite that could
prove it bites and no way to run it on the machine where the mistake was made,
which is the position this repository already took for the rules over commit
messages.
Who read it
Nobody but me. The ruleset on the branch requires no approving review, so this
is merged by the person who opened it, and the runs above stand in place of a
second reader rather than beside one.