Quellcode durchsuchen

refactor: Extract common e2e test config

This allows packages to share common config stuff and avoids duplicating code in each package's e2e dir.
Michael Bromley vor 6 Jahren
Ursprung
Commit
803f2683f3
43 geänderte Dateien mit 177 neuen und 208 gelöschten Zeilen
  1. 1 0
      README.md
  2. 1 1
      e2e-common/e2e-initial-data.ts
  3. 17 0
      e2e-common/get-package-dir.js
  4. 20 0
      e2e-common/jest-config.js
  5. 4 2
      e2e-common/test-config.ts
  6. 12 0
      e2e-common/tsconfig.e2e.json
  7. 4 3
      packages/core/e2e/administrator.e2e-spec.ts
  8. 3 4
      packages/core/e2e/apollo-server-plugin.e2e-spec.ts
  9. 4 3
      packages/core/e2e/auth.e2e-spec.ts
  10. 4 3
      packages/core/e2e/channel.e2e-spec.ts
  11. 3 3
      packages/core/e2e/collection.e2e-spec.ts
  12. 0 15
      packages/core/e2e/config/jest-e2e.json
  13. 0 28
      packages/core/e2e/config/test-config.ts
  14. 1 10
      packages/core/e2e/config/tsconfig.e2e.json
  15. 4 3
      packages/core/e2e/country.e2e-spec.ts
  16. 4 3
      packages/core/e2e/custom-fields.e2e-spec.ts
  17. 4 3
      packages/core/e2e/customer.e2e-spec.ts
  18. 4 3
      packages/core/e2e/default-search-plugin.e2e-spec.ts
  19. 4 3
      packages/core/e2e/entity-id-strategy.e2e-spec.ts
  20. 8 7
      packages/core/e2e/entity-uuid-strategy.e2e-spec.ts
  21. 4 3
      packages/core/e2e/facet.e2e-spec.ts
  22. 3 3
      packages/core/e2e/import.e2e-spec.ts
  23. 4 3
      packages/core/e2e/localization.e2e-spec.ts
  24. 4 3
      packages/core/e2e/order-promotion.e2e-spec.ts
  25. 4 3
      packages/core/e2e/order.e2e-spec.ts
  26. 4 3
      packages/core/e2e/plugin.e2e-spec.ts
  27. 3 3
      packages/core/e2e/product-option.e2e-spec.ts
  28. 4 3
      packages/core/e2e/product.e2e-spec.ts
  29. 4 3
      packages/core/e2e/promotion.e2e-spec.ts
  30. 4 3
      packages/core/e2e/role.e2e-spec.ts
  31. 4 3
      packages/core/e2e/shipping-method.e2e-spec.ts
  32. 7 6
      packages/core/e2e/shop-auth.e2e-spec.ts
  33. 4 3
      packages/core/e2e/shop-catalog.e2e-spec.ts
  34. 4 3
      packages/core/e2e/shop-customer.e2e-spec.ts
  35. 4 3
      packages/core/e2e/shop-order.e2e-spec.ts
  36. 4 3
      packages/core/e2e/stock-control.e2e-spec.ts
  37. 4 3
      packages/core/e2e/zone.e2e-spec.ts
  38. 1 1
      packages/core/package.json
  39. 0 15
      packages/elasticsearch-plugin/e2e/config/jest-e2e.json
  40. 1 10
      packages/elasticsearch-plugin/e2e/config/tsconfig.e2e.json
  41. 3 3
      packages/elasticsearch-plugin/e2e/elasticsearch-plugin.e2e-spec.ts
  42. 0 30
      packages/elasticsearch-plugin/e2e/fixtures/e2e-initial-data.ts
  43. 1 1
      packages/elasticsearch-plugin/package.json

+ 1 - 0
README.md

