Since the tests need to interact with the desktop they are not a good fit for compile time where you dont usually have a running instance of your application. Stick to pure unit tests at build time. A better fit would be to use Release Management to orchastrate those tests.
That said, you can easily deploy your application (build or release) and the. Use the Functional Testing task to initiate your UI interactive tasks. You need a machine with the Test Agent deployed, but there is a task for that too.

Since Functional (end to end) tests interact with the desktop you can only run one at once. This is fine if you only take a few minutes, but as you get more functional teats this can take way longer. The Functional Testing task allows you to split the test execution across multiple agents so that you can run the tests in parallel.
Since your alternative is to configure your own Build Agent in interactive mode you need a server anyway. You would be more future proofing to use this model from the start as you can scale.
If a Visual Studio Test Adapter is not available for your framework then you can create your own to let Visual Studio, and additionally the Functional Testing plugin, detect and execute any test framework. For Javascript you will find http://mortenhoustonludvigsen.github.io/JsTestAdapter/CreatingATestAdapter/ has some awesome examples of how to create a Jasmin Test Adapter as an example.