Convert mocked VSCode tests into integration tests PoC #510
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I created a small test framework on top of VSCode extension testing runner and playwright tests, extending the existing tests-integration suite.
The main idea is to be able to evaluate VSCode-side code from playwright tests, in a similar way as Page.evaluate / Page.evaluateHandle. Besides, I also introduced the
VSCodeHandle
to keep remote references to VSCode objects that those functions may return, as well as registering local listeners over remoteEventEmitter
s.Another nice thing with this approach is that using a library as
sinon
(I use it to decorate some vscode behaviour) is as simple as installing it withnpm install
and dynamically import it in the VSCode function to evaluate.With all this, I was able to create proxies with similar API to the existing mocked VSCode and converting test specs to use the integration library is as easy as changing the import, basically.