nushell / reedline

A feature-rich line editor - powering Nushell
https://docs.rs/reedline/
MIT License
549 stars 155 forks source link

Support automated UX testing #847

Open YizhePKU opened 1 month ago

YizhePKU commented 1 month ago

This PR adds support for automated UX testing using a terminal emulator. It implements most of the checkboxes in UX_TESTING.md as automated tests.

This is a reworked and improved version of my previous PR on automated UX tests. I've made a new crate alacritty-test containing the tools. The new implementation uses polling to read from PTYs efficiently and reliably. If everything works out, we can adopt this in Nushell as well.

sholderbach commented 1 month ago

What is your plan for the alacritty-test crate regarding future development/maintenance? Attention to reedline is fluctuating on the maintainer side so we will prefer something relatively stable, so we don't have to chase CI failures if nothing changes on the reedline side. At the same having a good testing framework with good ergonomics is probably the thing we want for the future, so we get less regressions in the previously untested interactive part.

YizhePKU commented 1 month ago

What is your plan for the alacritty-test crate regarding future development/maintenance?

I think Reedline can just pin to a specific commit, like this PR is currently doing. PTY-related tests can be flaky, so I think that's the best way to ensure things don't break randomly.

I made alacritty-test specifically for Nushell/Reedline, so I'll only update it when I'm making a PR for Nushell/Reedline anyways.