web-platform-tests / results-collection

Other
41 stars 46 forks source link

# Testing Firefox in "headless" mode #603

Open jugglinmike opened 5 years ago

jugglinmike commented 5 years ago

In its default configuration, Firefox requires a display in order to run. This project currently executes Firefox using xvfb, a utility that creates virtual displays in the X windowing system. Recently, we have been struggling with a regression that appears to be related to the communication between Firefox and the virtual display (see gh-592).

As of version 55, Firefox implements a "headless" mode which allows the browser to be run in the absence of a display. In gh-592, @whimboo recommended enabling that feature instead of configuring Firefox to use a virtual display. In addition to side-stepping the regression, they mentioned that it would be faster overall.

There are implementation details which the feature's documentation does not describe but which may adversely influence conformance test results:

More generally, I wonder about authenticity. Which is more true-to-life: Firefox with a virtual frame buffer or Firefox in headless mode?

@whimboo are you familiar with the feature? Can you speak to any of these concerns? Or do you know who I could contact to learn more?

jgraham commented 5 years ago

Using Xvfb is more like a real user experience, certainly. Xvfb uses the normal Firefox code but renders to a framebuffer that is never drawn to the screen. Headless mode more or less stubs out the rendering code.

Headless mode may be faster since it does less. It could be more reliable if the X server does something asynchronously that is synchronous in the headless implementation.

At some point headless mode on Linux passed all web-platform tests that Linux+xvfb did on our CI (excluding disabled tests), without needing special metadata just for headless. But I don't think that configuration is actually run, so it's hard to know whether that level of compatibility is being maintained.

Overall I would hesitate to move to using headless by default for a case where we are so interested in the precise behaviour of the browser

jugglinmike commented 5 years ago

Thanks, James!

gsnedders commented 5 years ago

Like @jgraham, I'd be hesitate to move away from the codepaths that actually get run by users. Certainly headless is a useful performance optimisation for many things, but it isn't testing what users actually see, and I think that (more than performance) is what we should be focusing on. (Performance, after all, can be solved in other ways, like more parallelism.)

foolip commented 5 years ago

@jugglinmike have you looked at running Chrome headless?

I think there is an argument for exercising the headless codepaths, namely that this is what web developers setting up cross-browser testing are likely to do if they know how. It's certainly a risk that there are differences between headless and headful, but perhaps we could do a weekly or monthly run of headful to compare against, rather than always spending more cycles?

Aside: It would be great if ./wpt run were headless by default, since it's not really possible to use your machine will windows are flying around.

andreastt commented 5 years ago

A datapoint is that we have not had many deviations in results between Xvfb and headless mode in the Firefox CI, as https://searchfox.org/mozilla-central/search?q=headless&case=false&regexp=false&path=testing%2Fmarionette%2Fharness%2F**%2F*.py shows.

To the contrary, running Firefox in headless mode provides more stable results because Marionette does not have to interact with unpredictable window managers and the inherent asynchronous nature of the X11 protocol. Headless will also be faster because anything related to painting and window manipulation is stubbed out.

Headless mode is controlled through the MOZ_HEADLESS environment variable. MOZ_HEADLESS_WIDTH and MOZ_HEADLESS_HEIGHT can be used to control the default window size. Subsequent window resizing using WebDriver/Marionette will update this state.

There is arguably a stronger argument for using headless in the WPT CI than there is for wpt.fyi result collection, where you might value speed over correctness. I would be strongly opposed to use headless in the Firefox CI, where emulating the user’s environment by interacting with the WM, loading libgtk, &c. is paramount to ensure Firefox is not only theoretically usable.

I think the open question is what difference in actual test results we can expect from running in headless mode? If there are no differences, isn’t the Xvfb approach only theoretically better in this context?

jgraham commented 5 years ago

I think that we should make --headless an option to wptrunner that abstracts the details of enbling headless mode across different browsers. It could make sense to enable that for the stability checks, but unless we have some reasonable assurance that headless mode matches non-headless in all cases (e.g. the relevant browser running both configurations in CI with identical results) I don't think we should enable it for wpt.fyi-ingested runs.

