config.ts 1.6 KB

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