mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 09:09:36 +02:00
[server-ce] tests: add junit integration for Jenkins (#28732)
GitOrigin-RevId: b4c96ad71a02bf57c184a8031f475e3d1548c58a
This commit is contained in:
1
server-ce/test/.gitignore
vendored
1
server-ce/test/.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
|
cypress-reports/
|
||||||
data/
|
data/
|
||||||
docker-mailtrap/
|
docker-mailtrap/
|
||||||
|
|||||||
11
server-ce/test/Jenkinsfile
vendored
11
server-ce/test/Jenkinsfile
vendored
@@ -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'
|
||||||
|
|||||||
@@ -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/%:
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
|
|||||||
10
server-ce/test/cypress/cypress-multi-reporters.json
Normal file
10
server-ce/test/cypress/cypress-multi-reporters.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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:
|
||||||
|
|||||||
782
server-ce/test/package-lock.json
generated
782
server-ce/test/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||||
|
|||||||
2
services/web/Jenkinsfile
vendored
2
services/web/Jenkinsfile
vendored
@@ -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'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user