diff --git a/codecov.yml b/codecov.yml index c5d31649d6..a9ce073c53 100644 --- a/codecov.yml +++ b/codecov.yml @@ -40,6 +40,7 @@ component_management: - packages/@n8n/decorators/** - packages/@n8n/constants/** - packages/@n8n/backend-common/** + - packages/@n8n/integration-test-utils/** - packages/@n8n/db/** - packages/@n8n/di/** - packages/@n8n/imap/** diff --git a/packages/@n8n/integration-test-utils/.eslintrc.js b/packages/@n8n/integration-test-utils/.eslintrc.js new file mode 100644 index 0000000000..8c5b78c5da --- /dev/null +++ b/packages/@n8n/integration-test-utils/.eslintrc.js @@ -0,0 +1,7 @@ +const sharedOptions = require('@n8n/eslint-config/shared'); + +/** @type {import('@types/eslint').ESLint.ConfigData} */ +module.exports = { + extends: ['@n8n/eslint-config/base'], + ...sharedOptions(__dirname), +}; diff --git a/packages/@n8n/integration-test-utils/package.json b/packages/@n8n/integration-test-utils/package.json new file mode 100644 index 0000000000..883ba9be4d --- /dev/null +++ b/packages/@n8n/integration-test-utils/package.json @@ -0,0 +1,29 @@ +{ + "name": "@n8n/integration-test-utils", + "version": "0.1.0", + "scripts": { + "clean": "rimraf dist .turbo", + "dev": "pnpm watch", + "typecheck": "tsc --noEmit", + "build": "tsc -p tsconfig.build.json", + "format": "biome format --write .", + "format:check": "biome ci .", + "lint": "eslint .", + "lintfix": "eslint . --fix", + "watch": "tsc -p tsconfig.build.json --watch", + "test": "jest", + "test:dev": "jest --watch" + }, + "main": "dist/index.js", + "module": "src/index.ts", + "types": "dist/index.d.ts", + "files": [ + "dist/**/*" + ], + "dependencies": { + "reflect-metadata": "catalog:" + }, + "devDependencies": { + "@n8n/typescript-config": "workspace:*" + } +} diff --git a/packages/@n8n/integration-test-utils/src/index.ts b/packages/@n8n/integration-test-utils/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/@n8n/integration-test-utils/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/@n8n/integration-test-utils/tsconfig.build.json b/packages/@n8n/integration-test-utils/tsconfig.build.json new file mode 100644 index 0000000000..ee0e3e20fd --- /dev/null +++ b/packages/@n8n/integration-test-utils/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "extends": ["./tsconfig.json", "@n8n/typescript-config/tsconfig.build.json"], + "compilerOptions": { + "composite": true, + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/__tests__/**"] +} diff --git a/packages/@n8n/integration-test-utils/tsconfig.json b/packages/@n8n/integration-test-utils/tsconfig.json new file mode 100644 index 0000000000..eca44d32aa --- /dev/null +++ b/packages/@n8n/integration-test-utils/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "@n8n/typescript-config/tsconfig.common.json", + "compilerOptions": { + "rootDir": ".", + "types": ["node", "jest"], + "baseUrl": "src", + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", + "experimentalDecorators": true, + "emitDecoratorMetadata": true + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/cli/package.json b/packages/cli/package.json index c773229ec1..185f9f170e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -95,6 +95,7 @@ "@n8n/config": "workspace:*", "@n8n/constants": "workspace:^", "@n8n/backend-common": "workspace:^", + "@n8n/integration-test-utils": "workspace:^", "@n8n/db": "workspace:^", "@n8n/decorators": "workspace:*", "@n8n/di": "workspace:*", diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 5406a5e228..60032df6c9 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -30,6 +30,7 @@ { "path": "../@n8n/decorators/tsconfig.build.json" }, { "path": "../@n8n/db/tsconfig.build.json" }, { "path": "../@n8n/backend-common/tsconfig.build.json" }, + { "path": "../@n8n/integration-test-utils/tsconfig.build.json" }, { "path": "../@n8n/di/tsconfig.build.json" }, { "path": "../@n8n/nodes-langchain/tsconfig.build.json" }, { "path": "../@n8n/permissions/tsconfig.build.json" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f4b015173..cd17374f63 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -686,6 +686,16 @@ importers: specifier: ^0.0.3 version: 0.0.3(patch_hash=083a73709a54db57b092d986b43d27ddda3cb8008f9510e98bc9e6da0e1cbb62) + packages/@n8n/integration-test-utils: + dependencies: + reflect-metadata: + specifier: 'catalog:' + version: 0.2.2 + devDependencies: + '@n8n/typescript-config': + specifier: workspace:* + version: link:../typescript-config + packages/@n8n/json-schema-to-zod: devDependencies: '@n8n/typescript-config': @@ -1098,6 +1108,9 @@ importers: '@n8n/di': specifier: workspace:* version: link:../@n8n/di + '@n8n/integration-test-utils': + specifier: workspace:^ + version: link:../@n8n/integration-test-utils '@n8n/localtunnel': specifier: 3.0.0 version: 3.0.0 diff --git a/turbo.json b/turbo.json index 3160634e1f..f3a3b4a589 100644 --- a/turbo.json +++ b/turbo.json @@ -31,6 +31,7 @@ "@n8n/decorators#lint", "@n8n/constants#lint", "@n8n/backend-common#lint", + "@n8n/integration-test-utils#lint", "@n8n/db#lint", "@n8n/di#lint", "@n8n/client-oauth2#lint",