config.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { reconfigure } from './hostAdminClient'
  2. import { resetActivateUserRateLimit, resetCreatedUsersCache } from './login'
  3. export const STARTUP_TIMEOUT =
  4. parseInt(Cypress.env('STARTUP_TIMEOUT'), 10) || 120_000
  5. export function isExcludedBySharding(
  6. shard:
  7. | 'LOCAL_ONLY'
  8. | 'CE_DEFAULT'
  9. | 'CE_CUSTOM_1'
  10. | 'CE_CUSTOM_2'
  11. | 'CE_CUSTOM_3'
  12. | 'PRO_DEFAULT_1'
  13. | 'PRO_DEFAULT_2'
  14. | 'PRO_CUSTOM_1'
  15. | 'PRO_CUSTOM_2'
  16. | 'PRO_CUSTOM_3'
  17. ) {
  18. const SHARD = Cypress.env('SHARD')
  19. return SHARD && shard !== SHARD
  20. }
  21. let previousConfigFrontend: string
  22. export function startWith({
  23. pro = false,
  24. version = 'latest',
  25. vars = {},
  26. varsFn = () => ({}),
  27. withDataDir = false,
  28. resetData = false,
  29. mongoVersion = '',
  30. }) {
  31. before(async function () {
  32. Object.assign(vars, varsFn())
  33. const cfg = JSON.stringify({
  34. pro,
  35. version,
  36. vars,
  37. withDataDir,
  38. resetData,
  39. mongoVersion,
  40. })
  41. if (resetData) {
  42. cy.log('resetting data and sessions')
  43. resetCreatedUsersCache()
  44. resetActivateUserRateLimit()
  45. // no return here, always reconfigure when resetting data
  46. } else if (previousConfigFrontend === cfg) {
  47. cy.log(`already running with ${cfg}`)
  48. return
  49. }
  50. cy.log(`starting with ${cfg}`)
  51. this.timeout(STARTUP_TIMEOUT)
  52. const { previousConfigServer } = await reconfigure({
  53. pro,
  54. version,
  55. vars,
  56. withDataDir,
  57. resetData,
  58. mongoVersion,
  59. })
  60. if (previousConfigServer !== cfg) {
  61. await Cypress.session.clearAllSavedSessions()
  62. }
  63. previousConfigFrontend = cfg
  64. })
  65. }
  66. export { reconfigure }