From 3b151cf5801a508d7b40346f280fed2be8924b4c Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 29 Jan 2025 09:46:21 +0100 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=8D=B1(readme)=20update=20europe=20<3?= =?UTF-8?q?=20opensource=20logo=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The name used for the logo europe<3opensource was causing trouble on windows systems. We have to rename it with a more "normal" name. --- README.md | 4 ++-- ...europe<3opensource.png => europe_opensource.png} | Bin 2 files changed, 2 insertions(+), 2 deletions(-) rename docs/assets/{europe<3opensource.png => europe_opensource.png} (100%) diff --git a/README.md b/README.md index 27b0e59f8..126413319 100644 --- a/README.md +++ b/README.md @@ -179,5 +179,5 @@ We are proud sponsors of [BlockNotejs](https://www.blocknotejs.org/) and [Yjs](h We are always looking for new public partners (we are currently onboarding the Netherlands 🇳🇱🧀), feel free to [reach out](https://matrix.to/#/#docs-official:matrix.org) if you are interested in using or contributing to Docs.

- -

\ No newline at end of file + +

diff --git a/docs/assets/europe<3opensource.png b/docs/assets/europe_opensource.png similarity index 100% rename from docs/assets/europe<3opensource.png rename to docs/assets/europe_opensource.png From 9b95a9c551c10529eef10504ceaa221807af6f5c Mon Sep 17 00:00:00 2001 From: Nathan Panchout Date: Wed, 29 Jan 2025 11:20:21 +0100 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=9A=B8(frontend)=20prevent=20duplicat?= =?UTF-8?q?e=20invite=20user=20row=20in=20DocShareModal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modify the DocShareModal to avoid showing the invite user row when the email already exists in the search results, preventing redundant invite options --- .../doc-share/components/DocShareModal.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx index af8a3a930..c4ed06383 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModal.tsx @@ -137,17 +137,20 @@ export const DocShareModal = ({ doc, onClose }: Props) => { short_name: '', }; + const hasEmailInUsers = users.some((user) => user.email === userQuery); + return { groupName: t('Search user result'), elements: users, - endActions: isEmail - ? [ - { - content: , - onSelect: () => void onSelect(newUser), - }, - ] - : undefined, + endActions: + isEmail && !hasEmailInUsers + ? [ + { + content: , + onSelect: () => void onSelect(newUser), + }, + ] + : undefined, }; }, [searchUsersQuery.data, t, userQuery]); From 78803916484d565df50b7d92ba1430f944ece717 Mon Sep 17 00:00:00 2001 From: Nathan Panchout Date: Wed, 29 Jan 2025 11:22:34 +0100 Subject: [PATCH 3/3] =?UTF-8?q?=E2=8F=AA=EF=B8=8F(frontend)=20rollback=20t?= =?UTF-8?q?est=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes were pushed by mistake. We go back. We reorder the tests correctly and return the environment variables to their original state. --- .../__tests__/app-impress/doc-editor.spec.ts | 46 ++++----- .../app-impress/doc-visibility.spec.ts | 94 +++++++++---------- src/frontend/apps/impress/.env | 2 + 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts index 02048c7f5..8dba8dab5 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-editor.spec.ts @@ -14,29 +14,6 @@ test.beforeEach(async ({ page }) => { }); test.describe('Doc Editor', () => { - test('it saves the doc when we quit pages', async ({ page, browserName }) => { - // eslint-disable-next-line playwright/no-skipped-test - test.skip(browserName === 'webkit', 'This test is very flaky with webkit'); - - // Check the first doc - const doc = await goToGridDoc(page); - - await verifyDocName(page, doc); - - const editor = page.locator('.ProseMirror'); - await editor.click(); - await editor.fill('Hello World Doc persisted 2'); - await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible(); - - await page.goto('/'); - - await goToGridDoc(page, { - title: doc, - }); - - await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible(); - }); - test('it check translations of the slash menu when changing language', async ({ page, browserName, @@ -264,6 +241,29 @@ test.describe('Doc Editor', () => { await expect(editor.getByText('Hello World Doc persisted 1')).toBeVisible(); }); + test('it saves the doc when we quit pages', async ({ page, browserName }) => { + // eslint-disable-next-line playwright/no-skipped-test + test.skip(browserName === 'webkit', 'This test is very flaky with webkit'); + + // Check the first doc + const doc = await goToGridDoc(page); + + await verifyDocName(page, doc); + + const editor = page.locator('.ProseMirror'); + await editor.click(); + await editor.fill('Hello World Doc persisted 2'); + await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible(); + + await page.goto('/'); + + await goToGridDoc(page, { + title: doc, + }); + + await expect(editor.getByText('Hello World Doc persisted 2')).toBeVisible(); + }); + test('it cannot edit if viewer', async ({ page }) => { await mockedDocument(page, { abilities: { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts index 5e5a9dc29..8414b0c75 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-visibility.spec.ts @@ -67,53 +67,6 @@ test.describe('Doc Visibility', () => { test.describe('Doc Visibility: Restricted', () => { test.use({ storageState: { cookies: [], origins: [] } }); - test('A doc is accessible when member.', async ({ page, browserName }) => { - test.slow(); - await page.goto('/'); - await keyCloakSignIn(page, browserName); - - const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1); - - await verifyDocName(page, docTitle); - - await page.getByRole('button', { name: 'Share' }).click(); - - const inputSearch = page.getByRole('combobox', { - name: 'Quick search input', - }); - - const otherBrowser = browsersName.find((b) => b !== browserName); - const username = `user@${otherBrowser}.e2e`; - await inputSearch.fill(username); - await page.getByRole('option', { name: username }).first().click(); - - // Choose a role - const container = page.getByTestId('doc-share-add-member-list'); - await container.getByLabel('doc-role-dropdown').click(); - await page.getByRole('button', { name: 'Administrator' }).click(); - - await page.getByRole('button', { name: 'Invite' }).click(); - - await page.locator('.c__modal__backdrop').click({ - position: { x: 0, y: 0 }, - }); - - const urlDoc = page.url(); - - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); - - await keyCloakSignIn(page, otherBrowser!); - - await page.goto(urlDoc); - - await verifyDocName(page, docTitle); - await expect(page.getByLabel('Share button')).toBeVisible(); - }); - test('A doc is not accessible when not authentified.', async ({ page, browserName, @@ -174,6 +127,53 @@ test.describe('Doc Visibility: Restricted', () => { page.getByText('You do not have permission to perform this action.'), ).toBeVisible(); }); + + test('A doc is accessible when member.', async ({ page, browserName }) => { + test.slow(); + await page.goto('/'); + await keyCloakSignIn(page, browserName); + + const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1); + + await verifyDocName(page, docTitle); + + await page.getByRole('button', { name: 'Share' }).click(); + + const inputSearch = page.getByRole('combobox', { + name: 'Quick search input', + }); + + const otherBrowser = browsersName.find((b) => b !== browserName); + const username = `user@${otherBrowser}.e2e`; + await inputSearch.fill(username); + await page.getByRole('option', { name: username }).click(); + + // Choose a role + const container = page.getByTestId('doc-share-add-member-list'); + await container.getByLabel('doc-role-dropdown').click(); + await page.getByRole('button', { name: 'Administrator' }).click(); + + await page.getByRole('button', { name: 'Invite' }).click(); + + await page.locator('.c__modal__backdrop').click({ + position: { x: 0, y: 0 }, + }); + + const urlDoc = page.url(); + + await page + .getByRole('button', { + name: 'Logout', + }) + .click(); + + await keyCloakSignIn(page, otherBrowser!); + + await page.goto(urlDoc); + + await verifyDocName(page, docTitle); + await expect(page.getByLabel('Share button')).toBeVisible(); + }); }); test.describe('Doc Visibility: Public', () => { diff --git a/src/frontend/apps/impress/.env b/src/frontend/apps/impress/.env index e69de29bb..3cf0e897e 100644 --- a/src/frontend/apps/impress/.env +++ b/src/frontend/apps/impress/.env @@ -0,0 +1,2 @@ +NEXT_PUBLIC_API_ORIGIN= +NEXT_PUBLIC_SW_DEACTIVATED=