From f3ec774e6bbcf5daafe4b7afdf695ba15c164c97 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 28 Apr 2026 11:09:27 +0200 Subject: [PATCH] [github] code spaces: add extra-split-tests.json (#33015) * [github] code spaces: add extra-split-tests.json * [github] address review feedback * [github] add missing bind mount * [monorepo] mount split test configs with :ro * [monorepo] only mount backup/split-tests into web GitOrigin-RevId: 6334a44599a2c8bb79bf1ad698e656c8bee3992b --- services/web/scripts/devcontainer_setup.mjs | 18 +++++++++++++++++- services/web/scripts/e2e_test_setup.mjs | 8 ++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/services/web/scripts/devcontainer_setup.mjs b/services/web/scripts/devcontainer_setup.mjs index 9affdb4288..f57260f329 100644 --- a/services/web/scripts/devcontainer_setup.mjs +++ b/services/web/scripts/devcontainer_setup.mjs @@ -11,6 +11,13 @@ import { } from './e2e_test_setup.mjs' import { Project } from '../app/src/models/Project.mjs' import OError from '@overleaf/o-error' +import fs from 'node:fs' +import Path from 'node:path' +import { fileURLToPath } from 'node:url' + +const MONOREPO = Path.dirname( + Path.dirname(Path.dirname(Path.dirname(fileURLToPath(import.meta.url)))) +) const { email: USER_EMAIL, password: PASSWORD } = minimist( process.argv.slice(2), @@ -146,8 +153,17 @@ async function main() { if (process.env.NODE_ENV !== 'development') { throw new Error('only available in dev-env') } + const extraSplitTests = JSON.parse( + await fs.promises.readFile( + Path.join(MONOREPO, '.devcontainer/extra-split-tests.json'), + 'utf-8' + ) + ) await waitForDb() - await Promise.all([provisionUsers(), provisionSplitTests(true)]) + await Promise.all([ + provisionUsers(), + provisionSplitTests(true, extraSplitTests), + ]) } if (import.meta.main) { diff --git a/services/web/scripts/e2e_test_setup.mjs b/services/web/scripts/e2e_test_setup.mjs index fe66c9e2d0..7dd26ab312 100644 --- a/services/web/scripts/e2e_test_setup.mjs +++ b/services/web/scripts/e2e_test_setup.mjs @@ -139,7 +139,7 @@ async function purgeNewUsers() { ) } -export async function provisionSplitTests(merge = false) { +export async function provisionSplitTests(merge = false, extraSplitTests = []) { const backup = Path.join( MONOREPO, 'backup', @@ -159,7 +159,8 @@ export async function provisionSplitTests(merge = false) { // Imported from production via https://www.overleaf.com/admin/split-test -> "Copy all split tests" -> "Copy for E2E test setup" const SPLIT_TESTS = JSON.parse( await fs.promises.readFile( - Path.join(MONOREPO, 'tools/saas-e2e/split-tests.json') + Path.join(MONOREPO, 'tools/saas-e2e/split-tests.json'), + 'utf-8' ) ) // Add WIP split test, we can update the JSON blob once this is in production @@ -188,6 +189,9 @@ export async function provisionSplitTests(merge = false) { } else { await SplitTestManager.replaceSplitTests(SPLIT_TESTS) } + if (extraSplitTests.length > 0) { + await SplitTestManager.mergeSplitTests(extraSplitTests, false) + } } async function checkNoTableScan() {