import { setTimeout as wait } from "timers/promises"; import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication } from '@nestjs/common'; import * as request from 'supertest'; import { AppModule } from './../src/app.module'; describe('AppController (e2e)', () => { let app: INestApplication; beforeEach(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [AppModule], }).compile(); app = moduleFixture.createNestApplication(); await app.init(); }); afterEach(async () => { await app.close(); }) it('stores a job for suricrasia.online and completes it', async () => { const supertest = request(app.getHttpServer()) const jobCreateResponse = await supertest .post('/screenshots') .send({ pageUrl: 'https://suricrasia.online', imageType: 'png' }) expect(jobCreateResponse.status).toEqual(201) expect(jobCreateResponse.body.jobId).toBeDefined() const jobId = jobCreateResponse.body.jobId await wait(5000) const jobStatusResponse = await supertest.get(`/screenshots/${jobId}`) expect(jobStatusResponse.status).toEqual(200) expect(jobStatusResponse.body.status).toBeDefined() expect(jobStatusResponse.body.status).toEqual('completed') const jobResultResponse = await supertest.get(`/screenshots/${jobId}/result`) expect(jobResultResponse.status).toEqual(200) expect(jobResultResponse.body).toMatchImageSnapshot() }, 10000); });