For local runs I can see the advantage of implying --headless by default as long as the output clearly informs people what's happening (we would of course have --no-headless to turn it off).

andreastt commented 5 years ago

I filed https://bugzilla.mozilla.org/show_bug.cgi?id=1434382 about a wptrunner --headless flag some time ago, but maybe a GitHub issue would’ve been better.

foolip commented 5 years ago

@andreastt the searchfox.org link you shared doesn't seem to list test statuses, should I be able to see a list of tests that do differ between headless and Xvfb there?

foolip commented 5 years ago

I've filed https://github.com/web-platform-tests/wpt/issues/13005 for the CLI feature request.

andreastt commented 5 years ago

@foolip For the functional Marionette tests, all tests are expected to pass unless marked to skip, so we only have one test for the remote protocol that we can’t get working.

Looking at WPT results I’m sure is a more relevant datapoint, but I wanted to point out that we don’t have many known-headless-issues in our WebDriver implementation.

jugglinmike commented 5 years ago

I think there is an argument for exercising the headless codepaths, namely that this is what web developers setting up cross-browser testing are likely to do if they know how. It's certainly a risk that there are differences between headless and headful, but perhaps we could do a weekly or monthly run of headful to compare against, rather than always spending more cycles?

@foolip I haven't attempted to use Chrome's headless feature. There hasn't been a need to change the approach that was initially implemented, and I've had my doubts about authenticity. I'm comfortable if this makes our results less representative of a web developer's testing experience if it means the results are more representative of a user's browsing experience.

To the extent that these things don't align, we're sure to surprise some people no matter which "side" we choose. Targeting the user is what the web developer is doing, anyway. If their process is flawed, then that's clearly a problem, but it may be something we can help fix. I just think we should consider the "headless" mode the special case.

Hoping to get some clarity about the actual effect on test results, I enabled Chrome's headless mode on Bocoup's fork and triggered a TaskCluster build. The experiment was fairly catastrophic: over 2,000 testharness.js tests timed out, and 2 of the 26 TaskCluster tasks never completed. It's safe to say that I'm missing something. If anyone reading has any tips on how the feature should be enabled for WPT, then I'd be happy to try again!

foolip commented 5 years ago

Oh, wow, that's not quite ready to land then :)

I'm afraid I don't have any tips, if we wanted to pursue this we'd have to dig into the failure categories one by one.

andreastt commented 5 years ago

Just out of curiosity, I would be interested to know how Firefox fares in that experiment. Setting MOZ_HEADLESS=1 in the environment should be sufficient.

jugglinmike commented 5 years ago

I'll give it a shot, @andreastt . Is setting MOZ_HEADLESS=1 different than using the -headless flag?

andreastt commented 5 years ago

I'll give it a shot, @andreastt . Is setting MOZ_HEADLESS=1 different than using the -headless flag?

They are equivalent.

jugglinmike commented 5 years ago

@andreastt I wanted to verify this locally before experimenting with all of WPT on TaskCluster. I hit a wall right out of the gate, though: things stall out immediately after starting the browser. Here's the last thing that the WPT CLI outputs following ./wpt run --binary-arg=-headless firefox dom/events/CustomEvent.html:

 7:33.05 INFO Application command: /home/mike/projects/bocoup/google-wpt/web-platform-tests/_venv/browsers/firefox/firefox -headless -profile /tmp/tmpWt0563.mozrunner
 7:33.07 INFO Starting runner
 7:33.10 pid:11492 Full command: /home/mike/projects/bocoup/google-wpt/web-platform-tests/_venv/browsers/firefox/firefox -headless -profile /tmp/tmpWt0563.mozrunner
pid:11492 *** You are running in headless mode.

