google-summer-of-code
                                
                                 google-summer-of-code copied to clipboard
                                
                                    google-summer-of-code copied to clipboard
                            
                            
                            
                        [Idea]: use ES6 modules for running unit tests and benchmarks in web browsers
Idea
Currently, when generating stdlib API documentation, we generate UMD bundles for unit tests and benchmarks. When a user navigates to our package documentation, they can load unit tests and benchmarks and have those run without needing to setup a local environment. The pain point here is that creating separate bundles for each package is time consuming and adds significant heft to the www repo.
The goal of this idea is to refactor the way we support unit tests and benchmarks to use ES6 modules and potentially skip bundling altogether. This has the downside of not supporting older browsers which don't support the <module> tag, but is probably fine considering that running package unit tests and benchmarks is likely a forward looking concern.
Expected Outcomes
Users will be able to run unit tests and benchmarks directly in their web browsers by navigating to project API documentation and what is loaded are ES6 modules, not UMD bundles.
Involved Software
No other software is necessary.
Prerequisite Knowledge
JavaScript, Node.js, HTML/CSS, JSX/React.
Difficulty
Intermediate.
Project Length
350 hours.
Potential Mentors
@kgryte @Planeshifter @steff456
@Planeshifter Now that we have UMD and ES Module builds in standalone repositories, this could be more straightforward, I believe, as we may be able to load directly using JSDelivr rather than the stdlib hosted server. What are your thoughts?
@kgryte Yes, should be fairly straightforward to load the ES modules from JSDelivr. This project may be helped by writing own test runner as planned (https://github.com/stdlib-js/google-summer-of-code/issues/7).
Good point. We'd need to account for 3rd party dev dependencies (e.g., tape, proxyquire, and the like).