mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
|
import fs from "node:fs/promises";
|
||
|
import jsdom, { JSDOM } from "jsdom";
|
||
|
import path from "node:path";
|
||
|
import { fileURLToPath } from "node:url";
|
||
|
import { runRollupEsmAndCommonJs, runRollupPureEsm } from "./lib/run-rollup.js";
|
||
|
import { runWebpack } from "./lib/run-webpack.js";
|
||
|
import { cleanTmpBundlersDir } from "./lib/utils.js";
|
||
|
|
||
|
const dirname = path.dirname( fileURLToPath( import.meta.url ) );
|
||
|
|
||
|
async function runJSDOMTest( { title, folder } ) {
|
||
|
console.log( "Running bundlers tests:", title );
|
||
|
|
||
|
const template = await fs.readFile( `${ dirname }/test.html`, "utf-8" );
|
||
|
const scriptSource = await fs.readFile(
|
||
|
`${ dirname }/tmp/${ folder }/main.js`, "utf-8" );
|
||
|
|
||
|
const html = template
|
||
|
.replace( /@TITLE\b/, () => title )
|
||
|
.replace( /@SCRIPT\b/, () => scriptSource );
|
||
|
|
||
|
const virtualConsole = new jsdom.VirtualConsole();
|
||
|
virtualConsole.sendTo( console );
|
||
|
virtualConsole.on( "assert", ( success, message ) => {
|
||
|
if ( !success ) {
|
||
|
process.exitCode = 1;
|
||
|
}
|
||
|
} );
|
||
|
|
||
|
new JSDOM( html, {
|
||
|
resources: "usable",
|
||
|
runScripts: "dangerously",
|
||
|
virtualConsole
|
||
|
} );
|
||
|
|
||
|
if ( process.exitCode === 0 || process.exitCode == null ) {
|
||
|
console.log( "Bundlers tests passed for:", title );
|
||
|
} else {
|
||
|
console.error( "Bundlers tests failed for:", title );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function buildAndTest() {
|
||
|
await cleanTmpBundlersDir();
|
||
|
|
||
|
await Promise.all( [
|
||
|
runRollupPureEsm(),
|
||
|
runRollupEsmAndCommonJs(),
|
||
|
runWebpack()
|
||
|
] );
|
||
|
|
||
|
await Promise.all( [
|
||
|
runJSDOMTest( {
|
||
|
title: "Rollup with pure ESM setup",
|
||
|
folder: "rollup-pure-esm"
|
||
|
} ),
|
||
|
|
||
|
runJSDOMTest( {
|
||
|
title: "Rollup with ESM + CommonJS",
|
||
|
folder: "rollup-commonjs"
|
||
|
} ),
|
||
|
|
||
|
runJSDOMTest( {
|
||
|
title: "Webpack",
|
||
|
folder: "webpack"
|
||
|
} )
|
||
|
] );
|
||
|
|
||
|
// The directory won't be cleaned in case of failures; this may aid debugging.
|
||
|
await cleanTmpBundlersDir();
|
||
|
}
|
||
|
|
||
|
await buildAndTest();
|