enso/app/ide-desktop/lib/client/esbuild-config.ts
somebody1234 3c31155fe9
Dashboard tests (#7656)
- Implements https://github.com/enso-org/cloud-v2/issues/631
- Tests for dashboard (`app/ide-desktop/lib/dashboard/`):
- End-to-end tests
- Unit tests
- Component tests

The purpose of this PR is to introduce the testing framework - more tests can be added later in separate PRs.

# Important Notes
To test, run `npm run test` in `app/ide-desktop`, or `app/ide-desktop/lib/dashboard/`. All tests should pass.

Individual test types can be run using `npm run test-unit`, `npm run test-component` and `npm run test-e2e` in `app/ide-desktop/lib/dashboard/`.
Individual end-to-end tests can be run using `npx playwright test -c playwright-e2e.config.ts test-e2e/<file name>.spec.ts` in `app/ide-desktop/lib/dashboard/`.

End-to-end tests require internet access to pass (for things like fonts).

This PR *does* check in screenshots to guard against visual regessions (and/or to make visual changes obvious)
2023-10-11 10:24:33 +00:00

58 lines
1.9 KiB
TypeScript

/** @file Esbuild config file. */
import * as path from 'node:path'
import type * as esbuild from 'esbuild'
import esbuildPluginYaml from 'esbuild-plugin-yaml'
import * as paths from './paths'
// ================
// === Bundling ===
// ================
/** Get the bundler options using the environment.
*
* The following environment variables are required:
* - `ENSO_BUILD_IDE` - output directory for bundled client files;
* - `ENSO_BUILD_PROJECT_MANAGER_IN_BUNDLE_PATH` - path to the project manager executable relative
* to the PM bundle root;
* - `ENSO_BUILD_IDE_BUNDLED_ENGINE_VERSION` - version of the Engine (backend) that is bundled
* along with this client build.
*
* @see bundlerOptions
*/
export function bundlerOptionsFromEnv(): esbuild.BuildOptions {
return bundlerOptions(
path.join(paths.getIdeDirectory(), 'client'),
paths.getProjectManagerInBundlePath(),
paths.getBundledEngineVersion()
)
}
/** Get options without relying on the environment. */
export function bundlerOptions(
outdir: string,
projectManagerInBundlePath: string,
bundledEngineVersion: string
): esbuild.BuildOptions {
return {
bundle: true,
outdir,
entryPoints: ['src/index.ts', 'src/preload.ts'],
outbase: 'src',
format: 'cjs',
platform: 'node',
plugins: [esbuildPluginYaml.yamlPlugin({})],
// The names come from a third-party API and cannot be changed.
/* eslint-disable @typescript-eslint/naming-convention */
outExtension: { '.js': '.cjs' },
define: {
BUNDLED_ENGINE_VERSION: JSON.stringify(bundledEngineVersion),
PROJECT_MANAGER_IN_BUNDLE_PATH: JSON.stringify(projectManagerInBundlePath),
},
/* eslint-enable @typescript-eslint/naming-convention */
sourcemap: true,
external: ['electron'],
}
}