TDML Roadmap #126
michael-hoke
started this conversation in
Ideas
Replies: 1 comment 1 reply
-
TDML + XML object binding update: apache#594 was closed.
For the future, we should remove the TDML code from the Scala backend:
It was also suggested that we could have an alternative encoding of tests, say in JSON, which might be easier to support in multiple languages. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This discussion is intended to be a reference for where the TDML feature set will be going. See the following tickets for pieces: daffodil-vscode #594, daffodil #1057, daffodil-vscode #595, daffodil-vscode #596, daffodil-vscode #811
JAXB Bindings
The first major change will be to move the JAXB bindings from the VSCode extension into daffodil. This is (hopefully) nearly complete, and we are hoping to make it into daffodil's next release. Once that happens, we can remove the bindings from the daffodil-vscode codebase and pull the generated bindings from the appropriate daffodil-jar. This will likely require a minor refactor in the existing backend TDML code.
GUI Editor
The next major change will be to add a GUI editor for TDML into the extension. The first thing to include is language support for TDML. This is not intended to include autocomplete/intellisense - language support, in this context, means that VSCode is able to open a tdml file and properly identify it as TDML language. This change will include a GUI interface for modifying a TDML file.
Extremely crude sketch of what the GUI could look like:
On the left, there is a list of all test cases in the currently opened document. This list should dynamically resize when test cases are added/removed. There should also be a button to add a new test case. The center contains text boxes for the name/description of the current test case. The text box should only become editable when appending a new test case. If VSCode supports this, add "suggestion" text to the text boxes when initially switching to append a new test case. I can't remember what this is actually called, but it puts text into the text box, even though the text box thinks it is empty. We should put the current default name/description here. We want to provide some sort of help to the user on what to put in the fields, but we don't want them to have to select and delete our sample text. If the append button is clicked and a field is empty, we should use our default when creating the new test case. The 'Append Test Case' button should be disabled (or even removed?) when viewing an existing test case.
Does it even make sense to have some of this edit/append functionality? What is the use case for a user actually using these to add a manual test case or editing an existing test? Do we need to add some kind of smart check to make sure that the files exists before we allow the edit to go through?
I think we should make edit/delete semi-hidden - either behind a right click of the test case on the left side or through the command palette. Clicking on an existing test case should treat the test case as read only. If the user wants to edit, they can use whatever mechanism we end up using... This definitely makes sense for delete, but edit?
The 'Raw View' button at the top right simply hides the GUI in favor of the 'default' raw text view of the TDML file. This button should be an afterthought. If we cannot easily provide this, we should drop it from this ticket's scope and create a new ticket to add it.
Other Changes
IMPORTANT: See daffodil-vscode #625 for naming suggestions. We can use this opportunity to rename our variables to lessen confusion down the road.
Keep in mind
If time permits, consider investigating Selenium for GUI test cases.
Add Testing Support
Using VSCode's builtin Debug Integration (https://code.visualstudio.com/api/extension-guides/testing), add the test cases in the currently opened file to this window. This might be redundant with the tabs on the left hand side... Maybe there's a way to consolidate them or have only one showing at a time?
Add Stack Trace Support
This depends on having the ability to pass information back from the server to the client. In the case of an error during a DFDL parse, we should get a stacktrace. If this trace is sent back to the client, we would be able to add it into the generated TDML file
Beta Was this translation helpful? Give feedback.
All reactions