Closed bcpeinhardt closed 1 year ago
Okay fixed #3
Okay we also probably want a create docs mode. You should be able to pass --create-docs and create a pdf or html with screenshots taken at each command. Comments could be automatically formatted as the body text of the document, and commands can form sections.
Added a select command with some flexibility to it. Gonna work on the commands from 4. now.
Added drag-to command
Okay. Using webdriver_install and Command, sui now downloads, starts, and stops it's own webdrivers! Need to refactor so that clap parse right away, because it exiting threatens to leave drivers running. I've replaced the rust integration tests with just a folder of "test scripts". I'll need to implement rust tests eventually (at the library level), but for now this is more productive. I can do more research on testing cli applications.
Okay. Using webdriver_install and Command, sui now downloads, starts, and stops it's own webdrivers! Need to refactor so that clap parse right away, because it exiting threatens to leave drivers running. I've replaced the rust integration tests with just a folder of "test scripts". I'll need to implement rust tests eventually (at the library level), but for now this is more productive. I can do more research on testing cli applications.
CLI parsing moved out front
Just added "start from" functionality to the REPL in place of an "inline" command. I'm hesitant to add an inline command because it's counter to the principle of "write, run, throw away". Ooh, I should add that to the README.
7 and 8 are done. SchnauzerUI handles chromedriver and geckodriver on it's own, so starting the repl is a simple sui -i
.
Rather than a log, the output is a json test report and an html test report.
So the installation story is much improved. Users no longer have to add anything to their PATH except the sui binary. It's either a direct binary download or a single cargo install
for rust users.
For testing I have a main test script which produces a SchnauzerUI test report. It executes against a github pages site set up specifically for testing. If I add solid unit tests, it might be enough for the integration testing.
Just had an idea for a feature. Add a --first-case argument to the CLI. Makes it quicker to debug scripts which pull from a CSV data table because you don't have to run the whole suite!
There's a common validation flow we need to have a syntax for, which doesn't fit well with the single located element paradigm. Locate element and save as variable > Perform some other action that causes the element to change > Validate changes occurred on element. The solution may be to introduce saving elements as variables, requiring users to look at html to uniquely locate an element whose text changes throughout the test, or something more clever.
4 is complete, under drag-to and upload are all implemented and documented.
Re-add support for inputs directly following labels, even if they aren't correctly tied together.
Hey @bcpeinhardt thanks for the email! I love this project and have worked on similar things in private side projects.
What are your thoughts on the following cases with respect to SchnauzerUI?
Hey @dmgolembiowski ! SchnauzerUI is aimed empowering non-developers to do the 90% of Web Automation Testing, so each of my answers (which are thoughts off the top of my head that I'm 100% okay with being convinced otherwise about) will be colored by that goal.
click "submit"
being the same as locate "submit" and click
etc. I also probably want to support interaction with a programming language, most likely python or javascript. That could take the form of bindings to use SchnauzerUI in those languages and/or dedicated commands in SchnauzerUI for executing arbitrary code. An RPA tool that does both of these things is TagUI and it's really handy.
8.Background daemon: Yeah absolutely. The infrastructure for this is kind of in place, because SchnauzerUI scripts execute against running webdriver server compliant processes. So right now you can pass the byod
flag to turn off driver management and then specify a port for a running Selenium server. I would like to make a setup like that a lot simpler to set up and maintain though, so I could see including maybe subcommands to start and stop background services rather than doing it for every script run or something. To add on to all this, here are some other things rattling around in my brain.
The numbering got all fucked up but it'll be alright xD
So we now have a project board going for SchnauzerUI, so I'm gonna close this ticket :)
Creating this issue as an easy way to take notes for myself while I'm still rapidly adding things, but if you're not me feel free to comment on this issue and suggest a feature.
Logging bug where after the script errors and quits it logs the remaining parsed commands. Should be a quick fix.Some more commands. To start with,under
,drag-to
,upload
.Inline "command". I've decided not to have a ref command for referring to other scripts like TagUI. Rather, I'd like the repl to support inlining an existing script. We are optimizing for every script to be a straightforward, standalone description of an automated web process. This way scripts can easily be passed around in Jira, Teams, Slack, etc.An easy downoad and webdriver startup story. Running the program needs to be as easy assui -i
or opening the gui and pressing play.HTML test output. The logs are not nearly nice enough.And this is just a start. I'm gonna try to get this done, then I think it's definitely GUI time.