Closed novemberborn closed 7 years ago
Am I confused or we already do this via #390?
Yeah, but we don't transpile source files at all now. So we may start with that.
Yes, that's the point of this issue. We'd have to use the approach from caching-precompiler
to get the compiled sources into the child processes, and we have to use glob patterns to match all potential sources before tests run so they're available synchronously.
we have to use glob patterns to match all potential sources ...
Or use babel-detective
which is probably more performant (the AST is being scanned already, so it should be faster than a regexp). I created it with this idea in mind.
Either way this won't do much good for dynamic require
s. I did experiment with this, which could be used as a fallback for dynamic require
calls.
I think a first step should be supporting transpilation of helper files (files in the test directory prefixed with _
, or in test/helpers
). Sources would get a different Babel transform without power-assert
, so helpers seems like an easier place to start.
For "non-Babel" transpilers (typescript, etc), we would have to create a plugin ecosystem. We would still need to finish up with Babel for powerAssert support.
Conceivably, users may want to chain custom transforms.
See transform-chain
. It could help with all this.
This will be tackled through RFC 001. See the project here: https://github.com/avajs/ava/projects/1.
@novemberborn link is dead so I'm not sure where to look
Yea, I pulled the RFC recently. https://github.com/avajs/ava/issues/1908 is probably the best issue to track for now.
To improve startup time (#78) we could provide a framework where source files are optimistically transpiled and cached in the main process. No require hooks would be required in the test files avoiding the Babel startup penalty. Thanks @tomazzaman for the suggestion.
--require
hooks won't do, we should support plugins and wrap them like howcaching-precompiler
wraps Babel--source
patterns so would require useful error messaging somehow