import { esbuildPlugin } from '@web/dev-server-esbuild'; import { playwrightLauncher } from '@web/test-runner-playwright'; import { importMapsPlugin } from '@web/dev-server-import-maps'; import rollupCommonjs from '@rollup/plugin-commonjs'; import { fromRollup } from '@web/dev-server-rollup'; import { createImportMap } from './devops/importmap/index.js'; const commonjs = fromRollup(rollupCommonjs); const mode = process.env.MODE || 'dev'; if (!['dev', 'prod'].includes(mode)) { throw new Error(`MODE must be "dev" or "prod", was "${mode}"`); } const silencedLogs = ['Lit is in dev mode.', 'Multiple versions of Lit loaded.', '-- Extension of alias "', 'Error: Failed to create extension api from alias']; /** @type {import('@web/dev-server').DevServerConfig} */ export default { rootDir: '.', files: ['./src/**/*.test.ts'], nodeResolve: { exportConditions: mode === 'dev' ? ['development'] : [], preferBuiltins: false, browser: false }, browsers: [playwrightLauncher({ product: 'chromium' }), playwrightLauncher({ product: 'webkit' })], /* TODO: fix coverage report coverageConfig: { reporters: ['lcovonly', 'text-summary'], }, */ plugins: [ importMapsPlugin({ inject: { importMap: createImportMap({ rootDir: './src', additionalImports: { '@umbraco-cms/internal/test-utils': './utils/test-utils.ts', }, replaceModuleExtensions: true, }), }, }), commonjs({ include: ['node_modules/base64-js/**/*', 'node_modules/tinymce/**/*'], }), esbuildPlugin({ ts: true, tsconfig: './tsconfig.json', target: 'auto', json: true }), ], filterBrowserLogs(log) { for (const arg of log.args) { if (typeof arg === 'string' && silencedLogs.some((l) => arg.includes(l))) { return false; } } return true; }, testRunnerHtml: (testFramework, devMode) => ` Umbraco `, };