diff --git a/api/src/engine/test/core.e2e-spec.ts b/api/src/engine/test/core.e2e-spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bb35467dd1911ea2f88c8af9f0268218ddfdb8a5
--- /dev/null
+++ b/api/src/engine/test/core.e2e-spec.ts
@@ -0,0 +1,47 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { Domain } from 'src/engine/models/domain.model';
+import { AppModule } from '../../main/app.module';
+import { TIMEOUT_DURATION_SECONDS } from '../connectors/exareme/interfaces/test-utilities';
+import { ENGINE_SERVICE } from '../engine.constants';
+import { IEngineService } from '../engine.interfaces';
+
+jest.setTimeout(1000 * TIMEOUT_DURATION_SECONDS);
+
+describe('Engine service', () => {
+  let engineService: IEngineService;
+  let domains: Domain[];
+
+  beforeAll(async () => {
+    const moduleRef: TestingModule = await Test.createTestingModule({
+      imports: [AppModule],
+    }).compile();
+
+    engineService = await moduleRef.resolve<IEngineService>(ENGINE_SERVICE);
+
+    domains = await engineService.getDomains([]);
+  });
+
+  it('Get domains', async () => {
+    expect(domains).toBeTruthy();
+    expect(domains.length).toBeGreaterThanOrEqual(1);
+  });
+
+  it('Get datasets', async () => {
+    domains.forEach((domain) => {
+      expect(domain.datasets).toBeTruthy();
+    });
+  });
+
+  it('Get algorithms', async () => {
+    const algorithms = await engineService.getAlgorithms();
+    expect(algorithms).toBeTruthy();
+    expect(algorithms.length).toBeGreaterThanOrEqual(1);
+  });
+
+  it('Get groups', async () => {
+    domains.forEach((domain) => {
+      expect(domain.groups).toBeTruthy();
+      expect(domain.groups.length).toBeGreaterThanOrEqual(1);
+    });
+  });
+});