Commit Graph

13 Commits

Author SHA1 Message Date
Isaiah Odhner
b9822a8290 Fix flaky tests due to cursor blinking 2023-09-08 20:03:17 -04:00
Isaiah Odhner
57ae2e8d44 Clean up 2023-09-08 20:03:17 -04:00
Isaiah Odhner
5a66037592 Create script for extracting SVGs from ambr files 2023-09-08 14:44:56 -04:00
Isaiah Odhner
18c38fd3e0 Merge snapshot results for ASCII-only and Unicode UI tests
I'm basically doing TDD to snapshot testing!
I'm creating tests that don't pass yet, setting up an expectation
that the app match the given screenshots, which is funny in a nice
"improper hierarchy" sort of way, but it's possible because I do
actually have the app rendering how I want, just only in isolation.
If I run the ascii_only tests by themselves, I can get good results
from them, but running them interwoven with default Unicode-using UI
tests doesn't work yet, since the ASCII-only mode permanently changes
how certain widgets render, for the life of the process, so that's
what I'm applying TDD to: making it toggleable at runtime.

I commented out the Unicode tests, and uncommented the ASCII-only tests,
renamed test_snapshots.ambr to test_snapshots_ascii.ambr,
reverted the changes to test_snapshots.ambr to get the Unicode version,
ran my new merge_ambr.py script to join the sets of snapshots,
then replaced test_snapshots.ambr with test_snapshots_merged.ambr
Finally, I uncommented both sets of tests, and I'm ready to do TDD!
2023-09-08 14:44:56 -04:00
Isaiah Odhner
d49c144a96 Create script for merging ambr files 2023-09-08 11:28:14 -04:00
Isaiah Odhner
8a4ca8d380 Fix toggling light/dark mode not affecting file/folder icons in tree
I already fixed my first bug caught by the snapshot testing!
These variables were intended as constants, but were being mutated.
I recall writing it as `prefix = (...).stylize_before(...)` and then
moving it to a new line when I realized it was mutation-style method,
not so much the chaining-style factory that I wanted, but I conceived
of it too much as a stylistic distinction in the moment, looking back.
Mutation style means mutation!

Side note: tests also showed a spurious change of a cursor blinking.
I don't really know whether that's in this changeset or not, because
the workflow involves re-running the tests to update the baseline, and
the nice visual diffs provided in the snapshot report aren't available
when viewing the commit diff.
1. If the SVGs were separate files, I could see the diffs on GitHub
   or in GitHub Desktop, and maybe some other Git clients.
   It would also make it a lot easier to simply view the baselines,
   which is useful in general.
2. It would be nice if built-in components didn't cause spurious diffs,
   including the Input's cursor blinking and the Header's clock ticking.
   I already removed the clock from my gallery app, because it's a sort
   of trivial decision, but Inputs I'll have to reckon with.
2023-09-08 02:31:54 -04:00
Isaiah Odhner
f09f5fbf55 Test light and dark theme variations with a pytest fixture
First I tried setting PYTEST_TEXTUAL_PAINT_ARGS as an environment variable, to be interpreted by args.py, but it turns out args.py is only executed once, not once per test. It's not using subprocesses, only importing and reimporting the app code, and instantiating new App instances, so parts of the code that are at the top level of modules is only evaluated once.

So I found a new strategy, of importing the `args` object in the test fixture and modifying it directly.

I also realized the --ascii-only option permanently modifies Textual's widgets and borders, and my own widgets, for the life of the process, so I'm holding off on that one. I should be able to make --ascii-only mode more dynamic, and could even target it as a runtime toggle, as a goal, since that's basically what I'll need to achieve to get it working for the tests, but thinking of it as a feature is more fun.
2023-09-08 02:18:48 -04:00
Isaiah Odhner
11939b6603 Resize screenshots for some tests 2023-09-07 17:46:48 -04:00
Isaiah Odhner
7d88cbe44f Rename test to match 2023-09-07 17:23:35 -04:00
Isaiah Odhner
f8f2d5ea01 Add snapshot tests for more keyboard-accessible dialogs 2023-09-07 17:22:34 -04:00
Isaiah Odhner
ca23a7712c Remove clock from gallery app
I don't feel like trying to figure out how to spoof the time for snapshot testing.
2023-09-07 16:53:31 -04:00
Isaiah Odhner
bcfddbe2fa Add first baseline for visual regression testing
It works!
2023-09-07 16:41:59 -04:00
Isaiah Odhner
ed97f0afb0 WIP: set up snapshot testing 2023-09-07 15:19:10 -04:00