After a few minutes, it exits with:

 8:42.82 INFO Browser exited with return code -15
 8:52.83 WARNING Forcibly terminating runner process
 8:52.86 WARNING u'stop': ()
 8:52.86 ERROR Max restarts exceeded
 8:52.86 INFO Got 0 unexpected results
 8:52.86 SUITE_END

web-platform-test
~~~~~~~~~~~~~~~~~
Ran 0 checks ()
Expected results: 0
OK
 8:52.95 INFO Closing logging queue
 8:52.95 INFO queue closed
 8:52.95 ERROR No tests ran

Are you set up to try this on your end? If not, can I get you more debugging information?

whimboo commented 5 years ago

@jugglinmike do you have a link to the TaskCluster / Buildbot log?

jugglinmike commented 5 years ago

Nope, that was a result of running WPT locally. I can generate logs for you, though. Full command:

./wpt run --binary-arg=-headless --log-mach=mach.txt --log-mach-level=debug firefox dom/events/CustomEvent.html

Output:

https://gist.github.com/jugglinmike/151e08f22d7b4427e0bd670294d37d49

andreastt commented 5 years ago

Can you include --webdriver-arg=-vv in that?

jugglinmike commented 5 years ago

Sure, though the command

./wpt run --binary-arg=-headless --webdriver-arg=-vv --log-mach=log-mach-2.txt --log-mach-level=debug firefox dom/events/CustomEvent.html

Produced a log file that has no more information than the previous file:

https://gist.github.com/jugglinmike/7cc77c951cb50bedeb374d60fb6f936a

Should I be using --log-tbpl? Or some additional --webdriver-arg?

whimboo commented 5 years ago

--webdriver-arg would only work for those wpt tests which use geckodriver, which is tests/webdriver only. Running any other test which is using purely Marionette won't work.

But in such a case you should tweak the test runner and set the preference marionette.log.level to trace.

jugglinmike commented 5 years ago

Thanks, @whimboo! I think we're getting somewhere. Full command:

./wpt run --binary-arg=-headless --log-mach=mach.txt --log-mach-level=debug --setpref marionette.log.level=trace firefox dom/events/CustomEvent.html

Output:

https://gist.github.com/jugglinmike/97f57b6aa7c3e5d3d92ffd5bc8cd612a

In particular:

