cypress.config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { defineConfig } from 'cypress'
  2. import { addMatchImageSnapshotPlugin } from 'cypress-image-snapshot/plugin'
  3. import { rm } from 'node:fs/promises'
  4. import { resolve } from 'node:path'
  5. import pkg from '../package.json'
  6. const isCI = !!process.env.CI
  7. const root = resolve(__dirname, '..')
  8. // we don't need to optimize graphql and apollo
  9. const skipDeps = ['graphql', 'apollo']
  10. export default defineConfig({
  11. videosFolder: '.cypress/videos',
  12. supportFolder: '.cypress/support/index.js',
  13. fixturesFolder: '.cypress/fixtures',
  14. downloadsFolder: '.cypress/downloads',
  15. screenshotsFolder: '.cypress/screenshots',
  16. videoCompression: false,
  17. component: {
  18. supportFile: '.cypress/support/index.js',
  19. setupNodeEvents(on, config) {
  20. on('after:spec', (spec, results) => {
  21. if (results && results.stats.failures === 0 && results.video) {
  22. return rm(results.video)
  23. }
  24. })
  25. addMatchImageSnapshotPlugin(on, config)
  26. },
  27. devServer: {
  28. framework: 'vue',
  29. bundler: 'vite',
  30. viteConfig: {
  31. mode: 'cypress',
  32. root,
  33. configFile: resolve(__dirname, '..', 'vite.config.ts'),
  34. cacheDir: resolve(__dirname, 'node_modules', '.vite'),
  35. server: {
  36. fs: {
  37. strict: false,
  38. },
  39. hmr: !isCI,
  40. },
  41. optimizeDeps: {
  42. entries: [
  43. '**/cypress/**/*.cy.ts',
  44. '!**/node_modules/**',
  45. '!**/*.d.ts',
  46. ],
  47. include: [
  48. // if you see cypress failing on some dependency, add it to skipDeps
  49. ...Object.keys(pkg.dependencies).filter(
  50. (name) => !skipDeps.some((dep) => name.includes(dep)),
  51. ),
  52. ],
  53. },
  54. },
  55. },
  56. // iPhone 12 viewport
  57. viewportWidth: 390,
  58. viewportHeight: 844,
  59. fileServerFolder: '..',
  60. indexHtmlFile: '.cypress/support/component-index.html',
  61. specPattern: ['**/frontend/**/*.cy.{js,jsx,ts,tsx}'],
  62. },
  63. retries: {
  64. runMode: 2,
  65. openMode: 0,
  66. },
  67. })