config.ts 1.4 KB

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