import { esbuildPlugin } from '@web/dev-server-esbuild'; import { playwrightLauncher } from '@web/test-runner-playwright'; import { importMapsPlugin } from '@web/dev-server-import-maps'; import rollupUrl from 'rollup-plugin-url'; import { fromRollup } from '@web/dev-server-rollup'; const url = fromRollup(rollupUrl); /** @type {import('@web/dev-server').DevServerConfig} */ export default { nodeResolve: true, files: ['src/**/*.test.ts', 'libs/**/*.test.ts'], mimeTypes: { './public/**/*': 'js' }, plugins: [ { name: 'resolve-umbraco-and-vite-imports', // Rewrite Vite's root imports to the public folder transformImport(args) { if (args.source.match(/^\/.*?\.(png|gif|jpg|jpeg|svg)$/is)) { return `/public${args.source}`; } }, // Serve Umbraco's API imports (msw does not work in web-test-runner) serve(context) { if (context.path.startsWith('/umbraco/management/api')) { return ''; } } }, // Serve images from the public folder as JS modules url({ include: ['public/**/*'] }), esbuildPlugin({ ts: true, target: 'auto', json: true }), importMapsPlugin({ inject: { importMap: { imports: { 'src/': './src/', '@umbraco-cms/css': './libs/css/custom-properties.css', '@umbraco-cms/models': './libs/models/index.ts', '@umbraco-cms/backend-api': './libs/backend-api/index.ts', '@umbraco-cms/context-api': './libs/context-api/index.ts', '@umbraco-cms/controller': './libs/controller/index.ts', '@umbraco-cms/element': './libs/element/index.ts', '@umbraco-cms/extensions-api': './libs/extensions-api/index.ts', '@umbraco-cms/extensions-registry': './libs/extensions-registry/index.ts', '@umbraco-cms/notification': './libs/notification/index.ts', '@umbraco-cms/observable-api': './libs/observable-api/index.ts', '@umbraco-cms/store': './libs/store/index.ts', '@umbraco-cms/utils': './libs/utils/index.ts', '@umbraco-cms/test-utils': './libs/test-utils/index.ts', '@umbraco-cms/resources': './libs/resources/index.ts', "@umbraco-cms/repository": './libs/repository', '@umbraco-cms/router': './libs/router/index.ts' }, }, }, }), ], browsers: [ playwrightLauncher({ product: 'firefox' }), playwrightLauncher({ product: 'webkit' }), ], coverageConfig: { reporters: ['lcovonly', 'text-summary'], }, testRunnerHtml: (testFramework) => ` Umbraco `, };