* build(frontend): enable custom condition for resolving source files during dev and build * feat(packages): apply conditional name to export properties * chore(packages): add standard exports to flamegraph and prometheus * chore(packages): resolve main, module, types to built files * build(packages): clean up prepare-npm-package for custom condition changes * refactor(packages): reduce repetition in conditional exports * build(storybook): add @grafana-app/source to conditionNames * test(frontend): add grafana-app/source customCondition for jest tests * refactor(frontend): remove nested package import paths * chore(jest): use customExportConditions for source files and browser * chore(i18n): use src for ./eslint-plugin export * chore(packages): set packages tsconfigs to moduleResolution bundler * chore(packages): fix rollup builds * build(packages): build cjs as multiple files * chore(sql): reference MonitoringLogger for moduleresolution bundler to pass typecheck * chore(ui): add type refs for moduleresolution bundler to pass typecheck * feat(schema): add exports for cleaner import paths * refactor(frontend): clean up schema paths to point to exports instead of nested file paths * build(storybook): hack the builder-manager for custom conditions to resolve * build(decoupled-plugins): fix broken builds due to missing conditionNames * chore(e2e): pass condition to playwright to resolve local packages * build(frontend): fix failing build * chore(select): fix typings * style(frontend): clean up eslint suppressions * chore(packages): fix type errors due to incorrect tsconfig settings * build(generate-apis): use swc with ts-node and moduleResolution bundler * chore(cypress): add conditionNames to resolve monorepo packages * build(npm): update prepare to work with latest exports changes * build(packages): fix prepare-npm-package script * fix(e2e-selectors): update debugoverlay for data-testid change * build(packages): stop editing package.json at pack n publish time * rerun ci * chore(api-clients): use moduleResolution: bundler for customConditions support * chore(api-clients): fix generation * build(packages): remove aliasing exports, remove exports with only customConditions * Revert "refactor(frontend): clean up schema paths to point to exports instead of nested file paths" This reverts commit 7949b6ea0e60e51989d2a8149b7a24647cd68916. * revert(schema): remove exports from package so builds work * build(api-clients): fix up api-clients exports and rollup config * build(api-clients): Update generated package exports for api clients * build(schema): add overrides to cjsOutput and esmOutput so built directory structure is correct * fix(packages): use rootDirs to prevent types/src directories in built d.ts file paths * build(packages): prevent empty exports added to package.json during pack * docs(packages): update readme with custom conditions information --------- Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
97 lines
3.7 KiB
JavaScript
97 lines
3.7 KiB
JavaScript
// We set this specifically for 2 reasons.
|
|
// 1. It makes sense for both CI tests and local tests to behave the same so issues are found earlier
|
|
// 2. Any wrong timezone handling could be hidden if we use UTC/GMT local time (which would happen in CI).
|
|
process.env.TZ = 'Pacific/Easter'; // UTC-06:00 or UTC-05:00 depending on daylight savings
|
|
|
|
const esModules = [
|
|
'@glideapps/glide-data-grid',
|
|
'@wojtekmaj/date-utils',
|
|
'ol',
|
|
'd3',
|
|
'd3-color',
|
|
'd3-interpolate',
|
|
'delaunator',
|
|
'get-user-locale',
|
|
'internmap',
|
|
'robust-predicates',
|
|
'leven',
|
|
'nanoid',
|
|
'marked',
|
|
'memoize',
|
|
'mimic-function',
|
|
'monaco-promql',
|
|
'react-calendar',
|
|
'@kusto/monaco-kusto',
|
|
'monaco-editor',
|
|
'@msagl',
|
|
'lodash-es',
|
|
'vscode-languageserver-types',
|
|
'@bsull/augurs',
|
|
'react-data-grid',
|
|
'@grafana/llm',
|
|
'pkce-challenge',
|
|
'quickselect',
|
|
'rbush',
|
|
'earcut',
|
|
'pbf',
|
|
'geotiff',
|
|
].join('|');
|
|
|
|
module.exports = {
|
|
verbose: false,
|
|
testEnvironment: 'jsdom',
|
|
testEnvironmentOptions: {
|
|
customExportConditions: ['@grafana-app/source', 'browser'],
|
|
},
|
|
transform: {
|
|
'^.+\\.(ts|tsx|js|jsx)$': [require.resolve('ts-jest')],
|
|
},
|
|
transformIgnorePatterns: [
|
|
`/node_modules/(?!${esModules})`, // exclude es modules to prevent TS complaining
|
|
],
|
|
moduleDirectories: ['public', 'node_modules'],
|
|
roots: ['<rootDir>/public/app', '<rootDir>/public/test', '<rootDir>/packages', '<rootDir>/scripts/tests'],
|
|
testRegex: '(\\.|/)(test)\\.(jsx?|tsx?)$',
|
|
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'cjs'],
|
|
setupFiles: ['jest-canvas-mock', './public/test/jest-setup.ts'],
|
|
testTimeout: 30000,
|
|
resolver: `<rootDir>/public/test/jest-resolver.js`,
|
|
setupFilesAfterEnv: ['./public/test/setupTests.ts'],
|
|
globals: {
|
|
__webpack_public_path__: '', // empty string
|
|
},
|
|
moduleNameMapper: {
|
|
'\\.(svg|png|jpg)': '<rootDir>/public/test/mocks/images.ts',
|
|
'\\.css': '<rootDir>/public/test/mocks/style.ts',
|
|
'react-inlinesvg': '<rootDir>/public/test/mocks/react-inlinesvg.tsx',
|
|
// resolve directly as monaco and kusto don't have main property in package.json which jest needs
|
|
'^monaco-editor$': 'monaco-editor/esm/vs/editor/editor.api.js',
|
|
'@kusto/monaco-kusto': '@kusto/monaco-kusto/release/esm/monaco.contribution.js',
|
|
// near-membrane-dom won't work in a nodejs environment.
|
|
'@locker/near-membrane-dom': '<rootDir>/public/test/mocks/nearMembraneDom.ts',
|
|
'^@grafana/schema/dist/esm/(.*)$': '<rootDir>/packages/grafana-schema/src/$1',
|
|
// prevent systemjs amd extra from breaking tests.
|
|
'systemjs/dist/extras/amd': '<rootDir>/public/test/mocks/systemjsAMDExtra.ts',
|
|
'@bsull/augurs': '<rootDir>/public/test/mocks/augurs.ts',
|
|
},
|
|
// Log the test results with dynamic Loki tags. Drone CI only
|
|
reporters: ['default', ['<rootDir>/public/test/log-reporter.js', { enable: process.env.DRONE === 'true' }]],
|
|
watchPlugins: ['jest-watch-typeahead/filename', 'jest-watch-typeahead/testname'],
|
|
testPathIgnorePatterns: [
|
|
'/node_modules/',
|
|
// Decoupled plugins run their own tests so ignoring them here.
|
|
'<rootDir>/public/app/plugins/datasource/azuremonitor',
|
|
'<rootDir>/public/app/plugins/datasource/cloud-monitoring',
|
|
'<rootDir>/public/app/plugins/datasource/grafana-postgresql-datasource',
|
|
'<rootDir>/public/app/plugins/datasource/grafana-pyroscope-datasource',
|
|
'<rootDir>/public/app/plugins/datasource/grafana-testdata-datasource',
|
|
'<rootDir>/public/app/plugins/datasource/jaeger',
|
|
'<rootDir>/public/app/plugins/datasource/loki',
|
|
'<rootDir>/public/app/plugins/datasource/mysql',
|
|
'<rootDir>/public/app/plugins/datasource/parca',
|
|
'<rootDir>/public/app/plugins/datasource/tempo',
|
|
'<rootDir>/public/app/plugins/datasource/zipkin',
|
|
],
|
|
projects: ['<rootDir>'],
|
|
};
|