93 lines
2.6 KiB
TypeScript
93 lines
2.6 KiB
TypeScript
import { describe, it, expect, beforeEach } from 'vitest';
|
|
import { TestProject } from '../utils';
|
|
import { resetBundleIncrement } from '~/core/builders/vite/plugins';
|
|
|
|
describe('Analysis', () => {
|
|
beforeEach(() => {
|
|
resetBundleIncrement();
|
|
});
|
|
|
|
it('should output a stats.html with no part files by default', async () => {
|
|
const project = new TestProject();
|
|
project.addFile('entrypoints/popup.html');
|
|
project.addFile('entrypoints/options.html');
|
|
project.addFile(
|
|
'entrypoints/background.ts',
|
|
'export default defineBackground(() => {});',
|
|
);
|
|
|
|
await project.build({
|
|
analysis: {
|
|
enabled: true,
|
|
},
|
|
});
|
|
|
|
expect(await project.fileExists('stats.html')).toBe(true);
|
|
expect(await project.fileExists('.output/chrome-mv3/stats-0.json')).toBe(
|
|
false,
|
|
);
|
|
});
|
|
|
|
it('should save part files when requested', async () => {
|
|
const project = new TestProject();
|
|
project.addFile('entrypoints/popup.html');
|
|
project.addFile('entrypoints/options.html');
|
|
project.addFile(
|
|
'entrypoints/background.ts',
|
|
'export default defineBackground(() => {});',
|
|
);
|
|
|
|
await project.build({
|
|
analysis: {
|
|
enabled: true,
|
|
keepArtifacts: true,
|
|
},
|
|
});
|
|
|
|
expect(await project.fileExists('stats.html')).toBe(true);
|
|
expect(await project.fileExists('stats-0.json')).toBe(true);
|
|
expect(await project.fileExists('stats-1.json')).toBe(true);
|
|
});
|
|
|
|
it('should support customizing the stats output directory', async () => {
|
|
const project = new TestProject();
|
|
project.addFile('entrypoints/popup.html');
|
|
project.addFile('entrypoints/options.html');
|
|
project.addFile(
|
|
'entrypoints/background.ts',
|
|
'export default defineBackground(() => {});',
|
|
);
|
|
|
|
await project.build({
|
|
analysis: {
|
|
enabled: true,
|
|
outputFile: 'stats/bundle.html',
|
|
},
|
|
});
|
|
|
|
expect(await project.fileExists('stats/bundle.html')).toBe(true);
|
|
});
|
|
|
|
it('should place artifacts next to the custom output file', async () => {
|
|
const project = new TestProject();
|
|
project.addFile('entrypoints/popup.html');
|
|
project.addFile('entrypoints/options.html');
|
|
project.addFile(
|
|
'entrypoints/background.ts',
|
|
'export default defineBackground(() => {});',
|
|
);
|
|
|
|
await project.build({
|
|
analysis: {
|
|
enabled: true,
|
|
outputFile: 'stats/bundle.html',
|
|
keepArtifacts: true,
|
|
},
|
|
});
|
|
|
|
expect(await project.fileExists('stats/bundle.html')).toBe(true);
|
|
expect(await project.fileExists('stats/bundle-0.json')).toBe(true);
|
|
expect(await project.fileExists('stats/bundle-1.json')).toBe(true);
|
|
});
|
|
});
|