@@ -14,6 +14,7 @@ This project is a monorepo managed with [Lerna](https://github.com/lerna/lerna).
 ```
 vendure/
 ├── docs/           # Documentation source
+├── e2e-common/     # Shared config for package e2e tests
 ├── packages/       # Source for the Vendure server, admin-ui & plugin packages
 ├── scripts/
     ├── changelog/  # Scripts used to generate the changelog based on the git history

+ 1 - 1
packages/core/e2e/fixtures/e2e-initial-data.ts → e2e-common/e2e-initial-data.ts

@@ -1,6 +1,6 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 
-import { InitialData } from '../../src/data-import';
+import { InitialData } from '../packages/core/src/data-import/index';
 
 export const initialData: InitialData = {
     defaultLanguage: LanguageCode.en,

+ 17 - 0
e2e-common/get-package-dir.js

@@ -0,0 +1,17 @@
+const path = require('path');
+
+/**
+ * @return {string}
+ */
+function getPackageDir() {
+    const packageArg = process.argv.find(arg => arg.startsWith('--package='));
+
+    if (!packageArg) {
+        console.error('No package specified! Please pass --package=<packageDirName>');
+        process.exit(1);
+    }
+    const packageDirname = packageArg.split('=')[1];
+    return path.join(__dirname, '../packages', packageDirname, 'e2e')
+}
+
+module.exports = { getPackageDir };

+ 20 - 0
e2e-common/jest-config.js

@@ -0,0 +1,20 @@
+const path = require('path');
+const { getPackageDir } = require('./get-package-dir');
+
+const packageDirname = getPackageDir();
+
+module.exports = {
+  'moduleFileExtensions': ['js', 'json', 'ts'],
+  'rootDir': packageDirname,
+  'testRegex': '.e2e-spec.ts$',
+  'transform': {
+    '^.+\\.(t|j)s$': 'ts-jest',
+  },
+  'testEnvironment': 'node',
+  'globals': {
+    'ts-jest': {
+      'tsConfig': '<rootDir>/config/tsconfig.e2e.json',
+      'diagnostics': false,
+    },
+  },
+};

+ 4 - 2
packages/elasticsearch-plugin/e2e/config/test-config.ts → e2e-common/test-config.ts

@@ -2,6 +2,8 @@ import { mergeConfig } from '@vendure/core';
 import { testConfig as defaultTestConfig } from '@vendure/testing';
 import path from 'path';
 
+import { getPackageDir } from './get-package-dir';
+
 /**
  * We use a relatively long timeout on the initial beforeAll() function of the
  * e2e tests because on the first run (and always in CI) the sqlite databases
@@ -19,10 +21,10 @@ if (process.env.E2E_DEBUG) {
     jest.setTimeout(1800 * 1000);
 }
 
-export const dataDir = path.join(__dirname, '../__data__');
+const packageDir = getPackageDir();
 
 export const testConfig = mergeConfig(defaultTestConfig, {
     importExportOptions: {
-        importAssetsDir: path.join(__dirname, '..', 'fixtures/assets'),
+        importAssetsDir: path.join(packageDir, 'fixtures/assets'),
     },
 });

+ 12 - 0
e2e-common/tsconfig.e2e.json

@@ -0,0 +1,12 @@
+{
+  "extends": "../tsconfig.json",
+  "compilerOptions": {
+    "types": ["jest", "node"],
+    "lib": ["es2015"],
+    "skipLibCheck": false,
+    "inlineSourceMap": true,
+    "allowSyntheticDefaultImports": true,
+    "esModuleInterop": true,
+    "allowJs": true
+  }
+}

+ 4 - 3
packages/core/e2e/administrator.e2e-spec.ts

@@ -2,8 +2,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { ADMINISTRATOR_FRAGMENT } from './graphql/fragments';
 import {
     Administrator,
@@ -21,7 +22,7 @@ describe('Administrator resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 3 - 4
packages/core/e2e/apollo-server-plugin.e2e-spec.ts

@@ -7,11 +7,10 @@ import {
 import gql from 'graphql-tag';
 import path from 'path';
 
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 import { createTestEnvironment } from '../../testing/lib/create-test-environment';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
-
 class MyApolloServerPlugin implements ApolloServerPlugin {
     static serverWillStartFn = jest.fn();
     static requestDidStartFn = jest.fn();
@@ -46,7 +45,7 @@ describe('custom apolloServerPlugins', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/auth.e2e-spec.ts

@@ -5,8 +5,9 @@ import { DocumentNode } from 'graphql';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     CreateAdministrator,
     CreateRole,
@@ -32,7 +33,7 @@ describe('Authorization & permissions', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/channel.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment, E2E_DEFAULT_CHANNEL_TOKEN } from '@vendure/testi
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     AssignProductsToChannel,
     CreateAdministrator,
@@ -43,7 +44,7 @@ describe('Channels', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 3 - 3
packages/core/e2e/collection.e2e-spec.ts

@@ -8,10 +8,10 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 import { pick } from '../../common/lib/pick';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
 import { COLLECTION_FRAGMENT, FACET_VALUE_FRAGMENT } from './graphql/fragments';
 import {
     Collection,
@@ -61,7 +61,7 @@ describe('Collection resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-collections.csv'),
             customerCount: 1,

+ 0 - 15
packages/core/e2e/config/jest-e2e.json

@@ -1,15 +0,0 @@
-{
-  "moduleFileExtensions": ["js", "json", "ts"],
-  "rootDir": "../",
-  "testRegex": ".e2e-spec.ts$",
-  "transform": {
-    "^.+\\.(t|j)s$": "ts-jest"
-  },
-  "testEnvironment": "node",
-  "globals": {
-    "ts-jest": {
-      "tsConfig": "<rootDir>/config/tsconfig.e2e.json",
-      "diagnostics": false
-    }
-  }
-}

+ 0 - 28
packages/core/e2e/config/test-config.ts

@@ -1,28 +0,0 @@
-import { mergeConfig } from '@vendure/core';
-import { testConfig as defaultTestConfig } from '@vendure/testing';
-import path from 'path';
-
-/**
- * We use a relatively long timeout on the initial beforeAll() function of the
- * e2e tests because on the first run (and always in CI) the sqlite databases
- * need to be generated, which can take a while.
- */
-export const TEST_SETUP_TIMEOUT_MS = process.env.E2E_DEBUG ? 1800 * 1000 : 120000;
-
-/**
- * For local debugging of the e2e tests, we set a very long timeout value otherwise tests will
- * automatically fail for going over the 5 second default timeout.
- */
-if (process.env.E2E_DEBUG) {
-    // tslint:disable-next-line:no-console
-    console.log('E2E_DEBUG', process.env.E2E_DEBUG, ' - setting long timeout');
-    jest.setTimeout(1800 * 1000);
-}
-
-export const dataDir = path.join(__dirname, '../__data__');
-
-export const testConfig = mergeConfig(defaultTestConfig, {
-    importExportOptions: {
-        importAssetsDir: path.join(__dirname, '..', 'fixtures/assets'),
-    },
-});

+ 1 - 10
packages/core/e2e/config/tsconfig.e2e.json

@@ -1,13 +1,4 @@
 {
-  "extends": "../../tsconfig.json",
-  "compilerOptions": {
-    "types": ["jest", "node"],
-    "lib": ["es2015"],
-    "skipLibCheck": false,
-    "inlineSourceMap": true,
-    "allowSyntheticDefaultImports": true,
-    "esModuleInterop": true,
-    "allowJs": true
-  },
+  "extends": "../../../../e2e-common/tsconfig.e2e.json",
   "include": ["../**/*.e2e-spec.ts", "../**/*.d.ts"]
 }

+ 4 - 3
packages/core/e2e/country.e2e-spec.ts

@@ -2,8 +2,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { COUNTRY_FRAGMENT } from './graphql/fragments';
 import {
     CreateCountry,
@@ -26,7 +27,7 @@ describe('Facet resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/custom-fields.e2e-spec.ts

@@ -7,8 +7,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { assertThrowsWithMessage } from './utils/assert-throws-with-message';
 
 // tslint:disable:no-non-null-assertion
@@ -100,7 +101,7 @@ describe('Custom fields', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/customer.e2e-spec.ts

@@ -11,8 +11,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { CUSTOMER_FRAGMENT } from './graphql/fragments';
 import {
     CreateAddress,
@@ -61,7 +62,7 @@ describe('Customer resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 5,

+ 4 - 3
packages/core/e2e/default-search-plugin.e2e-spec.ts

@@ -5,8 +5,9 @@ import { createTestEnvironment, E2E_DEFAULT_CHANNEL_TOKEN, SimpleGraphQLClient }
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     AssignProductsToChannel,
     CreateChannel,
@@ -49,7 +50,7 @@ describe('Default search plugin', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/entity-id-strategy.e2e-spec.ts

@@ -3,8 +3,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     IdTest1,
     IdTest2,
@@ -22,7 +23,7 @@ describe('EntityIdStrategy', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 8 - 7
packages/core/e2e/entity-uuid-strategy.e2e-spec.ts

@@ -3,18 +3,19 @@ import { UuidIdStrategy } from '@vendure/core';
 import { createTestEnvironment } from '@vendure/testing';
 import path from 'path';
 
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+import '../src/index';
+
+import { GetProductList } from './graphql/generated-e2e-admin-types';
+import { GET_PRODUCT_LIST } from './graphql/shared-definitions';
+
 // This import is here to simulate the behaviour of
 // the package end-user importing symbols from the
 // @vendure/core barrel file. Doing so will then cause the
 // recusrsive evaluation of all imported files. This tests
 // the resilience of the id strategy implementation to the
 // order of file evaluation.
-import '../src/index';
-
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
-import { GetProductList } from './graphql/generated-e2e-admin-types';
-import { GET_PRODUCT_LIST } from './graphql/shared-definitions';
 
 describe('UuidIdStrategy', () => {
     const { server, adminClient } = createTestEnvironment({
@@ -24,7 +25,7 @@ describe('UuidIdStrategy', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/facet.e2e-spec.ts

@@ -2,8 +2,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { FACET_VALUE_FRAGMENT, FACET_WITH_VALUES_FRAGMENT } from './graphql/fragments';
 import {
     CreateFacet,
@@ -41,7 +42,7 @@ describe('Facet resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 3 - 3
packages/core/e2e/import.e2e-spec.ts

@@ -2,8 +2,8 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 
 describe('Import resolver', () => {
     const { server, adminClient } = createTestEnvironment({
@@ -16,7 +16,7 @@ describe('Import resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-empty.csv'),
             customerCount: 0,

+ 4 - 3
packages/core/e2e/localization.e2e-spec.ts

@@ -3,8 +3,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     GetProductWithVariants,
     LanguageCode,
@@ -19,7 +20,7 @@ describe('Role resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/order-promotion.e2e-spec.ts

@@ -10,8 +10,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { testSuccessfulPaymentMethod } from './fixtures/test-payment-methods';
 import {
     CreatePromotion,
@@ -66,7 +67,7 @@ describe('Promotions applied to Orders', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-promotions.csv'),
             customerCount: 2,

+ 4 - 3
packages/core/e2e/order.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment, SimpleGraphQLClient } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     failsToSettlePaymentMethod,
     singleStageRefundablePaymentMethod,
@@ -60,7 +61,7 @@ describe('Orders resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 3,

+ 4 - 3
packages/core/e2e/plugin.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     TestAPIExtensionPlugin,
     TestLazyExtensionPlugin,
@@ -41,7 +42,7 @@ describe('Plugins', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 3 - 3
packages/core/e2e/product-option.e2e-spec.ts

@@ -2,10 +2,10 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 import { omit } from '../../common/lib/omit';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
 import {
     CreateProductOption,
     CreateProductOptionGroup,
@@ -25,7 +25,7 @@ describe('ProductOption resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             customerCount: 1,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),

+ 4 - 3
packages/core/e2e/product.e2e-spec.ts

@@ -5,8 +5,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     AddOptionGroupToProduct,
     CreateProduct,
@@ -47,7 +48,7 @@ describe('Product resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             customerCount: 1,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),

+ 4 - 3
packages/core/e2e/promotion.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { PROMOTION_FRAGMENT } from './graphql/fragments';
 import {
     CreatePromotion,
@@ -49,7 +50,7 @@ describe('Promotion resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/role.e2e-spec.ts

@@ -8,8 +8,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { ROLE_FRAGMENT } from './graphql/fragments';
 import {
     CreateChannel,
@@ -34,7 +35,7 @@ describe('Role resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/shipping-method.e2e-spec.ts

@@ -8,8 +8,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     CreateShippingMethod,
     DeleteShippingMethod,
@@ -53,7 +54,7 @@ describe('ShippingMethod resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 7 - 6
packages/core/e2e/shop-auth.e2e-spec.ts

@@ -17,8 +17,9 @@ import { DocumentNode } from 'graphql';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     CreateAdministrator,
     CreateRole,
@@ -84,7 +85,7 @@ describe('Shop auth & accounts', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 2,
@@ -544,7 +545,7 @@ describe('Expiring tokens', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,
@@ -633,7 +634,7 @@ describe('Registration without email verification', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,
@@ -707,7 +708,7 @@ describe('Updating email address without email verification', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/shop-catalog.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     CreateCollection,
     CreateFacet,
@@ -44,7 +45,7 @@ describe('Shop catalog', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 4 - 3
packages/core/e2e/shop-customer.e2e-spec.ts

@@ -3,8 +3,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { AttemptLogin, GetCustomer, GetCustomerIds } from './graphql/generated-e2e-admin-types';
 import {
     CreateAddressInput,
@@ -32,7 +33,7 @@ describe('Shop customers', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 2,

+ 4 - 3
packages/core/e2e/shop-order.e2e-spec.ts

@@ -3,8 +3,9 @@ import { mergeConfig } from '@vendure/core';
 import { createTestEnvironment } from '@vendure/testing';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import {
     testErrorPaymentMethod,
     testFailingPaymentMethod,
@@ -77,7 +78,7 @@ describe('Shop orders', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 2,

+ 4 - 3
packages/core/e2e/stock-control.e2e-spec.ts

@@ -4,8 +4,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { testSuccessfulPaymentMethod } from './fixtures/test-payment-methods';
 import { VARIANT_WITH_STOCK_FRAGMENT } from './graphql/fragments';
 import {
@@ -43,7 +44,7 @@ describe('Stock control', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-stock-control.csv'),
             customerCount: 2,

+ 4 - 3
packages/core/e2e/zone.e2e-spec.ts

@@ -2,8 +2,9 @@ import { createTestEnvironment } from '@vendure/testing';
 import gql from 'graphql-tag';
 import path from 'path';
 
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+
 import { ZONE_FRAGMENT } from './graphql/fragments';
 import {
     AddMembersToZone,
@@ -29,7 +30,7 @@ describe('Facet resolver', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
             customerCount: 1,

+ 1 - 1
packages/core/package.json

@@ -22,7 +22,7 @@
     "watch": "concurrently yarn:tsc:watch yarn:gulp:watch",
     "lint": "tslint --fix --project ./",
     "test": "jest --config ./jest.config.js",
-    "e2e": "jest --config ./e2e/config/jest-e2e.json --runInBand"
+    "e2e": "jest --config ../../e2e-common/jest-config.js --runInBand --package=core"
   },
   "publishConfig": {
     "access": "public"

+ 0 - 15
packages/elasticsearch-plugin/e2e/config/jest-e2e.json

@@ -1,15 +0,0 @@
-{
-  "moduleFileExtensions": ["js", "json", "ts"],
-  "rootDir": "../",
-  "testRegex": ".e2e-spec.ts$",
-  "transform": {
-    "^.+\\.(t|j)s$": "ts-jest"
-  },
-  "testEnvironment": "node",
-  "globals": {
-    "ts-jest": {
-      "tsConfig": "<rootDir>/config/tsconfig.e2e.json",
-      "diagnostics": false
-    }
-  }
-}

+ 1 - 10
packages/elasticsearch-plugin/e2e/config/tsconfig.e2e.json

@@ -1,13 +1,4 @@
 {
-  "extends": "../../tsconfig.json",
-  "compilerOptions": {
-    "types": ["jest", "node"],
-    "lib": ["es2015"],
-    "skipLibCheck": false,
-    "inlineSourceMap": true,
-    "allowSyntheticDefaultImports": true,
-    "esModuleInterop": true,
-    "allowJs": true
-  },
+  "extends": "../../../../e2e-common/tsconfig.e2e.json",
   "include": ["../**/*.e2e-spec.ts", "../**/*.d.ts"]
 }

+ 3 - 3
packages/elasticsearch-plugin/e2e/elasticsearch-plugin.e2e-spec.ts

@@ -7,6 +7,8 @@ import { createTestEnvironment, E2E_DEFAULT_CHANNEL_TOKEN, SimpleGraphQLClient }
 import gql from 'graphql-tag';
 import path from 'path';
 
+import { initialData } from '../../../e2e-common/e2e-initial-data';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 import {
     AssignProductsToChannel,
     CreateChannel,
@@ -43,8 +45,6 @@ import { ElasticsearchPlugin } from '../src/plugin';
 
 import { SEARCH_PRODUCTS_SHOP } from './../../core/e2e/graphql/shop-definitions';
 import { awaitRunningJobs } from './../../core/e2e/utils/await-running-jobs';
-import { dataDir, TEST_SETUP_TIMEOUT_MS, testConfig } from './config/test-config';
-import { initialData } from './fixtures/e2e-initial-data';
 import { GetJobInfo, JobState, Reindex } from './graphql/generated-e2e-elasticsearch-plugin-types';
 
 describe('Elasticsearch plugin', () => {
@@ -64,7 +64,7 @@ describe('Elasticsearch plugin', () => {
 
     beforeAll(async () => {
         await server.init({
-            dataDir,
+            dataDir: path.join(__dirname, '__data__'),
             initialData,
             productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-full.csv'),
             customerCount: 1,

+ 0 - 30
packages/elasticsearch-plugin/e2e/fixtures/e2e-initial-data.ts

@@ -1,30 +0,0 @@
-import { LanguageCode } from '@vendure/common/lib/generated-types';
-import { InitialData } from '@vendure/core';
-
-export const initialData: InitialData = {
-    defaultLanguage: LanguageCode.en,
-    defaultZone: 'Europe',
-    taxRates: [
-        { name: 'Standard Tax', percentage: 20 },
-        { name: 'Reduced Tax', percentage: 10 },
-        { name: 'Zero Tax', percentage: 0 },
-    ],
-    shippingMethods: [{ name: 'Standard Shipping', price: 500 }, { name: 'Express Shipping', price: 1000 }],
-    countries: [
-        { name: 'Australia', code: 'AU', zone: 'Oceania' },
-        { name: 'Austria', code: 'AT', zone: 'Europe' },
-        { name: 'Canada', code: 'CA', zone: 'Americas' },
-        { name: 'China', code: 'CN', zone: 'Asia' },
-        { name: 'South Africa', code: 'ZA', zone: 'Africa' },
-        { name: 'United Kingdom', code: 'GB', zone: 'Europe' },
-        { name: 'United States of America', code: 'US', zone: 'Americas' },
-    ],
-    collections: [
-        {
-            name: 'Plants',
-            filters: [
-                { code: 'facet-value-filter', args: { facetValueNames: ['plants'], containsAny: false } },
-            ],
-        },
-    ],
-};

+ 1 - 1
packages/elasticsearch-plugin/package.json

@@ -12,7 +12,7 @@
     "build": "rimraf lib && tsc -p ./tsconfig.build.json",
     "lint": "tslint --fix --project ./",
     "test": "jest --config ./jest.config.js",
-    "e2e": "jest --config ./e2e/config/jest-e2e.json"
+    "e2e": "jest --config ../../e2e-common/jest-config.js --runInBand --package=elasticsearch-plugin"
   },
   "publishConfig": {
     "access": "public"