Check browser compile compatibility in integration tests

This commit is contained in:
mrjvs 2023-12-24 18:02:56 +01:00
parent c00ed69801
commit 0fe2fb40e1
7 changed files with 1087 additions and 1 deletions

1031
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@
"test": "vitest run",
"test:dev": "ts-node ./src/dev-cli.ts",
"test:watch": "vitest",
"test:integration": "node ./tests/cjs && node ./tests/esm",
"test:integration": "node ./tests/cjs && node ./tests/esm && node ./tests/browser",
"test:coverage": "vitest run --coverage",
"lint": "eslint --ext .ts,.js src/",
"lint:fix": "eslint --fix --ext .ts,.js src/",
@ -65,6 +65,7 @@
"eslint-plugin-prettier": "^4.2.1",
"node-fetch": "^2.7.0",
"prettier": "^2.6.2",
"puppeteer": "^21.6.1",
"spinnies": "^0.5.1",
"ts-node": "^10.9.1",
"tsc-alias": "^1.6.7",

1
tests/browser/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
dist

11
tests/browser/index.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Browser integration test</title>
</head>
<body>
<script type="module" src="index.ts"></script>
</body>
</html>

8
tests/browser/index.ts Normal file
View File

@ -0,0 +1,8 @@
import { makeProviders, makeStandardFetcher, targets } from '../../lib/index.mjs';
(window as any).TEST = () => {
makeProviders({
fetcher: makeStandardFetcher(fetch),
target: targets.ALL,
});
}

View File

@ -0,0 +1,3 @@
{
"main": "startup.mjs"
}

31
tests/browser/startup.mjs Normal file
View File

@ -0,0 +1,31 @@
import { build, preview } from 'vite';
import puppeteer from 'puppeteer';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const root = dirname(fileURLToPath(import.meta.url));
await build({
root,
});
const server = await preview({
root,
});
let browser;
try {
browser = await puppeteer.launch({
headless: 'new',
args: ['--no-sandbox', '--disable-setuid-sandbox'],
});
const page = await browser.newPage();
await page.goto(server.resolvedUrls.local[0]);
await page.waitForFunction('!!window.TEST', { timeout: 5000 });
await page.evaluate(() => {
window.TEST();
});
} finally {
server.httpServer.close();
await browser.close();
}
console.log('Success!');