| OLD | NEW |
| 1 `test` provides a standard way of writing and running tests in Dart. | 1 `test` provides a standard way of writing and running tests in Dart. |
| 2 | 2 |
| 3 ## Writing Tests | 3 ## Writing Tests |
| 4 | 4 |
| 5 Tests are specified using the top-level [`test()`][test] function, and test | 5 Tests are specified using the top-level [`test()`][test] function, and test |
| 6 assertions are made using [`expect()`][expect]: | 6 assertions are made using [`expect()`][expect]: |
| 7 | 7 |
| 8 [test]: http://www.dartdocs.org/documentation/test/latest/index.html#test/test@i
d_test | 8 [test]: http://www.dartdocs.org/documentation/test/latest/index.html#test/test@i
d_test |
| 9 [expect]: http://www.dartdocs.org/documentation/test/latest/index.html#test/test
@id_expect | 9 [expect]: http://www.dartdocs.org/documentation/test/latest/index.html#test/test
@id_expect |
| 10 | 10 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 ### Platform Selector Syntax | 127 ### Platform Selector Syntax |
| 128 | 128 |
| 129 Platform selectors can contain identifiers, parentheses, and operators. When | 129 Platform selectors can contain identifiers, parentheses, and operators. When |
| 130 loading a test, each identifier is set to `true` or `false` based on the current | 130 loading a test, each identifier is set to `true` or `false` based on the current |
| 131 platform, and the test is only loaded if the platform selector returns `true`. | 131 platform, and the test is only loaded if the platform selector returns `true`. |
| 132 The operators `||`, `&&`, `!`, and `? :` all work just like they do in Dart. The | 132 The operators `||`, `&&`, `!`, and `? :` all work just like they do in Dart. The |
| 133 valid identifiers are: | 133 valid identifiers are: |
| 134 | 134 |
| 135 * `vm`: Whether the test is running on the command-line Dart VM. | 135 * `vm`: Whether the test is running on the command-line Dart VM. |
| 136 | 136 |
| 137 * `dartium`: Whether the test is running on Dartium. |
| 138 |
| 137 * `chrome`: Whether the test is running on Google Chrome. | 139 * `chrome`: Whether the test is running on Google Chrome. |
| 138 | 140 |
| 139 * `firefox`: Whether the test is running on Mozilla Firefox. | 141 * `dart-vm`: Whether the test is running on the Dart VM in any context, |
| 140 | 142 including Dartium. It's identical to `!js`. |
| 141 * `dart-vm`: Whether the test is running on the Dart VM in any context. For now | |
| 142 this is identical to `vm`, but it will also be true for Dartium in the future. | |
| 143 It's identical to `!js`. | |
| 144 | 143 |
| 145 * `browser`: Whether the test is running in any browser. | 144 * `browser`: Whether the test is running in any browser. |
| 146 | 145 |
| 147 * `js`: Whether the test has been compiled to JS. This is identical to | 146 * `js`: Whether the test has been compiled to JS. This is identical to |
| 148 `!dart-vm`. | 147 `!dart-vm`. |
| 149 | 148 |
| 150 * `blink`: Whether the test is running in a browser that uses the Blink | 149 * `blink`: Whether the test is running in a browser that uses the Blink |
| 151 rendering engine. | 150 rendering engine. |
| 152 | 151 |
| 153 * `windows`: Whether the test is running on Windows. If `vm` is false, this will | 152 * `windows`: Whether the test is running on Windows. If `vm` is false, this will |
| 154 be `false` as well. | 153 be `false` as well. |
| 155 | 154 |
| 156 * `mac-os`: Whether the test is running on Mac OS. If `vm` is false, this will | 155 * `mac-os`: Whether the test is running on Mac OS. If `vm` is false, this will |
| 157 be `false` as well. | 156 be `false` as well. |
| 158 | 157 |
| 159 * `linux`: Whether the test is running on Linux. If `vm` is false, this will be | 158 * `linux`: Whether the test is running on Linux. If `vm` is false, this will be |
| 160 `false` as well. | 159 `false` as well. |
| 161 | 160 |
| 162 * `android`: Whether the test is running on Android. If `vm` is false, this will | 161 * `android`: Whether the test is running on Android. If `vm` is false, this will |
| 163 be `false` as well, which means that this *won't* be true if the test is | 162 be `false` as well, which means that this *won't* be true if the test is |
| 164 running on an Android browser. | 163 running on an Android browser. |
| 165 | 164 |
| 166 * `posix`: Whether the test is running on a POSIX operating system. This is | 165 * `posix`: Whether the test is running on a POSIX operating system. This is |
| 167 equivalent to `!windows`. | 166 equivalent to `!windows`. |
| 168 | 167 |
| 169 For example, if you wanted to run a test on every browser but Chrome, you would | 168 For example, if you wanted to run a test on every browser but Chrome, you would |
| 170 write `@TestOn("browser && !chrome")`. | 169 write `@TestOn("browser && !chrome")`. |
| 171 | 170 |
| 171 ### Running Tests on Dartium |
| 172 |
| 173 Tests can be run on [Dartium][] by passing the `-p dartium` flag. If you're |
| 174 using the Dart Editor, the test runner will be able to find Dartium |
| 175 automatically. However, since it usually isn't installed on a system-wide basis, |
| 176 the test runner may not otherwise be able to find the Dartium executable. To use |
| 177 it without the Editor, make sure there's an executable called `dartium` (on Mac |
| 178 OS or Linux) or `dartium.exe` (on Windows) on your system path. |
| 179 |
| 180 [Dartium]: https://www.dartlang.org/tools/dartium/ |
| 181 |
| 182 [In the future][issue 63], there will be a more explicit way to configure the |
| 183 location of the executable. |
| 184 |
| 185 [issue 63]: https://github.com/dart-lang/test/issues/63 |
| 186 |
| 172 ## Asynchronous Tests | 187 ## Asynchronous Tests |
| 173 | 188 |
| 174 Tests written with `async`/`await` will work automatically. The test runner | 189 Tests written with `async`/`await` will work automatically. The test runner |
| 175 won't consider the test finished until the returned `Future` completes. | 190 won't consider the test finished until the returned `Future` completes. |
| 176 | 191 |
| 177 ```dart | 192 ```dart |
| 178 import "dart:async"; | 193 import "dart:async"; |
| 179 | 194 |
| 180 import "package:test/test.dart"; | 195 import "package:test/test.dart"; |
| 181 | 196 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 | 296 |
| 282 In this case, the port is `8081`. In another terminal, pass this port to | 297 In this case, the port is `8081`. In another terminal, pass this port to |
| 283 `--pub-serve` and otherwise invoke `pub run test:test` as normal: | 298 `--pub-serve` and otherwise invoke `pub run test:test` as normal: |
| 284 | 299 |
| 285 ```shell | 300 ```shell |
| 286 $ pub run test:test --pub-serve=8081 -p chrome | 301 $ pub run test:test --pub-serve=8081 -p chrome |
| 287 "pub serve" is compiling test/my_app_test.dart... | 302 "pub serve" is compiling test/my_app_test.dart... |
| 288 "pub serve" is compiling test/utils_test.dart... | 303 "pub serve" is compiling test/utils_test.dart... |
| 289 00:00 +42: All tests passed! | 304 00:00 +42: All tests passed! |
| 290 ``` | 305 ``` |
| OLD | NEW |