[server-ce] tests: add junit integration for Jenkins (#28732)

GitOrigin-RevId: b4c96ad71a02bf57c184a8031f475e3d1548c58a
This commit is contained in:
Jakob Ackermann
2025-09-26 15:13:06 +02:00
committed by Copybot
parent 2db902bdd2
commit a51ba7a7d5
9 changed files with 820 additions and 5 deletions

View File

@@ -1,2 +1,3 @@
cypress-reports/
data/ data/
docker-mailtrap/ docker-mailtrap/

View File

@@ -53,6 +53,11 @@ pipeline {
job_server_ce_build_done = false job_server_ce_build_done = false
job_server_pro_build_done = false job_server_pro_build_done = false
} }
// Reset the results folder.
// Use a folder that is not managed by cypress, as cypress will clear its results folder at the start of each individual run.
// I.e. we would loose the test results from finished/running test suites when the last test suite starts.
sh 'rm -rf server-ce/test/cypress-reports/'
sh 'mkdir -p server-ce/test/cypress-reports/'
} }
} }
stage('Parallel') { stage('Parallel') {
@@ -304,10 +309,14 @@ pipeline {
} }
} }
post { post {
// Collect junit test results for both success and failure case.
always {
junit checksName: 'Server Pro E2E test results', testResults: 'server-ce/test/cypress-reports/junit-*.xml'
}
// Ensure tear down of test containers, remove CE docker images, then run general Jenkins VM cleanup. // Ensure tear down of test containers, remove CE docker images, then run general Jenkins VM cleanup.
cleanup { cleanup {
dir('server-ce/test') { dir('server-ce/test') {
sh 'make clean' sh 'make clean -j10'
} }
dir('server-ce') { dir('server-ce') {
sh 'make clean' sh 'make clean'

View File

@@ -44,7 +44,7 @@ SHARD_PROJECT_NAMES = \
test-pro-custom-4 test-pro-custom-4
CLEAN_SHARDS=$(addprefix clean/,$(SHARD_PROJECT_NAMES)) CLEAN_SHARDS=$(addprefix clean/,$(SHARD_PROJECT_NAMES))
clean: $(CLEAN_SHARDS) clean: $(CLEAN_SHARDS)
-docker compose run --no-deps --rm --entrypoint rm host-admin -rf docker-compose.override.yml docker-compose.*_*.yml data/ -docker compose run --no-deps --rm --entrypoint rm host-admin -rf docker-compose.override.yml docker-compose.*_*.yml cypress-reports/ data/
-docker compose down --remove-orphans --rmi local --timeout 0 --volumes -docker compose down --remove-orphans --rmi local --timeout 0 --volumes
$(CLEAN_SHARDS): clean/%: $(CLEAN_SHARDS): clean/%:

View File

@@ -33,6 +33,16 @@ if (process.env.CYPRESS_SHARD && !process.env.SPEC_PATTERN) {
const specPattern = process.env.SPEC_PATTERN || './**/*.spec.ts' const specPattern = process.env.SPEC_PATTERN || './**/*.spec.ts'
let reporterOptions = {}
if (process.env.CI) {
reporterOptions = {
reporter: '/overleaf/server-ce/test/node_modules/cypress-multi-reporters',
reporterOptions: {
configFile: 'cypress/cypress-multi-reporters.json',
},
}
}
module.exports = defineConfig({ module.exports = defineConfig({
defaultCommandTimeout: 10_000, defaultCommandTimeout: 10_000,
fixturesFolder: 'cypress/fixtures', fixturesFolder: 'cypress/fixtures',
@@ -55,4 +65,5 @@ module.exports = defineConfig({
retries: { retries: {
runMode: 3, runMode: 3,
}, },
...reporterOptions,
}) })

View File

@@ -0,0 +1,10 @@
{
"reporterEnabled": "spec, mocha-junit-reporter",
"mochaJunitReporterReporterOptions": {
"mochaFile": "cypress-reports/junit-[hash]-[suiteFilename].xml",
"includePending": true,
"useFullSuiteTitle": true,
"jenkinsMode": true,
"rootSuiteTitle": "Server Pro E2E tests"
}
}

View File

@@ -70,9 +70,9 @@ services:
stop_grace_period: 0s stop_grace_period: 0s
entrypoint: npm entrypoint: npm
command: run cypress:run command: run cypress:run
working_dir: /e2e working_dir: /overleaf/server-ce/test
volumes: volumes:
- ./:/e2e - ./:/overleaf/server-ce/test
user: "${DOCKER_USER:-1000:1000}" user: "${DOCKER_USER:-1000:1000}"
environment: environment:
CYPRESS_SHARD: CYPRESS_SHARD:

File diff suppressed because it is too large Load Diff

View File

@@ -18,9 +18,11 @@
"body-parser": "^1.20.3", "body-parser": "^1.20.3",
"celebrate": "^15.0.3", "celebrate": "^15.0.3",
"cypress": "13.13.2", "cypress": "13.13.2",
"cypress-multi-reporters": "^2.0.5",
"express": "^4.21.2", "express": "^4.21.2",
"isomorphic-git": "^1.33.1", "isomorphic-git": "^1.33.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"mocha-junit-reporter": "^2.2.1",
"pdf-parse": "^1.1.1", "pdf-parse": "^1.1.1",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"uuid": "^9.0.1" "uuid": "^9.0.1"

View File

@@ -486,7 +486,7 @@ pipeline {
// Ensure tear down of test containers, then run general Jenkins VM cleanup. // Ensure tear down of test containers, then run general Jenkins VM cleanup.
cleanup { cleanup {
dir('services/web') { dir('services/web') {
sh 'make clean' sh 'make clean -j10'
} }
sh 'make clean_jenkins' sh 'make clean_jenkins'
} }