[2m 0:41.85(B INFO(B Starting runner
[2m 0:41.85(B DEBUG Test runner started
[2m 0:41.88(B pid:10575(B Full command: /home/mike/projects/bocoup/google-wpt/web-platform-tests/_venv/browsers/firefox/firefox -headless -profile /tmp/tmpGLs4P9.mozrunner
[2mpid:10575(B *** You are running in headless mode.
[2m 0:41.92(B DEBUG Got command: u'log'
[2m 0:41.93(B DEBUG Executor setup
[2m 0:41.93(B DEBUG Got command: u'log'
[2m 0:41.93(B DEBUG Connecting to Marionette on port 2828
[2m 0:41.93(B DEBUG Got command: u'log'
[2m 0:41.93(B DEBUG Waiting for Marionette connection
[2m 0:42.70(B pid:10575(B 1537466880599 Marionette  DEBUG   Received observer notification profile-after-change
[2m 0:42.84(B pid:10575(B 1537466880733 Marionette  DEBUG   Received observer notification command-line-startup
[2m 0:43.05(B pid:10575(B 1537466880940 Marionette  DEBUG   Received observer notification toplevel-window-ready
[2m 0:44.01(B pid:10575(B 1537466881909 Marionette  DEBUG   Received observer notification sessionstore-windows-restored
[2m 0:44.01(B pid:10575(B 1537466881910 Marionette  DEBUG   Init aborted (running=false, enabled=false, finalUIStartup=true)
[2m 1:51.55(B DEBUG init_failed called from timer
[2m 1:51.55(B DEBUG Got command: u'init_failed'
[2m 1:51.60(B INFO(B Browser exited with return code -15
[2m 1:51.60(B DEBUG PROCESS LEAKS None
[2m 1:51.60(B DEBUG stopped
[2m 1:51.60(B DEBUG ensure_runner_stopped
[2m 1:51.60(B DEBUG waiting for runner process to end
whimboo commented 5 years ago

Hm, please note that the initialization of Marionette got aborted because the component is not enabled! I also don't see that the -marionette argument is passed to the Firefox binary, nor that the marionette.enabled preference is set to true anywhere.

andreastt commented 5 years ago

Depending on what version of Firefox you’re using, you need to set the preference in the correct case. Since recently, Nightly only supports Trace (capital T).

The log does say that it’s connecting to Marionette, and Marionette does appear to be enabled. The -marionette flag is not the only way to enable Marionette: you can also set the marionette.enabled preference to true, which is what I suspect wptrunner is doing.

If you could try --setpref marionette.log.level=Trace I would be much obliged.

whimboo commented 5 years ago

@andreastt, nope. The case is irrelevant to Marionette so far. I exactly requested to revert that for your patch on https://bugzilla.mozilla.org/show_bug.cgi?id=1482829 before it landed.

So while the internal Marionette component is enabled, the internal enabled state is false. The wptrunner shouldn't do that, but the Marionette client in geckoinstance.py. I wonder if there is a bug.

jugglinmike commented 5 years ago

If you could try --setpref marionette.log.level=Trace I would be much obliged.

I think @whimboo may be on to something, since making that change had no discernable effect on the log.

I also don't see that the -marionette argument is passed to the Firefox binary, nor that the marionette.enabled preference is set to true anywhere.

The following commands also hang:

./wpt run --binary-arg=-headless --setpref marionette.enabled=true --no-pause firefox dom/events/CustomEvent.html
./wpt run --binary-arg=-headless --setpref marionette.enabled=True --no-pause firefox dom/events/CustomEvent.html

However, explicitly specifying -marionette works:

./wpt run --binary-arg=-headless --binary-arg=-marionette --no-pause firefox dom/events/CustomEvent.html

Which is strange. For kicks, I tried specifying a bogus argument instead of -headless:

./wpt run --binary-arg=-bogus --no-pause firefox dom/events/CustomEvent.html

That also hangs, giving a pretty good indication of the problem here. The WPT CLI currently replaces the -marionette argument with any user-specified --binary-arg, but it ought to use -marionette in all cases. I've submitted a fix for that here: https://github.com/web-platform-tests/wpt/pull/13154.

In the mean time, I've triggered a build on TaskCluster by explicitly specifying both arguments: https://tools.taskcluster.net/groups/F8b0wLxIRY2VkFN0Ykn9Dw

andreastt commented 5 years ago

Yes, regrading the log pref casing I was misremembering events. The casing shouldn’t matter. Also the debug log shows enable=false which does indeed mean Marionette is not getting enabled.

That also hangs, giving a pretty good indication of the problem here. The WPT CLI currently replaces the -marionette argument with any user-specified --binary-arg, but it ought to use -marionette in all cases. I've submitted a fix for that here: web-platform-tests/wpt#13154.

Thanks! But shouldn’t it be -marionette plus whatever is given in --binary-arg?

jugglinmike commented 5 years ago

Yup, that wasn't to say -marionette should be used exclusively. The patch includes a test which verifies the user-specified argument is also used.

jugglinmike commented 5 years ago

For Firefox Nightly running against WPT commit e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc, we observed 184 discrepancies between "xvfb" and "headless". At the bottom of this comment, you'll find a summary which includes a "score" for each test.

Bear in mind that some of these discrepancies are likely due to unrelated flakiness (more discussion on that here).

Discrepancies between Firefox run with xvfb and `-headless` type | name | xvfb | headless -----|------|------|--------- reftest | [/css/CSS2/backgrounds/background-position-002.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/backgrounds/background-position-002.xht) | 0 | 1 reftest | [/css/CSS2/generated-content/content-175.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/generated-content/content-175.xht) | 0 | 1 reftest | [/css/CSS2/margin-padding-clear/margin-collapse-001.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/margin-padding-clear/margin-collapse-001.xht) | 0 | 1 reftest | [/css/CSS2/margin-padding-clear/margin-em-inherit-001.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/margin-padding-clear/margin-em-inherit-001.xht) | 0 | 1 reftest | [/css/CSS2/margin-padding-clear/margin-right-103.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/margin-padding-clear/margin-right-103.xht) | 0 | 1 reftest | [/css/CSS2/margin-padding-clear/margin-right-104.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/margin-padding-clear/margin-right-104.xht) | 0 | 1 reftest | [/css/CSS2/margin-padding-clear/margin-right-113.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/margin-padding-clear/margin-right-113.xht) | 0 | 1 reftest | [/css/CSS2/normal-flow/blocks-020.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/normal-flow/blocks-020.xht) | 0 | 1 reftest | [/css/CSS2/normal-flow/blocks-021.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/normal-flow/blocks-021.xht) | 0 | 1 reftest | [/css/CSS2/normal-flow/blocks-022.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/normal-flow/blocks-022.xht) | 0 | 1 reftest | [/css/CSS2/normal-flow/inline-replaced-width-014.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/normal-flow/inline-replaced-width-014.xht) | 0 | 1 reftest | [/css/CSS2/positioning/absolute-replaced-width-003c.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/positioning/absolute-replaced-width-003c.xht) | 0 | 1 reftest | [/css/CSS2/positioning/left-offset-percentage-002.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/positioning/left-offset-percentage-002.xht) | 0 | 1 reftest | [/css/CSS2/positioning/top-offset-percentage-002.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/positioning/top-offset-percentage-002.xht) | 0 | 1 reftest | [/css/CSS2/tables/separated-border-model-007.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/tables/separated-border-model-007.xht) | 0 | 1 reftest | [/css/CSS2/tables/separated-border-model-008.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/tables/separated-border-model-008.xht) | 0 | 1 reftest | [/css/CSS2/tables/separated-border-model-009.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/tables/separated-border-model-009.xht) | 0 | 1 reftest | [/css/CSS2/visuren/top-114.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/CSS2/visuren/top-114.xht) | 0 | 1 reftest | [/css/compositing/mix-blend-mode/mix-blend-mode-animation.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/compositing/mix-blend-mode/mix-blend-mode-animation.html) | 1 | 0 reftest | [/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html) | 1 | 0 reftest | [/css/css-backgrounds/background-334.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-backgrounds/background-334.html) | 0 | 1 reftest | [/css/css-backgrounds/border-image-outset-003.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-backgrounds/border-image-outset-003.html) | 0 | 1 reftest | [/css/css-display/display-contents-state-change-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-display/display-contents-state-change-001.html) | 0 | 1 reftest | [/css/css-flexbox/flex-vertical-align-effect.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-flexbox/flex-vertical-align-effect.html) | 0 | 1 reftest | [/css/css-flexbox/flexbox_visibility-collapse-line-wrapping.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-flexbox/flexbox_visibility-collapse-line-wrapping.html) | 0 | 1 reftest | [/css/css-flexbox/percentage-heights-004.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-flexbox/percentage-heights-004.html) | 1 | 0 reftest | [/css/css-images/tiled-radial-gradients.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-images/tiled-radial-gradients.html) | 0 | 1 reftest | [/css/css-multicol/multicol-fill-auto-001.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-multicol/multicol-fill-auto-001.xht) | 0 | 1 reftest | [/css/css-multicol/multicol-inherit-001.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-multicol/multicol-inherit-001.xht) | 0 | 1 reftest | [/css/css-multicol/multicol-overflow-000.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-multicol/multicol-overflow-000.xht) | 0 | 1 reftest | [/css/css-transforms/matrix/svg-matrix-005.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-transforms/matrix/svg-matrix-005.html) | 0 | 1 reftest | [/css/css-ui/box-sizing-007.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-ui/box-sizing-007.html) | 1 | 0 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-007.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-007.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-013.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-013.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-019.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-019.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-025.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-025.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-031.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-031.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-037.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-037.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-043.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-043.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-049.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-049.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-055.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-055.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-061.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-061.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-067.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-067.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-073.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-073.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-079.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-079.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-085.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-085.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-091.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-091.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-097.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-097.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-107.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-107.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-115.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-115.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-123.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-123.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-131.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-131.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-139.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-139.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-147.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-147.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-155.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-155.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-163.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-163.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-171.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-171.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-179.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-179.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-187.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-187.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-195.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-195.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-203.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-203.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-211.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-211.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-219.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-219.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vlr-227.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vlr-227.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-006.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-006.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-012.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-012.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-018.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-018.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-024.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-024.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-030.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-030.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-036.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-036.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-042.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-042.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-048.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-048.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-054.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-054.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-060.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-060.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-066.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-066.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-072.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-072.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-078.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-078.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-084.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-084.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-090.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-090.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-096.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-096.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-106.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-106.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-114.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-114.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-122.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-122.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-130.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-130.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-138.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-138.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-146.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-146.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-154.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-154.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-162.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-162.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-170.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-170.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-178.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-178.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-186.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-186.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-194.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-194.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-202.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-202.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-210.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-210.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-218.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-218.xht) | 0 | 1 reftest | [/css/css-writing-modes/abs-pos-non-replaced-vrl-226.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/abs-pos-non-replaced-vrl-226.xht) | 0 | 1 reftest | [/css/css-writing-modes/available-size-006.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/available-size-006.html) | 0 | 1 reftest | [/css/css-writing-modes/available-size-007.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/available-size-007.html) | 0 | 1 reftest | [/css/css-writing-modes/available-size-008.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/available-size-008.html) | 0 | 1 reftest | [/css/css-writing-modes/available-size-015.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/available-size-015.html) | 0 | 1 reftest | [/css/css-writing-modes/available-size-019.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/available-size-019.html) | 0 | 1 reftest | [/css/css-writing-modes/scrollbar-vertical-rl.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/scrollbar-vertical-rl.html) | 1 | 0 reftest | [/css/css-writing-modes/sizing-orthog-htb-in-vlr-007.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-htb-in-vlr-007.xht) | 0 | 1 reftest | [/css/css-writing-modes/sizing-orthog-htb-in-vlr-008.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-htb-in-vlr-008.xht) | 0 | 1 reftest | [/css/css-writing-modes/sizing-orthog-htb-in-vrl-008.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-htb-in-vrl-008.xht) | 0 | 1 reftest | [/css/css-writing-modes/sizing-orthog-htb-in-vrl-011.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-htb-in-vrl-011.xht) | 0 | 1 reftest | [/css/css-writing-modes/sizing-orthog-htb-in-vrl-020.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-htb-in-vrl-020.xht) | 0 | 1 reftest | [/css/css-writing-modes/sizing-orthog-prct-htb-in-vrl-001.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/sizing-orthog-prct-htb-in-vrl-001.xht) | 0 | 1 reftest | [/css/css-writing-modes/text-indent-vlr-011.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/text-indent-vlr-011.xht) | 0 | 1 reftest | [/css/css-writing-modes/text-indent-vlr-013.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/text-indent-vlr-013.xht) | 0 | 1 reftest | [/css/css-writing-modes/text-indent-vrl-010.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/text-indent-vrl-010.xht) | 0 | 1 reftest | [/css/css-writing-modes/text-indent-vrl-012.xht](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-writing-modes/text-indent-vrl-012.xht) | 0 | 1 reftest | [/css/mediaqueries/device-aspect-ratio-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/mediaqueries/device-aspect-ratio-001.html) | 1 | 0 reftest | [/css/mediaqueries/device-aspect-ratio-005.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/mediaqueries/device-aspect-ratio-005.html) | 1 | 0 reftest | [/css/selectors/focus-within-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-001.html) | 0 | 1 reftest | [/css/selectors/focus-within-002.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-002.html) | 0 | 1 reftest | [/css/selectors/focus-within-003.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-003.html) | 0 | 1 reftest | [/css/selectors/focus-within-004.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-004.html) | 0 | 1 reftest | [/css/selectors/focus-within-005.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-005.html) | 0 | 1 reftest | [/css/selectors/focus-within-006.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-006.html) | 0 | 1 reftest | [/css/selectors/focus-within-007.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-007.html) | 0 | 1 reftest | [/css/selectors/focus-within-008.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-008.html) | 0 | 1 reftest | [/css/selectors/focus-within-010.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-010.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-001.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-002.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-002.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-003.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-003.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-004.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-004.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-005.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-005.html) | 0 | 1 reftest | [/css/selectors/focus-within-shadow-006.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/focus-within-shadow-006.html) | 0 | 1 reftest | [/css/selectors/selection-image-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/selectors/selection-image-001.html) | 0 | 1 reftest | [/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-justify-content-horiz-001b.xhtml](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-justify-content-horiz-001b.xhtml) | 0 | 1 reftest | [/css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/focus-within-1.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/focus-within-1.html) | 0 | 1 reftest | [/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/vendor-imports/mozilla/mozilla-central-reftests/values3/calc-text-indent-intrinsic-1.html) | 1 | 0 reftest | [/html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html) | 0 | 1 reftest | [/webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand_css_relative_url.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webvtt/rendering/cues-with-video/processing-model/selectors/cue/background_shorthand_css_relative_url.html) | 0 | 1 testharness | [/FileAPI/url/sandboxed-iframe.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/FileAPI/url/sandboxed-iframe.html) | 0.685714285714 | -1 testharness | [/WebCryptoAPI/sign_verify/test_ecdsa.https.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/WebCryptoAPI/sign_verify/test_ecdsa.https.html) | 0.0 | 0.0 testharness | [/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.https.html) | 0.65250965251 | 0.649805447471 testharness | [/async-local-storage/non-secure-context-dynamic-import.tentative.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/async-local-storage/non-secure-context-dynamic-import.tentative.html) | 0.5 | 0.0 testharness | [/content-security-policy/inside-worker/dedicated-script.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/content-security-policy/inside-worker/dedicated-script.html) | -1 | -1 testharness | [/content-security-policy/inside-worker/shared-script.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/content-security-policy/inside-worker/shared-script.html) | 0.555555555556 | 1.0 testharness | [/content-security-policy/script-src/script-src-1_4_2.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/content-security-policy/script-src/script-src-1_4_2.html) | 0.5 | 1.0 testharness | [/content-security-policy/script-src/worker-set-timeout-blocked.sub.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/content-security-policy/script-src/worker-set-timeout-blocked.sub.html) | 0.0 | 1.0 testharness | [/css/css-overflow/overflow-shorthand-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-overflow/overflow-shorthand-001.html) | 1.0 | 0.25 testharness | [/css/css-ui/caret-color-013.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-ui/caret-color-013.html) | 1.0 | 0.363636363636 testharness | [/css/css-values/viewport-units-css2-001.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/css-values/viewport-units-css2-001.html) | 0.9875 | 0.9875 testharness | [/css/cssom/overflow-serialization.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/cssom/overflow-serialization.html) | 1.0 | 0.0 testharness | [/css/cssom/shorthand-values.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/css/cssom/shorthand-values.html) | 0.473684210526 | 0.421052631579 testharness | [/fetch/api/redirect/redirect-count.any.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/fetch/api/redirect/redirect-count.any.html) | -1 | 1.0 testharness | [/fetch/api/redirect/redirect-count.any.worker.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/fetch/api/redirect/redirect-count.any.worker.html) | -1 | 1.0 testharness | [/fullscreen/api/document-fullscreen-enabled-active-document.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/fullscreen/api/document-fullscreen-enabled-active-document.html) | 0.0 | 1.0 testharness | [/fullscreen/api/promises-reject.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/fullscreen/api/promises-reject.html) | 0.5 | 1.0 testharness | [/fullscreen/idlharness.window.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/fullscreen/idlharness.window.html) | 0.958333333333 | 1.0 testharness | [/hr-time/timeOrigin.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/hr-time/timeOrigin.html) | 0.666666666667 | 1.0 testharness | [/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html) | 1.0 | 0.25 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html) | -1 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html) | -1 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports.html) | 0.0 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html) | 0.0 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html) | 0.0 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html) | 0.0 | 0.0 testharness | [/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html) | 0.0 | 0.0 testharness | [/navigation-timing/nav2_test_attributes_values.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/navigation-timing/nav2_test_attributes_values.html) | 1.0 | 0.0 testharness | [/referrer-policy/css-integration/external-import-stylesheet.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/referrer-policy/css-integration/external-import-stylesheet.html) | 0.0 | 1.0 testharness | [/referrer-policy/css-integration/external-stylesheet.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/referrer-policy/css-integration/external-stylesheet.html) | 0.0 | 1.0 testharness | [/referrer-policy/css-integration/internal-import-stylesheet.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/referrer-policy/css-integration/internal-import-stylesheet.html) | 0.0 | 1.0 testharness | [/referrer-policy/css-integration/processing-instruction.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/referrer-policy/css-integration/processing-instruction.html) | 0.0 | 1.0 testharness | [/resource-timing/resource_initiator_types.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/resource-timing/resource_initiator_types.html) | 0.628571428571 | 0.647058823529 testharness | [/webgl/bufferSubData.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/bufferSubData.html) | 1.0 | 0.0 testharness | [/webgl/compressedTexImage2D.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/compressedTexImage2D.html) | 1.0 | 0.0 testharness | [/webgl/compressedTexSubImage2D.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/compressedTexSubImage2D.html) | 0.5 | 0.0 testharness | [/webgl/texImage2D.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/texImage2D.html) | 1.0 | 0.0 testharness | [/webgl/texSubImage2D.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/texSubImage2D.html) | 1.0 | 0.0 testharness | [/webgl/uniformMatrixNfv.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webgl/uniformMatrixNfv.html) | 1.0 | 0.0 testharness | [/webstorage/storage_local_setitem_quotaexceedederr.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webstorage/storage_local_setitem_quotaexceedederr.html) | 0.0 | 1.0 testharness | [/webstorage/storage_session_setitem_quotaexceedederr.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webstorage/storage_session_setitem_quotaexceedederr.html) | 0.0 | 1.0 testharness | [/x-frame-options/deny.sub.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/x-frame-options/deny.sub.html) | 0.0 | 1.0 testharness | [/x-frame-options/multiple.sub.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/x-frame-options/multiple.sub.html) | 0.166666666667 | 0.666666666667 testharness | [/x-frame-options/sameorigin.sub.html](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/x-frame-options/sameorigin.sub.html) | 0.833333333333 | 1.0 testharness | [/xhr/send-content-type-charset.htm](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/xhr/send-content-type-charset.htm) | 0.777777777778 | 1.0 wdspec | [/webdriver/tests/element_click/interactability.py](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webdriver/tests/element_click/interactability.py) | 0.833333333333 | 1.0 wdspec | [/webdriver/tests/fullscreen_window/fullscreen.py](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webdriver/tests/fullscreen_window/fullscreen.py) | -1 | 1.0 wdspec | [/webdriver/tests/fullscreen_window/user_prompts.py](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webdriver/tests/fullscreen_window/user_prompts.py) | -1 | 1.0 wdspec | [/webdriver/tests/maximize_window/user_prompts.py](https://github.com/web-platform-tests/wpt/blob/e6fd8f35c3604d3b94d0a975a3e1d5fa8ef0cabc/webdriver/tests/maximize_window/user_prompts.py) | 0.666666666667 | 1.0
whimboo commented 5 years ago

Please note that we don't run headless in our own CI yet. So we aren't aware of differences ourselves. But lately we were at least talking about enabling headless for wdspec as the first step. So this may happen soon.