Contributing tests for browsers

is good for the web

Simon Pieters

What we'll do here

  • Introduce the Web Platform Contribution Guide
  • Introduce the web-platform-tests project
  • Find a web platform bug that needs tests
  • Write a test for wpt
  • Report browser bugs

But why?

Interoperability bugs are painful for web developers

MDN Developer Needs Assessment 2019

3 pain points where tests help

Lack of browser/engine adoption/support for a given language feature 43%
Lack of interoperability between implementations 26.2%
Browser updates causing things to break 15.8%

crbug.org

github.com/web-platform-tests/wpt/pull/12489

wpc.guide

web-platform-tests.org

wpt.live

wpt.fyi

github.com/web-platform-tests/wpt/issues

github.com/w3c/csswg-drafts/issues

github.com/whatwg/html/issues

getbootstrap.com/docs/4.5/browser-bugs/

developer.mozilla.org/en-US/docs/Web/CSS/:dir

developer.mozilla.org/en-US/docs/Web/CSS/:dir

drafts.csswg.org/selectors-4/#the-dir-pseudo

html.spec.whatwg.org/multipage/#selector-ltr

web-platform-tests.org ➡ Testing plan

github.com/web-platform-tests/wpt/issues/25569

git grep -l ":dir("

$ git grep -l ":dir("
css/css-scoping/shadow-directionality-001.tentative.html
css/css-scoping/shadow-directionality-002.tentative.html
css/selectors/selectors-dir-selector-ltr-001.html
css/selectors/selectors-dir-selector-rtl-001.html
css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/disclosure-styles-ref.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-01a.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-01b.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-02a.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-02b.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-03a.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-03b.html
css/vendor-imports/mozilla/mozilla-central-reftests/selectors4/dir-style-04.html
html/semantics/selectors/pseudo-classes/dir.html
html/semantics/selectors/pseudo-classes/dir01.html
shadow-dom/directionality-002.tentative.html

wpt.live/html/semantics/selectors/pseudo-classes/dir.html

wpt.live/html/semantics/selectors/pseudo-classes/dir.html

<span dir="rtl" id=span2>WERBEH</span>
<span dir="ltr" id=span3>HEBREW</span>

<script id=script4>
  testSelectorIdsMatch(":dir(rtl)", ["span2"], "':dir(rtl)' matches all elements whose directionality is 'rtl'.");
  ...
</script>

wpt.live/html/semantics/selectors/pseudo-classes/dir.html

function testSelectorIdsMatch(selector, ids, testName) {
  test(function(){
    var elements = document.querySelectorAll(selector);
    assert_array_equals([...elements], getElementsByIds(ids));
  }, testName);
}

web-platform-tests.org ➡ testharness.js tutorial

Test <input type=tel> in dir.html

@@ -29,2 +29,7 @@
     <span dir="ltr" id=span6>HEBREW</span>
+    <span dir="rtl" id=span7>
+     <input type=tel id=input-tel1>
+     <input type=tel id=input-tel2 dir="invalid">
+    </span>
+    <input type=tel id=input-tel3 dir="rtl">
     <bdo dir="auto" id=bdo3>HEBREW</bdo>
@@ -40,2 +45,4 @@
         "span5",
+        "span7",
+        "input-tel3",
         "bdo4",
@@ -65,2 +72,4 @@
         "span6",
+        "input-tel1",
+        "input-tel2",
         "bdo3",

web-platform-tests.org ➡ running tests

New test fails in Firefox Nightly

github.com/web-platform-tests/wpt/pull/25599

github.com/web-platform-tests/wpt/pull/25599

wpt.fyi - firefox[experimental]

PR results vs previous results on wpt.fyi

wpc.guide/bug-guide/#report-bugs-for-browser-engines

bugzilla.mozilla.org/enter_bug.cgi?product=Core

bugzilla.mozilla.org/show_bug.cgi?id=1665655

bugzilla.mozilla.org/show_bug.cgi?id=1665655

Ask for help in IRC or the mailing list

Happy testing!

@zcorpan

Contributing tests for browsers is good for the web

By Simon Pieters

Contributing tests for browsers is good for the web

Learn what the web-platform-tests project is and how you can write new tests to help fix bugs in the web platform itself. We'll use the Web Platform Contribution Guide (https://wpc.guide/) as reference. Your challenge will be to contribute a new test for a recent spec change and report bugs for browsers.

  • 799