From 67915151aa655502bb091afeebcec44762e8ea06 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Mon, 16 Dec 2024 22:49:06 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(e2e)=20add=20a=20test=20on=20doc=20cr?= =?UTF-8?q?eation=20server=20side?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We recently added a new feature to the app, which is the ability to create a document from server to server. Server A will send a request to Server B with a markdown content, and Server B will create a the document after converting the markdown to yjs base64 format. This test will check all the steps of the process and assert that the document is displayed correctly on the frontend in the blocknote editor. --- env.d/development/common.e2e.dist | 3 ++ .../__tests__/app-impress/doc-create.spec.ts | 46 ++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/env.d/development/common.e2e.dist b/env.d/development/common.e2e.dist index b0faa27d..747b9a9d 100644 --- a/env.d/development/common.e2e.dist +++ b/env.d/development/common.e2e.dist @@ -1,3 +1,6 @@ # For the CI job test-e2e SUSTAINED_THROTTLE_RATES="200/hour" BURST_THROTTLE_RATES="200/minute" +DJANGO_SERVER_TO_SERVER_API_TOKENS=test-e2e +Y_PROVIDER_API_KEY=yprovider-api-key +Y_PROVIDER_API_BASE_URL=http://y-provider:4444/api/ diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts index b792c612..024acf65 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-create.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from '@playwright/test'; -import { createDoc } from './common'; +import { createDoc, goToGridDoc, keyCloakSignIn, randomName } from './common'; test.beforeEach(async ({ page }) => { await page.goto('/'); @@ -29,3 +29,47 @@ test.describe('Doc Create', () => { }); }); }); + +test.describe('Doc Create: Not loggued', () => { + test.use({ storageState: { cookies: [], origins: [] } }); + + test('it creates a doc server way', async ({ + page, + browserName, + request, + }) => { + const markdown = `This is a normal text\n\n# And this is a large heading`; + const [title] = randomName('My server way doc create', browserName, 1); + const data = { + title, + content: markdown, + sub: `user@${browserName}.e2e`, + email: `user@${browserName}.e2e`, + }; + + const newDoc = await request.post( + `http://localhost:8071/api/v1.0/documents/create-for-owner/`, + { + data, + headers: { + Authorization: 'Bearer test-e2e', + format: 'json', + }, + }, + ); + + expect(newDoc.ok()).toBeTruthy(); + + await keyCloakSignIn(page, browserName); + + await goToGridDoc(page, { title }); + + await expect(page.getByRole('heading', { name: title })).toBeVisible(); + + const editor = page.locator('.ProseMirror'); + await expect(editor.getByText('This is a normal text')).toBeVisible(); + await expect( + editor.locator('h1').getByText('And this is a large heading'), + ).toBeVisible(); + }); +});