Files
overleaf-cep/server-ce/test/cypress.config.js
Jakob Ackermann a51ba7a7d5 [server-ce] tests: add junit integration for Jenkins (#28732)
GitOrigin-RevId: b4c96ad71a02bf57c184a8031f475e3d1548c58a
2025-09-29 08:06:46 +00:00

70 lines
2.0 KiB
JavaScript

const { defineConfig } = require('cypress')
const { readPdf, readFileInZip } = require('./helpers/read-file')
const fs = require('node:fs')
if (process.env.CYPRESS_SHARD && !process.env.SPEC_PATTERN) {
// Running Cypress on all the specs is wasteful (~1min) when only few of them
// will have relevant tasks to run for a given shard. Filter the spec files
// based on the existence of the shard identifier in the spec source.
const files = []
for (const name of fs.readdirSync('.')) {
if (!name.endsWith('.spec.ts')) continue
const src = fs.readFileSync(name, 'utf-8')
if (!src.includes('isExcludedBySharding(')) {
throw new Error(
`Spec ${name} is not using sharding. Add an appropriate "'if (isExcludedBySharding('...')) return" call.`
)
}
if (!src.includes(process.env.CYPRESS_SHARD)) continue
files.push(name)
}
if (files.length === 0) {
throw new Error(
`Bad process.env.CYPRESS_SHARD=${process.env.CYPRESS_SHARD}; no spec files matched!`
)
}
if (files.length === 1) {
// Cypress does not like `{single-file}`. Make this a special case.
process.env.SPEC_PATTERN = `./${files[0]}`
} else {
process.env.SPEC_PATTERN = `./{${files.join(',')}}`
}
}
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({
defaultCommandTimeout: 10_000,
fixturesFolder: 'cypress/fixtures',
video: process.env.CYPRESS_VIDEO === 'true',
screenshotsFolder: 'cypress/results',
videosFolder: 'cypress/results',
videoUploadOnPasses: false,
viewportHeight: 768,
viewportWidth: 1024,
e2e: {
baseUrl: 'http://localhost',
setupNodeEvents(on, config) {
on('task', {
readPdf,
readFileInZip,
})
},
specPattern,
},
retries: {
runMode: 3,
},
...reporterOptions,
})