-
Type:
New Feature
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Correctness
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Textual is a python library that makes it easy to build fancy terminal UIs. We should use it to provide a nicer experience when running tests with resmoke. To make the most of this, we would want to buffer the output per test either in memory or to files. Using files makes it possible to relaunch the gui and examine the output of a prior run.
- If launched with no tests to run:
- Show a list of suites and/or tests to choose from. Ideally the suite selector should show a preview with the setting for that suite.
- While tests are running:
- Show a progress bar for current suite. If running multiple suites, or using repeat, consider showing multiple bars.
- Show all currently running tests and how long each has been running for (similar to bazel).
- Show any tests that have already failed.
- After tests have completed:
- show results grouped by success/failure
- Make it easy to rerun all tests/all failing tests/a single test, ideally offering to rebuild first.
We can have a nice log viewer, both for viewing the results after tests run or live while they are running. Here's a simple demo app (toolong) created by one of the authors of textual to show it being used as a log viewer. We could do something similar, but build in support for some mongo-specific niceties.
- autoseek to first recognized failure line using existing heuristics. Can show a popup with a list of all failure lines to allow quick seeking
- automatic decoding of backtraces. Can even load a navigable stack trace showing the syntax-highlighted source code (textual has built-in support)
- For unittests, parse the output to provide a navigable outline pane with suites and tests, ideally indicating pass/fail for each.
- Key(s) to toggle filtering to the current line's thead/process/component. Or just "dim" everything else, so that it is still there, but easier to ignore.
- Smart syntax highlighting to give each thread/process/component a different color.
If anyone else has ideas for what we could do with a resmoke TUI, feel free to add on in comments! I think this list will make a good seed for a suggested skunkworks project.