repo_description: Langflow is a powerful tool for building and deploying AI-powered agents and workflows.
repo_topics: agents chatgpt generative-ai large-language-models multiagent react-flow
code: module.exports = {
    preset: "ts-jest",
    testEnvironment: "jsdom",
    coverageProvider: "v8",
    injectGlobals: true,
    moduleNameMapper: {
      "\\.(css|less|scss|sass)$": "<rootDir>/src/__mocks__/styleMock.js",
      "^@/(.*)$": "<rootDir>/src/$1",
      "^@jsonquerylang/jsonquery$":
        "<rootDir>/src/__mocks__/@jsonquerylang/jsonquery.js",
      "^vanilla-jsoneditor$": "<rootDir>/src/__mocks__/vanilla-jsoneditor.js",
    },
    setupFilesAfterEnv: ["<rootDir>/src/setupTests.ts"],
    setupFiles: ["<rootDir>/jest.setup.js"],
    testMatch: [
      "<rootDir>/src/**/__tests__/**/*.{test,spec}.{ts,tsx}",
      "<rootDir>/src/**/*.{test,spec}.{ts,tsx}",
    ],
    testPathIgnorePatterns: ["/node_modules/", "test-utils.tsx"],
    transform: {
      "^.+\\.(ts|tsx)$": "<rootDir>/transform-import-meta.js",
    },
    moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"],
    // Ignore node_modules except for packages that need transformation
    transformIgnorePatterns: ["node_modules/(?!(.*\\.mjs$|@testing-library))"],
  
    // Coverage configuration
    collectCoverageFrom: [
      "src/**/*.{ts,tsx}",
      "!src/**/*.{test,spec}.{ts,tsx}",
      "!src/**/tests/**",
      "!src/**/__tests__/**",
      "!src/setupTests.ts",
      "!src/vite-env.d.ts",
      "!src/**/*.d.ts",
    ],
    coverageDirectory: "coverage/jest",
    coverageReporters: ["text", "lcov", "html", "json", "json-summary"],
    coveragePathIgnorePatterns: ["/node_modules/", "/tests/"],
  
    // CI-specific configuration
    ...(process.env.CI === "true" && {
      reporters: [
        "default",
        [
          "jest-junit",
          {
            outputDirectory: "test-results",
            outputName: "junit.xml",
            ancestorSeparator: " › ",
            uniqueOutputName: "false",
            suiteNameTemplate: "{filepath}",
            classNameTemplate: "{classname}",
            titleTemplate: "{title}",
          },
        ],
      ],
      maxWorkers: "50%",
      verbose: true,
    }),
  };
  