Merge pull request #30890 from overleaf/ar/code-coverage-e2e

[monorepo] code coverage e2e

GitOrigin-RevId: cfdef9e6b485831bd34847f7b7af13d39c18c3e6
This commit is contained in:
Andrew Rumble
2026-03-06 09:10:56 +00:00
committed by Copybot
parent a6ba9c1016
commit 16cc4026a0
7 changed files with 1174 additions and 3 deletions
+1128 -3
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
{
"extension": [".js", ".cjs", ".ts"],
"cwd": "../../",
"produce-source-map": true,
"source-map": true,
"temp-dir": "/tmp/.nyc_output"
}
+13
View File
@@ -122,6 +122,19 @@ app.get(
OutputController.createOutputZip
)
if (process.env.NODE_ENV === 'development' && global.__coverage__) {
app.get('/coverage', (req, res) => {
const coverage = {}
for (const [key, value] of Object.entries(global.__coverage__)) {
coverage[key] = {
...value,
path: value.path.replace('/overleaf/', '/workspace/'),
}
}
res.json({ coverage })
})
}
app.get('/status', (req, res, next) => res.send('CLSI is alive\n'))
Settings.processTooOld = false
+2
View File
@@ -37,6 +37,7 @@
"workerpool": "^6.1.5"
},
"devDependencies": {
"@istanbuljs/esm-loader-hook": "^0.3.0",
"chai": "^4.3.6",
"chai-as-promised": "^7.1.1",
"mocha": "^11.1.0",
@@ -44,6 +45,7 @@
"mocha-multi-reporters": "^1.5.1",
"mock-fs": "^5.1.2",
"node-fetch": "^2.7.0",
"nyc": "^17.1.0",
"sinon": "~9.0.1",
"sinon-chai": "^3.7.0",
"timekeeper": "2.2.0",
+7
View File
@@ -0,0 +1,7 @@
{
"extension": [".js", ".cjs", ".mjs", ".ts"],
"cwd": "../../",
"produce-source-map": true,
"source-map": true,
"temp-dir": "/tmp/.nyc_output"
}
+15
View File
@@ -205,6 +205,21 @@ async function initialize(webRouter, privateApiRouter, publicApiRouter) {
webRouter.get('*', AnalyticsRegistrationSourceMiddleware.setInbound())
webRouter.get('*', AnalyticsUTMTrackingMiddleware.recordUTMTags())
if (process.env.NODE_ENV === 'development' && global.__coverage__) {
// Expose code coverage via an endpoint when running with code coverage enabled
webRouter.get('/coverage', (req, res) => {
const coverage = {}
for (const [key, value] of Object.entries(global.__coverage__)) {
coverage[key] = {
...value,
// Transform for Jenkins sourcemap
path: value.path.replace('/overleaf/', '/workspace/'),
}
}
res.json({ coverage })
})
}
// Mount onto /login in order to get the deviceHistory cookie.
webRouter.post(
'/login/can-skip-captcha',
+2
View File
@@ -210,6 +210,7 @@
"@codemirror/state": "6.5.4",
"@codemirror/view": "6.38.6",
"@floating-ui/react": "^0.27.5",
"@istanbuljs/esm-loader-hook": "^0.3.0",
"@juggle/resize-observer": "^3.3.1",
"@lezer/common": "1.5.0",
"@lezer/generator": "1.8.0",
@@ -358,6 +359,7 @@
"mock-fs": "^5.1.2",
"nock": "^13.5.6",
"nvd3": "^1.8.6",
"nyc": "^17.1.0",
"p-reflect": "^3.1.0",
"path-browserify": "^1.0.1",
"pdfjs-dist": "5.1.91",