diff --git a/.evergreen/buildvariants-and-tasks.in.yml b/.evergreen/buildvariants-and-tasks.in.yml index a0ae901cefd..c7bfd6714ff 100644 --- a/.evergreen/buildvariants-and-tasks.in.yml +++ b/.evergreen/buildvariants-and-tasks.in.yml @@ -275,6 +275,12 @@ buildvariants: <% } %> <% } %> + - name: test-web-sandbox-atlas-cloud + display_name: Test Web Sandbox (w/ Atlas Cloud login) + run_on: ubuntu2004-large + tasks: + - name: test-web-sandbox-atlas-cloud + - name: generate-vulnerability-report display_name: Vulnerability Report run_on: ubuntu2004-large @@ -504,6 +510,21 @@ tasks: <% } %> <% } %> + - name: test-web-sandbox-atlas-cloud + tags: + - required-for-publish + - run-on-pr + - assigned_to_jira_team_compass_compass + - foliage_check_task_only + commands: + - func: prepare + - func: install + - func: bootstrap + - func: test-web-sandbox-atlas-cloud + vars: + compass_distribution: compass + debug: 'compass-e2e-tests*,electron*,hadron*,mongo*' + - name: create_static_analysis_report tags: ['required-for-publish', 'run-on-pr'] depends_on: diff --git a/.evergreen/buildvariants-and-tasks.yml b/.evergreen/buildvariants-and-tasks.yml index 12e0c34f457..a0235174e1b 100644 --- a/.evergreen/buildvariants-and-tasks.yml +++ b/.evergreen/buildvariants-and-tasks.yml @@ -257,6 +257,11 @@ buildvariants: - name: test-web-sandbox-firefox-1 - name: test-web-sandbox-firefox-2 - name: test-web-sandbox-firefox-3 + - name: test-web-sandbox-atlas-cloud + display_name: Test Web Sandbox (w/ Atlas Cloud login) + run_on: ubuntu2004-large + tasks: + - name: test-web-sandbox-atlas-cloud - name: generate-vulnerability-report display_name: Vulnerability Report run_on: ubuntu2004-large @@ -1715,6 +1720,20 @@ tasks: e2e_test_groups: 3 e2e_test_group: 3 debug: compass-e2e-tests*,electron*,hadron*,mongo* + - name: test-web-sandbox-atlas-cloud + tags: + - required-for-publish + - run-on-pr + - assigned_to_jira_team_compass_compass + - foliage_check_task_only + commands: + - func: prepare + - func: install + - func: bootstrap + - func: test-web-sandbox-atlas-cloud + vars: + compass_distribution: compass + debug: compass-e2e-tests*,electron*,hadron*,mongo* - name: create_static_analysis_report tags: - required-for-publish diff --git a/.evergreen/create-atlas-cluster.sh b/.evergreen/create-atlas-cluster.sh new file mode 100755 index 00000000000..95054df6510 --- /dev/null +++ b/.evergreen/create-atlas-cluster.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +export E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME="test-cluster-$(date +"%s")" + +function atlascli() { + docker run \ + -e MCLI_PUBLIC_API_KEY="$MCLI_PUBLIC_API_KEY" \ + -e MCLI_PRIVATE_API_KEY="$MCLI_PRIVATE_API_KEY" \ + -e MCLI_ORG_ID="$MCLI_ORG_ID" \ + -e MCLI_PROJECT_ID="$MCLI_PROJECT_ID" \ + -e MCLI_OPS_MANAGER_URL="$MCLI_OPS_MANAGER_URL" \ + mongodb/atlas atlas $@ +} + +cleanup() { + echo "Scheduling Atlas deployment \`$E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME\` for deletion..." + atlascli clusters delete $E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME --force +} + +trap cleanup EXIT + +echo "Creating Atlas deployment \`$E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME\` to test against..." +atlascli clusters create $E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME \ + --provider AWS \ + --region US_EAST_1 \ + --tier M10 + +echo "Waiting for the deployment to be provisioned..." +atlascli clusters watch "$E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME" + +echo "Getting connection string for provisioned cluster..." +export E2E_ATLAS_CLOUD_TEST_CLUSTER_CONNECTION_STRING_JSON="$(atlascli clusters connectionStrings describe $E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME -o json)" +echo "Cluster connection string: $E2E_ATLAS_CLOUD_TEST_CLUSTER_CONNECTION_STRING_JSON" diff --git a/.evergreen/functions.yml b/.evergreen/functions.yml index acf5b475190..2b171738974 100644 --- a/.evergreen/functions.yml +++ b/.evergreen/functions.yml @@ -673,6 +673,37 @@ functions: eval $(.evergreen/print-compass-env.sh) npm run --unsafe-perm --workspace compass-e2e-tests test-web + test-web-sandbox-atlas-cloud: + - command: shell.exec + # It can take a very long time for Atlas cluster to get deployed + timeout_secs: 2400 + params: + working_dir: src + shell: bash + env: + <<: *compass-env + DEBUG: ${debug|} + BROWSER_NAME: chrome + MONGODB_VERSION: latest-enterprise + MONGODB_RUNNER_VERSION: latest-enterprise + E2E_TESTS_COMPASS_WEB_ATLAS_DB_USERNAME: ${e2e_tests_compass_web_atlas_db_username} + E2E_TESTS_COMPASS_WEB_ATLAS_USERNAME: ${e2e_tests_compass_web_atlas_username} + E2E_TESTS_COMPASS_WEB_ATLAS_PASSWORD: ${e2e_tests_compass_web_atlas_password} + MCLI_PUBLIC_API_KEY: ${e2e_tests_mcli_public_api_key} + MCLI_PRIVATE_API_KEY: ${e2e_tests_mcli_private_api_key} + MCLI_ORG_ID: ${e2e_tests_mcli_org_id} + MCLI_PROJECT_ID: ${e2e_tests_mcli_project_id} + MCLI_OPS_MANAGER_URL: ${e2e_tests_mcli_ops_manager_url} + script: | + set -e + # Load environment variables + eval $(.evergreen/print-compass-env.sh) + # Create Atlas cluster for test project + source .evergreen/create-atlas-cluster.sh + # Run the tests + echo "Starting e2e tests..." + npm run --unsafe-perm --workspace compass-e2e-tests test -- --test-compass-web-atlas-cloud + test-connectivity: - command: shell.exec # Fail the task if it's idle for 10 mins diff --git a/package-lock.json b/package-lock.json index 662765ecfb3..c2862ffe0f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21181,7 +21181,8 @@ "node_modules/electron-to-chromium": { "version": "1.5.28", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz", - "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==" + "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==", + "license": "ISC" }, "node_modules/electron-window": { "version": "0.8.1", @@ -44197,6 +44198,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", + "electron-to-chromium": "^1.5.28", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -67746,6 +67748,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", + "electron-to-chromium": "^1.5.28", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", diff --git a/package.json b/package.json index 0dec690b267..5f1c9000035 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,6 @@ "package-compass": "npm run package-compass --workspace=mongodb-compass --", "package-compass-debug": "npm run package-compass-debug --workspace=mongodb-compass --", "package-compass-nocompile": "npm run package-compass-nocompile --workspace=mongodb-compass --", - "prestart": "npm run compile --workspace=@mongodb-js/webpack-config-compass", - "prestart-web": "npm run prestart", "start": "npm run start --workspace=mongodb-compass", "start-web": "npm run start --workspace=@mongodb-js/compass-web", "test": "lerna run test --concurrency 1 --stream", diff --git a/packages/compass-e2e-tests/helpers/commands/connect.ts b/packages/compass-e2e-tests/helpers/commands/connect.ts index 379524d622d..7d2103cf019 100644 --- a/packages/compass-e2e-tests/helpers/commands/connect.ts +++ b/packages/compass-e2e-tests/helpers/commands/connect.ts @@ -2,6 +2,7 @@ import { DEFAULT_CONNECTION_NAME_1, DEFAULT_CONNECTION_NAME_2, DEFAULT_CONNECTION_STRING_1, + TEST_COMPASS_WEB_ATLAS_CLOUD, TEST_MULTIPLE_CONNECTIONS, connectionNameFromString, } from '../compass'; @@ -53,6 +54,10 @@ export async function connectWithConnectionString( connectionString = DEFAULT_CONNECTION_STRING_1, options: ConnectOptions = {} ): Promise { + if (TEST_COMPASS_WEB_ATLAS_CLOUD) { + return connectByName(browser, connectionString); + } + // Use this command when you need to add a new connection with a specific // connection string. Most test files should just be using // browser.connectToDefaults() diff --git a/packages/compass-e2e-tests/helpers/compass.ts b/packages/compass-e2e-tests/helpers/compass.ts index 3cd10cc47a0..8efd8a26039 100644 --- a/packages/compass-e2e-tests/helpers/compass.ts +++ b/packages/compass-e2e-tests/helpers/compass.ts @@ -13,7 +13,10 @@ import { rebuild } from '@electron/rebuild'; import type { RebuildOptions } from '@electron/rebuild'; import type { ConsoleMessageType } from 'puppeteer'; import { run as packageCompass } from 'hadron-build/commands/release'; -import { redactConnectionString } from 'mongodb-connection-string-url'; +import { + redactConnectionString, + ConnectionString, +} from 'mongodb-connection-string-url'; import { getConnectionTitle } from '@mongodb-js/connection-info'; export * as Selectors from './selectors'; export * as Commands from './commands'; @@ -45,7 +48,11 @@ let MONGODB_USE_ENTERPRISE = (process.env.MONGODB_VERSION?.endsWith('-enterprise') && 'yes') ?? 'no'; // should we test compass-web (true) or compass electron (false)? -export const TEST_COMPASS_WEB = process.argv.includes('--test-compass-web'); +export const TEST_COMPASS_WEB_ATLAS_CLOUD = process.argv.includes( + '--test-compass-web-atlas-cloud' +); +export const TEST_COMPASS_WEB = + process.argv.includes('--test-compass-web') || TEST_COMPASS_WEB_ATLAS_CLOUD; // multiple connections is now the default export const TEST_MULTIPLE_CONNECTIONS = true; @@ -56,10 +63,13 @@ in a scannable manner. It is not being output at present because the tests will be logged as pending anyway. */ export function skipForWeb( - test: Mocha.Runnable | Mocha.Context, + test: Mocha.Context, // eslint-disable-next-line @typescript-eslint/no-unused-vars reason: string ) { + if (test?.currentTest?.title) { + test.currentTest.title += ` - skipped with reason: ${reason}`; + } if (TEST_COMPASS_WEB) { test.skip(); } @@ -75,12 +85,29 @@ export const MONGODB_TEST_SERVER_PORT = Number( process.env.MONGODB_TEST_SERVER_PORT ?? 27091 ); -export const DEFAULT_CONNECTION_STRING_1 = `mongodb://127.0.0.1:${MONGODB_TEST_SERVER_PORT}/test`; +function getAtlasConnectionStringFromEnv() { + const connectionStringJSONString = + process.env.E2E_ATLAS_CLOUD_TEST_CLUSTER_CONNECTION_STRING_JSON; + if (!connectionStringJSONString) { + return undefined; + } + const { standardSrv } = JSON.parse(connectionStringJSONString); + const mongodbConnectionString = new ConnectionString(standardSrv); + mongodbConnectionString.username = + process.env.E2E_TESTS_COMPASS_WEB_ATLAS_DB_USERNAME!; + mongodbConnectionString.password = + process.env.E2E_TESTS_COMPASS_WEB_ATLAS_PASSWORD!; + return mongodbConnectionString.toString(); +} + +export const DEFAULT_CONNECTION_STRING_1 = + getAtlasConnectionStringFromEnv() ?? + `mongodb://127.0.0.1:${MONGODB_TEST_SERVER_PORT}/test`; // NOTE: in browser.setupDefaultConnections() we don't give the first connection an // explicit name, so it gets a calculated one based off the connection string -export const DEFAULT_CONNECTION_NAME_1 = connectionNameFromString( - DEFAULT_CONNECTION_STRING_1 -); +export const DEFAULT_CONNECTION_NAME_1 = + process.env.E2E_ATLAS_CLOUD_TEST_CLUSTER_NAME ?? + connectionNameFromString(DEFAULT_CONNECTION_STRING_1); // for testing multiple connections export const DEFAULT_CONNECTION_STRING_2 = `mongodb://127.0.0.1:${ diff --git a/packages/compass-e2e-tests/index.ts b/packages/compass-e2e-tests/index.ts index 309767330a2..997bf603d32 100644 --- a/packages/compass-e2e-tests/index.ts +++ b/packages/compass-e2e-tests/index.ts @@ -30,6 +30,7 @@ const wait = (ms: number) => const allowedArgs = [ '--test-compass-web', + '--test-compass-web-atlas-cloud', '--no-compile', '--no-native-modules', '--test-packaged-app', @@ -47,47 +48,71 @@ for (const arg of process.argv) { } } +const disableStartStop = process.argv.includes('--disable-start-stop'); +const shouldTestCompassWebAtlasCloud = process.argv.includes( + '--test-compass-web-atlas-cloud' +); +const shouldTestCompassWeb = + process.argv.includes('--test-compass-web') || shouldTestCompassWebAtlasCloud; + // We can't import mongodb here yet because native modules will be recompiled let metricsClient: MongoClient; const FIRST_TEST = 'tests/time-to-first-query.test.ts'; -let compassWeb: ChildProcessWithoutNullStreams; +let compassWeb: ChildProcessWithoutNullStreams | undefined; async function setup() { debug('X DISPLAY', process.env.DISPLAY); - const disableStartStop = process.argv.includes('--disable-start-stop'); - const shouldTestCompassWeb = process.argv.includes('--test-compass-web'); - // When working on the tests it is faster to just keep the server running. if (!disableStartStop) { debug('Starting MongoDB server'); crossSpawn.sync('npm', ['run', 'start-servers'], { stdio: 'inherit' }); if (shouldTestCompassWeb) { - debug('Starting Compass Web'); - compassWeb = crossSpawn.spawn( - 'npm', - ['run', '--unsafe-perm', 'start-web'], - { - cwd: path.resolve(__dirname, '..', '..'), - env: { - ...process.env, - OPEN_BROWSER: 'false', // tell webpack dev server not to open the default browser - DISABLE_DEVSERVER_OVERLAY: 'true', - APP_ENV: 'webdriverio', - }, - } - ); + debug('Starting Compass Web', { shouldTestCompassWebAtlasCloud }); + + const spawnCommand: [string, string[]] = shouldTestCompassWebAtlasCloud + ? [ + 'npx', + [ + 'ts-node', + path.resolve( + __dirname, + 'scripts', + 'start-compass-web-with-atlas-auth.ts' + ), + ], + ] + : [ + 'npm', + [ + 'run', + '--workspace', + '@mongodb-js/compass-web', + '--unsafe-perm', + 'start', + ], + ]; + + compassWeb = crossSpawn.spawn(...spawnCommand, { + env: { + ...process.env, + OPEN_BROWSER: 'false', // tell webpack dev server not to open the default browser + DISABLE_DEVSERVER_OVERLAY: 'true', + APP_ENV: 'webdriverio', + }, + }); compassWeb.stdout.pipe(process.stdout); compassWeb.stderr.pipe(process.stderr); let serverReady = false; const start = Date.now(); + const timeout = shouldTestCompassWebAtlasCloud ? 240_000 : 120_000; while (!serverReady) { - if (Date.now() - start >= 120_000) { + if (Date.now() - start >= timeout) { throw new Error( 'The compass-web sandbox is still not running after 120000ms' ); @@ -95,12 +120,25 @@ async function setup() { try { const res = await fetch('http://localhost:7777'); serverReady = res.ok; + if (shouldTestCompassWebAtlasCloud) { + // TODO: we probably want to have just one endpoint for the sandbox + // healthcheck sort of stuff + const authRes = await fetch('http://localhost:7777/projectId'); + serverReady = authRes.ok; + } debug('Web server ready: %s', serverReady); } catch (err) { debug('Failed to connect to dev server: %s', (err as any).message); } await wait(1000); } + if (shouldTestCompassWebAtlasCloud) { + // Now wait for the cert to be issued + // TODO: same as above, probably better to have just one nedpoint we can + // ping to wait for everything to be ready + debug('Waitiing for x509 cert to propagate to Atlas clusters...'); + await fetch('http://localhost:7777/x509'); + } } else { debug('Writing electron-versions.json'); crossSpawn.sync('scripts/write-electron-versions.sh', [], { @@ -136,11 +174,8 @@ function getResources() { function cleanup() { removeUserDataDir(); - const disableStartStop = process.argv.includes('--disable-start-stop'); - const shouldTestCompassWeb = process.argv.includes('--test-compass-web'); - if (!disableStartStop) { - if (shouldTestCompassWeb) { + if (compassWeb) { debug('Stopping compass-web'); try { if (compassWeb.pid) { @@ -199,8 +234,6 @@ function cleanup() { async function main() { await setup(); - const shouldTestCompassWeb = process.argv.includes('--test-compass-web'); - if (!shouldTestCompassWeb) { if (!process.env.CHROME_VERSION) { // written during setup() if disableStartStop is false diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index e95ccf2627f..51a93804a41 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -53,6 +53,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", + "electron-to-chromium": "^1.5.28", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", diff --git a/packages/compass-e2e-tests/scripts/start-compass-web-with-atlas-auth.ts b/packages/compass-e2e-tests/scripts/start-compass-web-with-atlas-auth.ts new file mode 100644 index 00000000000..faebd78c7d8 --- /dev/null +++ b/packages/compass-e2e-tests/scripts/start-compass-web-with-atlas-auth.ts @@ -0,0 +1,87 @@ +import path from 'path'; +import { remote } from 'webdriverio'; +import os from 'os'; +import electronPath from 'electron'; +// @ts-expect-error no types for this package +import { electronToChromium } from 'electron-to-chromium'; +import electronPackageJson from 'electron/package.json'; + +if (typeof electronPath !== 'string') { + throw new Error('Can only start the proxy in Node.js runtime'); +} + +const electronProxyPath = path.resolve( + path.dirname(require.resolve('@mongodb-js/compass-web/package.json')), + 'scripts', + 'electron-proxy.js' +); + +const userDataPath = path.resolve( + os.tmpdir(), + `wdio-electron-proxy-${Date.now()}` +); + +const electronProxyCapabilities: WebdriverIO.Capabilities = { + browserName: 'chromium', + browserVersion: electronToChromium(electronPackageJson.version), + 'goog:chromeOptions': { + binary: electronPath, + args: [`--user-data-dir=${userDataPath}`, `--app=${electronProxyPath}`], + }, +}; + +async function startCompassWebAndSignIn() { + const username = process.env.E2E_TESTS_COMPASS_WEB_ATLAS_USERNAME; + const pwd = process.env.E2E_TESTS_COMPASS_WEB_ATLAS_PASSWORD; + + if (!username || !pwd) { + throw new Error( + 'Cannot autotest compass-web with Atlas without credentials present' + ); + } + + const electronProxyRemote = await remote({ + capabilities: electronProxyCapabilities, + }); + + // TODO: change the hardcoded url to env vars to match the proxy + // implementation + const authenticatePromise = fetch('http://localhost:7777/authenticate', { + method: 'POST', + }); + + // TODO: maybe switchWindow by the URL matcher instead? + const authWindowHandler = await electronProxyRemote.waitUntil(async () => { + const handlers = await electronProxyRemote.getWindowHandles(); + // First window is about:blank, second one is the one we triggered above + // with `/authenticate` request + return handlers[1]; + }); + await electronProxyRemote.switchToWindow(authWindowHandler); + + /** Sign in on account.mongodb.com */ + + await electronProxyRemote.$('input[name="username"]').waitForEnabled(); + await electronProxyRemote.$('input[name="username"]').setValue(username); + + await electronProxyRemote.$('button=Next').waitForEnabled(); + await electronProxyRemote.$('button=Next').click(); + + await electronProxyRemote.$('input[name="password"]').waitForEnabled(); + await electronProxyRemote.$('input[name="password"]').setValue(pwd); + + await electronProxyRemote.$('button=Login').waitForEnabled(); + await electronProxyRemote.$('button=Login').click(); + + /** Wait for auth to finish */ + + const res = await authenticatePromise; + + if (res.ok === false || !(await res.json()).projectId) { + throw new Error( + `Failed to authenticate in Atlas Cloud: ${res.statusText} (${res.status})` + ); + } +} + +void startCompassWebAndSignIn(); diff --git a/packages/compass-e2e-tests/tests/time-to-first-query.test.ts b/packages/compass-e2e-tests/tests/time-to-first-query.test.ts index c0201e9df4e..5f868ff3249 100644 --- a/packages/compass-e2e-tests/tests/time-to-first-query.test.ts +++ b/packages/compass-e2e-tests/tests/time-to-first-query.test.ts @@ -11,6 +11,8 @@ import { createNumbersCollection } from '../helpers/insert-data'; describe('Time to first query', function () { let compass: Compass | undefined; + const connectionName = DEFAULT_CONNECTION_NAME_1; + beforeEach(async function () { await createNumbersCollection(); }); @@ -42,10 +44,10 @@ describe('Time to first query', function () { const { browser } = compass; - await browser.connectWithConnectionString(); + await browser.connectWithConnectionString(connectionName); await browser.navigateToCollectionTab( - DEFAULT_CONNECTION_NAME_1, + connectionName, 'test', 'numbers', 'Documents' @@ -67,10 +69,10 @@ describe('Time to first query', function () { const { browser } = compass; - await browser.connectWithConnectionString(); + await browser.connectWithConnectionString(connectionName); await browser.navigateToCollectionTab( - DEFAULT_CONNECTION_NAME_1, + connectionName, 'test', 'numbers', 'Documents' diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index aea3b525f8f..116e07c2dba 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -40,6 +40,7 @@ "webpack": "webpack-compass", "postcompile": "npm run typescript", "typescript": "tsc -p tsconfig-build.json --emitDeclarationOnly", + "prestart": "npm run compile --workspace @mongodb-js/webpack-config-compass", "start": "electron ./scripts/electron-proxy.js", "analyze": "npm run webpack -- --mode production --analyze", "watch": "npm run webpack -- --mode development --watch", diff --git a/packages/compass-web/scripts/electron-proxy.js b/packages/compass-web/scripts/electron-proxy.js index 2d7db2d6805..df51a2d87bb 100644 --- a/packages/compass-web/scripts/electron-proxy.js +++ b/packages/compass-web/scripts/electron-proxy.js @@ -542,6 +542,11 @@ function cleanupAndExit() { } electronApp.whenReady().then(async () => { + // Create an empty browser window so that webdriver session can be + // immediately get attached to something without failing + const emptyBrowserWindow = new BrowserWindow({ show: false }); + emptyBrowserWindow.loadURL('about:blank'); + electronApp.on('window-all-closed', () => { // We want proxy to keep running even when all the windows are closed, but // hide the dock icon because there are not windows associated with it diff --git a/packages/compass/package.json b/packages/compass/package.json index 276b3a202dd..ba240a9305d 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -141,7 +141,7 @@ "scripts": { "install": "node scripts/download-fonts.js && node scripts/download-csfle.js", "electron-rebuild": "electron-rebuild --only kerberos,keytar,interruptor,os-dns-native,win-export-certificate-and-key,macos-export-certificate-and-key --prebuild-tag-prefix not-real-prefix-to-force-rebuild", - "prestart": "npm run electron-rebuild", + "prestart": "npm run electron-rebuild && npm run compile --workspace=@mongodb-js/webpack-config-compass", "start": "HADRON_DISTRIBUTION=${HADRON_DISTRIBUTION:-compass} npm run webpack serve -- --mode development", "test-electron": "npm run test-main && npm run test-renderer", "test-main": "xvfb-maybe electron-mocha --no-sandbox \"./src/main/**/*.spec.*\" \"./src/main/**/*.test.*\"", diff --git a/scripts/update-electron.js b/scripts/update-electron.js index e184c8fe3e1..fde6b285116 100644 --- a/scripts/update-electron.js +++ b/scripts/update-electron.js @@ -109,12 +109,16 @@ async function main() { ); const latestBrowserslistVersion = await getLatestVersion('browserslist'); + const latestElectronToChromiumVersion = await getLatestVersion( + 'electron-to-chromium' + ); const newVersions = { 'node-abi': `^${latestNodeAbiVersion}`, '@electron/remote': `^${latestElectronRemoteVersion}`, '@electron/rebuild': `^${latestElectronRebuildVersion}`, electron: `^${latestElectronVersion}`, + 'electron-to-chromium': `^${latestElectronToChromiumVersion}`, browserslist: `^${latestBrowserslistVersion}`, };