Is there is a way to reset the vscode user interface between tests, or at least before/after a full test run? Specifically to clear dialogs.
Background
I have a project created using the yeoman code generator recommended in the vscode extension development tutorials.
When I run the tests by launching "Extension Tests" from the Debug tab, a dedicated vscode window appears to host the running tests.
One of the tests triggers showing of a modal warning dialog, created by calling:
vscode.window.showWarningMessage(message, { modal: true })
However, these dialogs seem to persist between test-runs, unless I manually click to close them before the test window closes.
Worse, the dialog instances seem to aggregate - if I don't manually close a dialog at the end of one run, the same instance reappears the next time in addition to the new one added by the new run of the tests.
For the large majority of my tests I am stubbing UI interactions to avoid this issue. But I'd like solve this problem so I can have at least a few focused tests that drive the UI.
I have looked through the extension reference and some existing extensions but haven't spotted the solution yet.
Related
Can anyone explain these three debug symbols on VSCode I have found on the internet?
My vs code has the one with the play icon.
All demos online on debugging have the one in the middle. How do I get that?
Also, node js debugging is installed but I think it shows as disabled, with no option I can find to enable it.
To answer your question directly [TL;DR]: you already have it if you are using the latest version of vscode. It will take you to the same view as the one on the right
If you look at the codicon libray ref the middle one you pointed out is not present.
Visual Studio Code made changes in February 2020 ref that incorporates running and debugging to be something more harmonious:
User studies revealed that new users have difficulties finding how to run their programs in VS Code. One reason is that the existing "Debugging" functionality is not something that they relate to "Running" a program. For that reason, we are making "Run" more prominent in the UI.
The main menu Debug has become the Run menu.
The Run and Debug view has become the Run view and the corresponding Activity Bar icon now shows a large "Play" icon with a small "bug" decoration.
So in other words, there is no difference. The 'Run' and 'Debug' view is synonymous and the icon reflects those changes. As they noted, the Debug view is now called the 'Run' view, but it still offers debugging and breakpoints.
There are 2 possibilities you are running into however:
The tutorials and guides you are using are out-dated (showing an outdated version of vscode)
The tutorial or guide is using an extension that offers debugging capabilities. Extensions have some control over the icon you see
The extension is for single file debugging, according to the June 2020 ref notes, vscode recommends the following:
For debug extensions that want to improve the single file debug experience by adding a "Run" and/or "Debug" button to the editor, we recommend following these guidelines for a consistent look and feel:
Contribute Run and/or Debug commands in the package.json (see Mock Debug):
Use the command titles "Run File"/"Debug File" or "Run Python File"/"Debug Python File".
Use the $(play) icon for Run and $(debug-alt-small) for Debug.
Where their codicon library was updated in June to reflect the following:
As you can see, none of them are prefixed with verbiage like 'run', but they all represent the same functionality.
Additionally, you may see this icon as well:
This represents the panel (view) where the output of your debug will go.
When running my code in debug mode, I keep getting 2 error messages:
Could not delete [path_to]\productiondb.log. May be locked by another process
I don't know what process might be locking it. It comes when I make changes to the code while my Pivotal tc Server is running in debug mode, but it dosent seem to create a lot's of trouble. Sometimes however, I get this warning:
Also due to some changes. I usally just restart the server and move on. This isen't the real problem, the real problem is that I get these messages when I havent doen any changes. Somethimes it accures when I run a certen part of the code, other times i occurs when I open certen codes in sts, however, it doen't seem to stop at the same place twice.
I am suspecting that this has something to do with git. I am using git to change between versions and doing tests. So I am thinking that STS has some of the code in memory from before I changed branche with git, and isen't updating it before I run or open the file with that code. But I am rather new to both sts and git, and can't be certan that it would work that way. If it is, does anyone know how to update sts after I have changed branch? If it is not, does anyone know what might causing it?
If you run an app in debug mode, the Eclipse Debugger tells the application when code gets changed and tries to use the debug API to swap in the new code into the running application. This is especially useful if you debug your code, hit a breakpoint, step through the code, fit the issue, change the code, and press save. At that moment, the Eclipse compiler updates the class file and tells the running JVM to swap in the new code. If that succeeds, the debugger will jump back to the last stack frame and the execution of your app will continue with the beginning of the method that you entered. This allows you to directly continue to debug and step through the updated code without restarting the app.
While this is a great feature of the JVM, it is very limited in terms of what scope of changes to the classes the JVM can deal with while doing this hot-swap. It is usually limited to method implementations. So adding new methods, adding or deleting members of the class, etc, are not supported. As a result, the above screenshot will appear. It means that the JVM wasn't able to hot-swap the changed code and will continue to run with the previously loaded code instead of the changed one.
With Pry (but also with Rubymine), I'm trying to debug a certain point in the code (using binding.pry). After calling Capybara's save_screenshot, I'm unable to execute any Capybara related commands (all commands die on time-out). This works out of a "debug mode" and in other web-drivers like Poltergeist.
I took a couple of hours today trying to debug it. I think I found the problem - or at least a way around it.
Our web site has a couple of links that open content in another browser window. Since the automation is quite ancient, and in that time Selenium didn't have a decent way to switch window-context, what we do is to visit the opened page by URL, and by this keep only a single window open at any given time.
This works, but something strange happens when running this test on "debug mode" (using binding.pry for example). Right before we do any actions on that specific page, we take a screen-shot using Capybara's save_screenshot method. On debug this results a corrupted image, and any following Capybara methods will fail on time-out. Opening this page using the link, and handling the windows context switching with Capybara's handle_window method solves the issue. It's still a mystery why it only happens with Capybara wekit though (as other web-drivers work properly). I'm guessing that perhaps the DOM might be structured differently.
In Netbeans I have the option of setting a "Main Project" which basically means if you hit "run", it will automatically execute the main class for that project.
This is convenient for various reasons, for example if you have one project depending on another project and you want to quickly test your changes in your main project.
Does a similar concept exist in eclipse?
Currently, I click on the desired project and then ctrl+F11 to run that project, but it would be convenient if I could just hit F11 or something without the extra action.
I had that same problem. My workaround is to make eclipse always launch the previously launched application. You can do that in settings, Run/Debug | Launching, in the Launch Operation section, select:
[x] Always launch the previously launched application
When you want to launch something different, launch it explicitly, and after that you can relaunch easily with Control F11.
This is very useful for me in practice, as most of the time I work on one thing and relaunch it several times, and rarely need to switch between launchers. (As an aside: in IntelliJ it's nice that I can easily switch between launchers using a simple drop-down list, without manually navigating to the other project/thing I want to switch to.)
I'm new to Eclipse. I may need a better understanding or a plugin that would provide me with features described below. While doing some Android development, and I while making changes to my code at one point Eclipse warned me that this emulator doesn't support hot-swapping and if I want to disconnect. I'm used to see status in either the toolbar or in some log from Visual Studio. Is there a way to see this feedback in Eclipse?
My problem is that there are quite much implicit stuff in eclipse I would like get feedback of and control, like whether I'm
connected or not to a device,
if I'm attached to a process on it or not with debugger,
some kind of build log with a timestamp so I know it happened,
the automatic uninstalling and installing of the project on the device
which project is "active" ("featured") in "Run" and "Debug" buttons/configurations
Is there a plugin that can give me explicit commands over these automatic features? Like a toolbar or command. What I would expect of this tool:
be able to indicate the current status (eg. currently connected or not)
gives me control to eg. connect
gives me control to eg. disconnect
Preferably on a toolbar, as I know some of these are available as menu commands.
Furthermore I tried to configure my toolbar by Window menu -> Customize perspective..., but pin-pointing the features I want made my Eclipse put empty space up for the buttons I disabled, and next time I got to the same config screen it got the checkboxes wrong and displayed some stuff active what was actually disabled.