Bug 1565666 [wpt PR 17811] - [docs] Introduce tutorial on writing reftests, a=testonly
authorjugglinmike <mike@mikepennisi.com>
Tue, 06 Aug 2019 17:27:30 +0000
changeset 547439 1ce90bb70885ef4ef02716372558cc1e81d14b1f
parent 547438 aea966193f2c23fede77a9338f6609704fde3fdb
child 547440 1868bf0db564ee8d928ae60adb4e00d2146de74d
push id11848
push userffxbld-merge
push dateMon, 26 Aug 2019 19:26:25 +0000
treeherdermozilla-beta@9b31bfdfac10 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1565666, 17811
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1565666 [wpt PR 17811] - [docs] Introduce tutorial on writing reftests, a=testonly Automatic update from web-platform-tests [docs] Introduce tutorial on writing reftests (#17811) Tutorials are a proven way of helping potential contributors orient themselves quickly. By providing concrete instructions that are focused on one specific task, projects can give readers a sense of the contribution experience and offer a starting point for learning any additional details that are relevant to their particular goals. Replace existing content which demonstrates the contents of a reftest with a complete narrative describing how and why such a test is authored. -- wpt-commits: ddc6346ec78dcf134331193d1e5347abb96407e4 wpt-pr: 17811
testing/web-platform/tests/docs/assets/reftest-tutorial-test-screenshot.png
testing/web-platform/tests/docs/writing-tests/index.md
testing/web-platform/tests/docs/writing-tests/reftest-tutorial.md
testing/web-platform/tests/docs/writing-tests/reftests.md
new file mode 100644
index 0000000000000000000000000000000000000000..611fffbd220b8a8ab56216786dd3f85e2934906b
GIT binary patch
literal 20239
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
--- a/testing/web-platform/tests/docs/writing-tests/index.md
+++ b/testing/web-platform/tests/docs/writing-tests/index.md
@@ -13,16 +13,17 @@ There's also a load of [general guidelin
    ahem
    assumptions
    css-metadata
    css-user-styles
    file-names
    h2tests
    lint-tool
    manual
+   reftest-tutorial
    reftests
    rendering
    server-features
    submission-process
    testdriver
    testdriver-tutorial
    testharness
    visual
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/docs/writing-tests/reftest-tutorial.md
@@ -0,0 +1,276 @@
+# Writing a reftest
+
+<!--
+Note to maintainers:
+
+This tutorial is designed to be an authentic depiction of the WPT contribution
+experience. It is not intended to be comprehensive; its scope is intentionally
+limited in order to demonstrate authoring a complete test without overwhelming
+the reader with features. Because typical WPT usage patterns change over time,
+this should be updated periodically; please weigh extensions against the
+demotivating effect that a lengthy guide can have on new contributors.
+-->
+
+Let's say you've discovered that WPT doesn't have any tests for the `dir`
+attribute of [the `<bdo>`
+element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo). This
+tutorial will guide you through the process of writing and submitting a test.
+You'll need to [configure your system to use WPT's
+tools](../running-tests/from-local-system), but you won't need them until
+towards the end of this tutorial. Although it includes some very brief
+instructions on using git, you can find more guidance in [the tutorial for git
+and GitHub](../appendix/github-intro).
+
+WPT's reftests are great for testing web-platform features that have some
+visual effect. [The reftests reference page](reftests) describes them in the
+abstract, but for the purposes of this guide, we'll only consider the features
+we need to test the `<bdo>` element.
+
+```eval_rst
+.. contents::
+   :local:
+```
+
+## Setting up your workspace
+
+To make sure you have the latest code, first type the following into a terminal
+located in the root of the WPT git repository:
+
+    $ git fetch git@github.com:web-platform-tests/wpt.git
+
+Next, we need a place to store the change set we're about to author. Here's how
+to create a new git branch named `reftest-for-bdo` from the revision of WPT we
+just downloaded:
+
+    $ git checkout -b reftest-for-bdo FETCH_HEAD
+
+Now you're ready to create your patch.
+
+## Writing the test file
+
+First, we'll create a file that demonstrates the "feature under test." That is:
+we'll write an HTML document that displays some text using a `<bdo>` element.
+
+WPT has thousands of tests, so it can be daunting to decide where to put a new
+one. Generally speaking, [test files should be placed in directories
+corresponding to the specification text they are
+verifying](../test-suite-design). `<bdo>` is defined in [the "text-level
+semantics" chapter of the HTML
+specification](https://html.spec.whatwg.org/multipage/text-level-semantics.html),
+so we'll want to create our new test in the directory
+`html/semantics/text-level-semantics/the-bdo-element/`. Create a file named
+`rtl.html` and open it in your text editor.
+
+Here's one way to demonstrate the feature:
+
+```html
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>BDO element dir=rtl</title>
+<link rel="help" href="https://html.spec.whatwg.org/#the-bdo-element">
+<meta name="assert" content="BDO element's DIR content attribute renders corrently given value of 'rtl'.">
+
+<p>Test passes if WAS is displayed below.</p>
+<bdo dir="rtl">SAW</bdo>
+```
+
+That's pretty dense! Let's break it down:
+
+- ```html
+  <!DOCTYPE html>
+  <meta charset="utf-8">
+  ```
+
+  We explicitly set the DOCTYPE and character set to be sure that browsers
+  don't infer them to be something we aren't expecting. We're omitting the
+  `<html>` and `<head>` tags. That's a common practice in WPT, preferred
+  because it makes tests more concise.
+
+- ```html
+  <title>BDO element dir=rtl</title>
+  ```
+  The document's title should succinctly describe the feature under test.
+
+- ```html
+  <link rel="help" href="https://html.spec.whatwg.org/#the-bdo-element">
+  ```
+
+  The "help" metadata should reference the specification under test so that
+  everyone understands the motivation. This is so helpful that [the CSS Working
+  Group requires it for CSS tests](css-metadata)! If you're writing a reftest
+  for a feature outside of CSS, feel free to omit this tag.
+
+- ```html
+  <meta name="assert" content="BDO element's DIR content attribute renders corrently given value of 'rtl'.">
+  ```
+
+  The "assert" metadata is a structured way for you to describe exactly what
+  you want your reftest to verify. For a direct test like the one we're writing
+  here, it might seem a little superfluous. It's much more helpful for
+  more-involved tests where reviewers might need some help understanding your
+  intentions.
+
+  This tag is optional, so you can skip it if you think it's unnecessary. We
+  recommend using it for your first few tests since it may let reviewers give
+  you more helpful feedback. As you get more familiar with WPT and the
+  specifications, you'll get a sense for when and where it's better to leave it
+  out.
+
+- ```html
+  <p>Test passes if WAS is displayed below.</p>
+  ```
+
+  We're communicating the "pass" condition in plain English to make the test
+  self-describing.
+
+- ```html
+  <bdo dir="rtl">SAW</bdo>
+  ```
+
+  This is the real focus of the test. We're including some text inside a
+  `<bdo>` element in order to demonstrate the feature under test.
+
+Since this page doesn't rely on any [special WPT server
+features](server-features), we can view it by loading the HTML file directly.
+There are a bunch of ways to do this; one is to navigate to the
+`html/semantics/text-level-semantics/the-bdo-element/` directory in a file
+browser and drag the new `rtl.html` file into an open web browser window.
+
+![](/assets/reftest-tutorial-test-screenshot.png "screen shot of the new test")
+
+Sighted people can open that document and verify whether or not the stated
+expectation is satisfied. If we were writing a [manual test](manual), we'd be
+done. However, it's time-consuming for a human to run tests, so we should
+prefer making tests automatic whenever possible. Remember that we set out to
+write a "reference test." Now it's time to write the reference file.
+
+## Writing a "match" reference
+
+The "match" reference file describes what the test file is supposed to look
+like. Critically, it *must not* use the technology that we are testing. The
+reference file is what allows the test to be run by a computer--the computer
+can verify that each pixel in the test document exactly matches the
+corresponding pixel in the reference document.
+
+Make a new file in the same
+`html/semantics/text-level-semantics/the-bdo-element/` directory named
+`rtl-ref.html`, and save the following markup into it:
+
+```html
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>BDO element dir=rtl reference</title>
+
+<p>Test passes if WAS is displayed below.</p>
+<p>WAS</p>
+```
+
+This is like a stripped-down version of the test file. In order to produce a
+visual rendering which is the same as the expected rendering, it uses a `<p>`
+element whose contents is the characters in right-to-left order. That way, if
+the browser doesn't support the `<bdo>` element, this file will still show text
+in the correct sequence.
+
+This file is also completely functional without the WPT server, so you can open
+it in a browser directly from your hard drive.
+
+Currently, there's no way for a human operator or an automated script to know
+that the two files we've created are supposed to match visually. We'll need to
+add one more piece of metadata to the test file we created earlier. Open
+`html/semantics/text-level-semantics/the-bdo-element/rtl.html` in your text
+editor and add another `<link>` tag as described by the following change
+summary:
+
+```diff
+ <!DOCTYPE html>
+ <meta charset="utf-8">
+ <title>BDO element dir=rtl</title>
+ <link rel="author" title="Sam Smith" href="mailto:sam@example.com">
+ <link rel="help" href="https://html.spec.whatwg.org/#the-bdo-element">
++<link rel="match" href="rtl-ref.html">
+ <meta name="assert" content="BDO element's DIR content attribute renders corrently given value of 'rtl'.">
+
+ <p>Test passes if WAS is displayed below.</p>
+ <bdo dir="rtl">SAW</bdo>
+```
+
+Now, anyone (human or computer) reviewing the test file will know where to find
+the associated reference file.
+
+## Verifying our work
+
+We're done writing the test, but we should make sure it fits in with the rest
+of WPT before we submit it. This involves using some of the project's tools, so
+this is the point you'll need to [configure your system to run
+WPT](../running-tests/from-local-system).
+
+[The lint tool](lint-tool) can detect some of the common mistakes people make
+when contributing to WPT. To run it, open a command-line terminal, navigate to
+the root of the WPT repository, and enter the following command:
+
+    python ./wpt lint html/semantics/text-level-semantics/the-bdo-element
+
+If this recognizes any of those common mistakes in the new files, it will tell
+you where they are and how to fix them. If you do have changes to make, you can
+run the command again to make sure you got them right.
+
+Now, we'll run the test using the automated pixel-by-pixel comparison approach
+mentioned earlier. This is important for reftests because the test and the
+reference may differ in very subtle ways that are hard to catch with the naked
+eye. That's not to say your test has to pass in all browsers (or even in *any*
+browser). But if we expect the test to pass, then running it this way will help
+us catch other kinds of mistakes.
+
+The tools support running the tests in many different browsers. We'll use
+Firefox this time:
+
+    python ./wpt run firefox html/semantics/text-level-semantics/the-bdo-element/rtl.html
+
+We expect this test to pass, so if it does, we're ready to submit it. If we
+were testing a web platform feature that Firefox didn't support, we would
+expect the test to fail instead.
+
+There are a few problems to look out for in addition to passing/failing status.
+The report will describe fewer tests than we expect if the test isn't run at
+all. That's usually a sign of a formatting mistake, so you'll want to make sure
+you've used the right file names and metadata. Separately, the web browser
+might crash. That's often a sign of a browser bug, so you should consider
+[reporting it to the browser's
+maintainers](https://rachelandrew.co.uk/archives/2017/01/30/reporting-browser-bugs/)!
+
+## Submitting the test
+
+First, let's stage the new files for committing:
+
+    $ git add html/semantics/text-level-semantics/the-bdo-element/rtl.html
+    $ git add html/semantics/text-level-semantics/the-bdo-element/rtl-ref.html
+
+We can make sure the commit has everything we want to submit (and nothing we
+don't) by using `git diff`:
+
+    $ git diff --staged
+
+On most systems, you can use the arrow keys to navigate through the changes,
+and you can press the `q` key when you're done reviewing.
+
+Next, we'll create a commit with the staged changes:
+
+    $ git commit -m '[html] Add test for the `<bdo>` element'
+
+And now we can push the commit to our fork of WPT:
+
+    $ git push origin reftest-for-bdo
+
+The last step is to submit the test for review. WPT doesn't actually need the
+test we wrote in this tutorial, but if we wanted to submit it for inclusion in
+the repository, we would create a pull request on GitHub. [The guide on git and
+GitHub](../appendix/github-intro) has all the details on how to do that.
+
+## More practice
+
+Here are some ways you can keep experimenting with WPT using this test:
+
+- Improve coverage by adding more tests for related behaviors (e.g. nested
+  `<bdo>` elements)
+- Add another reference document which describes what the test should *not*
+  look like using [`rel=mismatch`](reftests)
--- a/testing/web-platform/tests/docs/writing-tests/reftests.md
+++ b/testing/web-platform/tests/docs/writing-tests/reftests.md
@@ -1,14 +1,16 @@
 # Reftests
 
 Reftests are one of the primary tools for testing things relating to
 rendering; they are made up of the test and one or more other pages
 ("references") with assertions as to whether they render identically
-or not.
+or not. This page describes their aspects exhaustively; [the tutorial
+on writing a reftest](reftest-tutorial) offers a more limited but
+grounded guide to the process.
 
 ## How to Run Reftests
 
 Reftests can be run manually simply by opening the test and the
 reference file in multiple windows or tabs and flipping between the
 two. In automation the comparison is done in an automated fashion,
 which can lead to differences hard for the human eye to notice to
 cause the test to fail.
@@ -175,51 +177,10 @@ applied to any ref that doesn't have a m
 In some cases, a test cannot be a reftest. For example, there is no
 way to create a reference for underlining, since the position and
 thickness of the underline depends on the UA, the font, and/or the
 platform. However, once it's established that underlining an inline
 element works, it's possible to construct a reftest for underlining
 a block element, by constructing a reference using underlines on a
 ```<span>``` that wraps all the content inside the block.
 
-## Example Reftests
-
-This example follows the recommended approach in being a
-self-describing test as it has a simple statement on the page
-describing how it should render to pass the tests.
-
-### Test File
-
-This test verifies that a right-to-left rendering of **SAW** within a
-```<bdo>``` element displays as **WAS**.
-
-```html
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>BDO element dir=rtl</title>
-<link rel="help" href="https://html.spec.whatwg.org/#the-bdo-element">
-<meta name="assert" content="BDO element's DIR content attribute renders corrently given value of 'rtl'.">
-<link rel="match" href="test-bdo-001.html">
-<p>Pass if you see WAS displayed below.</p>
-<bdo dir="rtl">SAW</bdo>
-```
-
-### Reference File
-
-The reference file must look exactly like the test file,
-except that the code behind it is different.
-
-* All metadata is removed.
-* The ```title``` need not match.
-* The markup that created the actual test data is
-  different: here, the same effect is created with
-  very mundane, dependable technology.
-
-```html
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>HTML Reference File</title>
-<p>Pass if you see WAS displayed below.</p>
-<p>WAS</p>
-```
-
 [general guidelines]: general-guidelines
 [rendering]: rendering