blob: 75972351e497c59a1fd364238615fe49b3f0e42c [file] [log] [blame] [view]
# Tests
Many of dartdoc's tests are large end-to-end tests which read real files in
real packages, in the `testing/` directory. These tests are found in
`test/end2end/`. Smaller unit tests are found in `test/` and other
subdirectories.
Many of the end-to-end test cases are being rewritten as unit tests. Eventually,
the content in the `testing/` directory should dwindle down to very targeted
tests which cannot be rewritten as unit tests.
There are some end-to-end tests which would require a serious refactoring of the
implementation in order to migrate to unit tests, such as any "tool" test
(testing the `{@tool}` directive).
## Manual testing
We have not set up programmatic tests for the behavior of the front-end. Two
areas of complexity which should be tested for any front-end change are:
1. Search - this includes the search box at the top right of the desktop view,
the search box in the mobile view, and the search results in the
`search.html` page.
2. "Base href" - This is complicated. But documentation for some code makes
use of the `base` HTML element, and some does not, as determined by the
`data-using-base-href` attribute on the `body` tag. Some URLs are constructed
using this attribute, so manual testing must include a case where it is used,
and a case where it is not.
For the "base-href" behavior, you can manually test with the following grinder
commands:
1. `dart run grinder serve-test-package-doc` - This serves the docs for the
`testing/test_package` package at http://localhost:8002/. The "base href"
settings result in a `body` tag like:
`<body data-base-href data-using-base-href="false">`.
2. `dart run grinder serve-pub-package` - This serves the docs for a pub
package at http://localhost:9000/. Environment variables are used to pass the
package name and version. For example:
`PACKAGE_NAME=collection PACKAGE_VERSION=1.17.0 dart run grinder serve-pub-package`.
The "base href" settings result in a `body` tag like:
`<body data-base-href="./" data-using-base-href="false">`. Serving up a
package's docs gives the opportunity for many search results.
The trick here is to test on different pages, which should change that
`data-base-href` attribute to different values. I think typically the value
is `"../"` on a library page or library member page, and `"../../"` on a
library member's member page (like a constructor of a class).
3. `flutter pub run grinder serve-flutter-docs` (warning: takes a crazy long time)
- This serves the docs for Flutter at http://localhost:8001/. The "base
href" settings result in a `body` tag like:
`<body data-base-href data-using-base-href="true">` and a `base` tag in the
`head` like `<base href="./flutter/">`.
TODO(srawlins): Yikes that flutter step is too expensive. Figure out a simple
grinder task for using "base href" with a simple package.