From a01c5f97caa43992b7e7107d96708c103e5c7440 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Wed, 1 Apr 2026 18:23:46 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(e2e)=20e2e=20instances=20compatibilit?= =?UTF-8?q?y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We want to be able to run our e2e tests on any instance of Docs, to do so we need to make some adjustments to our tests and configuration. We will use environment variables to configure the tests. --- CHANGELOG.md | 1 + src/frontend/apps/e2e/.env | 22 + src/frontend/apps/e2e/.env.example | 29 + src/frontend/apps/e2e/.gitignore | 1 + .../assets/base-content-test-pdf.txt | 2 +- .../doc-export-PDF-browser-regressions.pdf | Bin 611424 -> 588836 bytes .../assets/doc-export-regressions.pdf | 124 ++-- .../e2e/__tests__/app-impress/auth.setup.ts | 4 +- .../e2e/__tests__/app-impress/config.spec.ts | 69 +- .../e2e/__tests__/app-impress/doc-ai.spec.ts | 612 +++++++++++------- .../app-impress/doc-comments.spec.ts | 46 +- .../__tests__/app-impress/doc-create.spec.ts | 25 +- .../__tests__/app-impress/doc-editor.spec.ts | 421 ++++++------ .../__tests__/app-impress/doc-export.spec.ts | 8 + .../app-impress/doc-grid-move.spec.ts | 20 +- .../__tests__/app-impress/doc-import.spec.ts | 2 +- .../app-impress/doc-inherited-share.spec.ts | 14 +- .../app-impress/doc-member-create.spec.ts | 30 +- .../app-impress/doc-member-list.spec.ts | 9 +- .../__tests__/app-impress/doc-routing.spec.ts | 13 +- .../app-impress/doc-trashbin.spec.ts | 36 +- .../__tests__/app-impress/doc-tree.spec.ts | 51 +- .../app-impress/doc-visibility.spec.ts | 135 ++-- .../e2e/__tests__/app-impress/footer.spec.ts | 68 +- .../e2e/__tests__/app-impress/header.spec.ts | 73 +-- .../e2e/__tests__/app-impress/help.spec.ts | 20 +- .../e2e/__tests__/app-impress/home.spec.ts | 11 +- .../__tests__/app-impress/language.spec.ts | 2 +- .../e2e/__tests__/app-impress/utils-common.ts | 47 +- .../e2e/__tests__/app-impress/utils-export.ts | 4 +- .../e2e/__tests__/app-impress/utils-share.ts | 6 +- .../e2e/__tests__/app-impress/utils-signin.ts | 94 +++ src/frontend/apps/e2e/package.json | 1 + src/frontend/apps/e2e/playwright.config.ts | 32 +- 34 files changed, 1182 insertions(+), 850 deletions(-) create mode 100644 src/frontend/apps/e2e/.env create mode 100644 src/frontend/apps/e2e/.env.example create mode 100644 src/frontend/apps/e2e/__tests__/app-impress/utils-signin.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e974991f..2091c3a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to ### Added - 🚸(frontend) allow opening "@page" links with ctrl/command/middle-mouse click +- ✅ E2E - Any instance friendly #2142 ## [v4.8.5] - 2026-04-03 diff --git a/src/frontend/apps/e2e/.env b/src/frontend/apps/e2e/.env new file mode 100644 index 000000000..608debf7a --- /dev/null +++ b/src/frontend/apps/e2e/.env @@ -0,0 +1,22 @@ +PORT=3000 +BASE_URL=http://localhost:3000 +BASE_API_URL=http://localhost:8071/api/v1.0 +COLLABORATION_WS_URL=ws://localhost:4444/collaboration/ws/ +COLLABORATION_WS_NOT_CONNECTED_READY_ONLY=true +MEDIA_BASE_URL=http://localhost:8083 +CUSTOM_SIGN_IN=false +IS_INSTANCE=false +SIGN_IN_EL_LOGIN_PAGE='.login-pf #kc-header-wrapper' +SIGN_IN_EL_TRIGGER=Start Writing +FIRST_NAME=E2E +SIGN_IN_USERNAME_CHROMIUM=user.test@chromium.test +USERNAME_CHROMIUM=E2E Chromium +SIGN_IN_USERNAME_WEBKIT=user.test@webkit.test +USERNAME_WEBKIT=E2E Webkit +SIGN_IN_USERNAME_FIREFOX=user.test@firefox.test +USERNAME_FIREFOX=E2E Firefox +# To test server to server API calls +SERVER_TO_SERVER_API_TOKENS='server-api-token' +SUB_CHROMIUM=user.test@chromium.test +SUB_WEBKIT=user.test@webkit.test +SUB_FIREFOX=user.test@firefox.test \ No newline at end of file diff --git a/src/frontend/apps/e2e/.env.example b/src/frontend/apps/e2e/.env.example new file mode 100644 index 000000000..081715ac1 --- /dev/null +++ b/src/frontend/apps/e2e/.env.example @@ -0,0 +1,29 @@ +PORT=3000 +BASE_URL=http://localhost:3000 +BASE_API_URL=http://localhost:8071/api/v1.0 +COLLABORATION_WS_URL=ws://localhost:4444/collaboration/ws/ +COLLABORATION_WS_NOT_CONNECTED_READY_ONLY=true +MEDIA_BASE_URL=http://localhost:8083 +IS_INSTANCE=false +CUSTOM_SIGN_IN=false +SIGN_IN_EL_LOGIN_PAGE='.login-pf #kc-header-wrapper' +SIGN_IN_EL_TRIGGER=Start Writing +FIRST_NAME=E2E +SIGN_IN_USERNAME_CHROMIUM=user.test@chromium.test +USERNAME_CHROMIUM=E2E Chromium +SIGN_IN_USERNAME_WEBKIT=user.test@webkit.test +USERNAME_WEBKIT=E2E Webkit +SIGN_IN_USERNAME_FIREFOX=user.test@firefox.test +USERNAME_FIREFOX=E2E Firefox +# Used only on instance with custom sign in +SIGN_IN_EL_USERNAME_INPUT= +SIGN_IN_EL_USERNAME_VALIDATION= +SIGN_IN_EL_PASSWORD_INPUT= +SIGN_IN_PASSWORD_CHROMIUM= +SIGN_IN_PASSWORD_WEBKIT= +SIGN_IN_PASSWORD_FIREFOX= +# To test server to server API calls +SERVER_TO_SERVER_API_TOKENS='server-api-token' +SUB_CHROMIUM=user.test@chromium.test +SUB_WEBKIT=user.test@webkit.test +SUB_FIREFOX=user.test@firefox.test \ No newline at end of file diff --git a/src/frontend/apps/e2e/.gitignore b/src/frontend/apps/e2e/.gitignore index c4488d95b..594bc8821 100644 --- a/src/frontend/apps/e2e/.gitignore +++ b/src/frontend/apps/e2e/.gitignore @@ -5,3 +5,4 @@ blob-report/ playwright/.auth/ playwright/.cache/ screenshots/ +.env.local \ No newline at end of file diff --git a/src/frontend/apps/e2e/__tests__/app-impress/assets/base-content-test-pdf.txt b/src/frontend/apps/e2e/__tests__/app-impress/assets/base-content-test-pdf.txt index 29d081525..f1987d808 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/assets/base-content-test-pdf.txt +++ b/src/frontend/apps/e2e/__tests__/app-impress/assets/base-content-test-pdf.txt @@ -1 +1 @@ -"AhLJoobnCQCon5aq3wi2CgJ3JDZiZjc3NDE2LWMwN2EtNGM5Yy1iODk4LTEyMjk5YTNmZjlkOHckY2U0ZDQ4ODgtM2RiYS00YTM1LTlkNzktZTI5NmIxYWI3NjIwBwCflqrfCM8DBgQAyaKG5wkCBUhlbGxvhMmihucJBwfCoCBDb8KghMmihucJDAggQ2FsbG91dMeflqrfCKUIn5aq3wjCCAMOYmxvY2tDb250YWluZXIHAMmihucJFQMJcGFyYWdyYXBoKADJoobnCRYPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAyaKG5wkWCXRleHRDb2xvcgF3B2RlZmF1bHQoAMmihucJFg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAyaKG5wkVAmlkAXckNjUxODk5ZmUtZTI5Yy00ZTRkLTg2OTQtYmY5YTNlZDQwNWZmqJ+Wqt8IwQgBdyQwZTVmMDcwNS0yY2JjLTQ5ZDAtYWE1OS0wNDE4YTFhNDc5MTHHn5aq3wjgA5+Wqt8InwgDDmJsb2NrQ29udGFpbmVyBwDJoobnCRwDCXBhcmFncmFwaCgAyaKG5wkdD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAMmihucJHQl0ZXh0Q29sb3IBdwdkZWZhdWx0KADJoobnCR0NdGV4dEFsaWdubWVudAF3BGxlZnQoAMmihucJHAJpZAF3JGZiN2UzMTRmLTA3YjEtNDFhZi04OTIyLWNmNTM3YjRkYjNjYf8Fn5aq3wgABwEOZG9jdW1lbnQtc3RvcmUDCmJsb2NrR3JvdXAHAJ+Wqt8IAAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IAQMJcGFyYWdyYXBoBwCflqrfCAIGBACflqrfCAMKSGVsbG8gVGV4dCgAn5aq3wgCD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IAgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCAINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IAQJpZAF3DmluaXRpYWxCbG9ja0lkh5+Wqt8IAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IEgMHaGVhZGluZwcAn5aq3wgTBgYAn5aq3wgUBGJvbGQCe32Gn5aq3wgVCXRleHRDb2xvchZ7InN0cmluZ1ZhbHVlIjoiYmx1ZSJ9hJ+Wqt8IFg9IZWxsbyBIZWFkaW5nIDGGn5aq3wglBGJvbGQEbnVsbIaflqrfCCYJdGV4dENvbG9yBG51bGwoAJ+Wqt8IEw9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCBMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wgTDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCBMFbGV2ZWwBfQEoAJ+Wqt8IEwxpc1RvZ2dsZWFibGUBeSgAn5aq3wgSAmlkAXckYzRjMjY0OTUtY2E5Yy00Yzc4LTkzZGItMzQxMWM3YjQ3ZDVmh5+Wqt8IEgMOYmxvY2tDb250YWluZXIHAJ+Wqt8ILgMHaGVhZGluZwcAn5aq3wgvBgYAn5aq3wgwBGJvbGQCe32En5aq3wgxD0hlbGxvIEhlYWRpbmcgMoaflqrfCEAEYm9sZARudWxsKACflqrfCC8PYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wgvCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8ILw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wgvBWxldmVsAX0CKACflqrfCC8MaXNUb2dnbGVhYmxlAXkoAJ+Wqt8ILgJpZAF3JDM3OWU0ODQ0LWU1ZjUtNGY3Yi1hNWJjLWVjOTc2N2IxNGFiOIeflqrfCC4DDmJsb2NrQ29udGFpbmVyBwCflqrfCEgDB2hlYWRpbmcHAJ+Wqt8ISQYGAJ+Wqt8ISgRib2xkAnt9hp+Wqt8ISw9iYWNrZ3JvdW5kQ29sb3IXeyJzdHJpbmdWYWx1ZSI6ImdyZWVuIn2En5aq3whMD0hlbGxvIEhlYWRpbmcgM4aflqrfCFsEYm9sZARudWxshp+Wqt8IXA9iYWNrZ3JvdW5kQ29sb3IEbnVsbCgAn5aq3whJD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8ISQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCEkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8ISQVsZXZlbAF9AygAn5aq3whJDGlzVG9nZ2xlYWJsZQF5KACflqrfCEgCaWQBdyRmZTlkZWEwZi1jY2Y3LTQwM2QtYmMwNS1jOTMxMjM5OGZkZDOHn5aq3whIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3whkAwlwYXJhZ3JhcGgoAJ+Wqt8IZQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCGUJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3whlDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCGQCaWQBdyQwMDMzNDlmNy02NTEzLTRlOTQtOWFkMS00MzBhZDgwNTQyNWWHn5aq3whkAw5ibG9ja0NvbnRhaW5lcgcAn5aq3whqAw1jaGVja0xpc3RJdGVtBwCflqrfCGsGBACflqrfCGwQQ2hlY2tsaXN0IEl0ZW0gMSgAn5aq3whrD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8Iawl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCGsNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IawdjaGVja2VkAXkoAJ+Wqt8IagJpZAF3JDc5MmJlM2E3LWMzODQtNDEzYy1iMmMzLWE4Y2NjNDFkZmI0NoeflqrfCGoDDmJsb2NrQ29udGFpbmVyBwCflqrfCIIBAw1jaGVja0xpc3RJdGVtBwCflqrfCIMBBgQAn5aq3wiEARBDaGVja2xpc3QgSXRlbSAyKACflqrfCIMBD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IgwEJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiDAQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wiDAQdjaGVja2VkAXgoAJ+Wqt8IggECaWQBdyQwYzM3OTRkYS1kNzdlLTQ4ZWYtYTQzZi0wMTRlOTkwOGE5ZTaHn5aq3wiCAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8ImgEDCXBhcmFncmFwaCgAn5aq3wibAQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCJsBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8ImwENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8ImgECaWQBdyRjZGNlYzk3Yy04NzlkLTQxNzctODg5MC0xZjdhZmU0ODkxZTmHn5aq3wiaAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IoAEDBXF1b3RlBwCflqrfCKEBBgQAn5aq3wiiAQtIZWxsbyBRdW90ZSgAn5aq3wihAQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKEBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IoAECaWQBdyQ3ZDBhNWRiMS03MjIyLTQ1MzEtYWI4My1mY2ZjN2IzZjcxMmWHn5aq3wigAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IsQEDCXBhcmFncmFwaCgAn5aq3wiyAQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCLIBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsgENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IsQECaWQBdyRhMDNkYTZiYS1mZmI1LTRiNWQtOGZmMi1hNzU0OGZiZWFmMDWHn5aq3wixAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8ItwEDDnRvZ2dsZUxpc3RJdGVtBwCflqrfCLgBBgQAn5aq3wi5ARNIZWxsbyBUb2dnbGUgTGlzdCAxKACflqrfCLgBD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IuAEJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wi4AQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wi3AQJpZAF3JGY3M2FmYjQ5LWM4YTctNGZhZi04YThmLTVhZjM4MTJkMDBlM4eflqrfCLcBAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjRAQMJcGFyYWdyYXBoKACflqrfCNIBD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I0gEJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjSAQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjRAQJpZAF3JGU1ODQ0MjY4LTMxMTYtNDIyMS05NzcwLWFlMjNiNGE5OTk5ZIeflqrfCNEBAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjXAQMQbnVtYmVyZWRMaXN0SXRlbQcAn5aq3wjYAQYEAJ+Wqt8I2QEUTnVtYmVyZWQgTGlzdCBJdGVtIDEoAJ+Wqt8I2AEPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wjYAQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCNgBDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCNgBBXN0YXJ0AX8oAJ+Wqt8I1wECaWQBdyQ5NzViODZmYy03OThiLTRmYzUtOWMyNy1mMGY3NmU5MzdjNzeHn5aq3wjXAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8I8wEDEG51bWJlcmVkTGlzdEl0ZW0HAJ+Wqt8I9AEGBACflqrfCPUBFE51bWJlcmVkIExpc3QgSXRlbSAyKACflqrfCPQBD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I9AEJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wj0AQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wj0AQVzdGFydAF/KACflqrfCPMBAmlkAXckMWQ4NWYzNWYtN2U3Ni00OGQ1LTkwNGYtOWZkOGUxZWI1ZDBkh5+Wqt8I8wEDDmJsb2NrQ29udGFpbmVyBwCflqrfCI8CAwlwYXJhZ3JhcGgoAJ+Wqt8IkAIPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiQAgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJACDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCI8CAmlkAXckMmYzNjFkMGEtNGU5NC00NjlhLTllZWYtYzg1YTI5NDZlMjY3h5+Wqt8IjwIDDmJsb2NrQ29udGFpbmVyBwCflqrfCJUCAw5idWxsZXRMaXN0SXRlbQcAn5aq3wiWAgYEAJ+Wqt8IlwISQnVsbGV0IExpc3QgSXRlbSAxKACflqrfCJYCD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IlgIJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiWAg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wiVAgJpZAF3JDAzZGEyMDJhLTQ0NDQtNDVmMi05Yzc4LTljODU1MDBkNmZkM4eflqrfCJUCAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiuAgMOYnVsbGV0TGlzdEl0ZW0HAJ+Wqt8IrwIGBACflqrfCLACEkJ1bGxldCBMaXN0IEl0ZW0gMigAn5aq3wivAg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCK8CCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IrwINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IrgICaWQBdyQ5MjNlNDk3Yy1mODQ4LTRkZmMtYTJlMi02ZTEwYmFlMDU2NWGHn5aq3wiuAgMOYmxvY2tDb250YWluZXIHAJ+Wqt8IxwIDCXBhcmFncmFwaCgAn5aq3wjIAg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMgCCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IyAINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IxwICaWQBdyQ3MjBjYjVmOS1mYTlhLTRkMWEtODc0OS03NmQ0ODcyYTE0NjOHn5aq3wjHAgMOYmxvY2tDb250YWluZXIHAJ+Wqt8IzQIDCWNvZGVCbG9jawcAn5aq3wjOAgYGAJ+Wqt8IzwIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMjQ5LCAxMTcsIDEzMSkifYSflqrfCNACBWNvbnN0hp+Wqt8I1QIJdGV4dENvbG9yBG51bGyGn5aq3wjWAgl0ZXh0Q29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigyMjUsIDIyOCwgMjMyKSJ9hJ+Wqt8I1wIBIIaflqrfCNgCCXRleHRDb2xvcgRudWxshp+Wqt8I2QIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMTIxLCAxODQsIDI1NSkifYSflqrfCNoCAWGGn5aq3wjbAgl0ZXh0Q29sb3IEbnVsbIaflqrfCNwCCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDIyNSwgMjI4LCAyMzIpIn2En5aq3wjdAgEghp+Wqt8I3gIJdGV4dENvbG9yBG51bGyGn5aq3wjfAgl0ZXh0Q29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigyNDksIDExNywgMTMxKSJ9hJ+Wqt8I4AIBPYaflqrfCOECCXRleHRDb2xvcgRudWxshp+Wqt8I4gIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMjI1LCAyMjgsIDIzMikifYSflqrfCOMCASCGn5aq3wjkAgl0ZXh0Q29sb3IEbnVsbIaflqrfCOUCCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDEyMSwgMTg0LCAyNTUpIn2En5aq3wjmAgIxMIaflqrfCOgCCXRleHRDb2xvcgRudWxshp+Wqt8I6QIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMjI1LCAyMjgsIDIzMikifYSflqrfCOoCATuGn5aq3wjrAgl0ZXh0Q29sb3IEbnVsbCgAn5aq3wjOAghsYW5ndWFnZQF3CmphdmFzY3JpcHQoAJ+Wqt8IzQICaWQBdyRjYmNiZjUyMy0zODFmLTRmMzQtOTlmYy0zZmU5MzA3YTFkODKHn5aq3wjNAgMOYmxvY2tDb250YWluZXIHAJ+Wqt8I7wIDCXBhcmFncmFwaCgAn5aq3wjwAg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCPACCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I8AINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I7wICaWQBdyQ1Y2RkNmU5MC04MzYwLTQ1MTctOWI5MS03OGY4NjMzYWI1ZTCHn5aq3wjvAgMOYmxvY2tDb250YWluZXIHAJ+Wqt8I9QIDB2RpdmlkZXIoAJ+Wqt8I9QICaWQBdyQwOTFhNjY1Zi1hMmJjLTQwYjEtOWVkOS02MGJkMzQ5YWE5NmSHn5aq3wj1AgMOYmxvY2tDb250YWluZXIHAJ+Wqt8I+AIDCXBhcmFncmFwaCgAn5aq3wj5Ag9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCPkCCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I+QINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I+AICaWQBdyRkZGMxNWVjYi1mZmUxLTRiYzktOWVkMy01YWNiOTAxOTVkOGWHn5aq3wj4AgMOYmxvY2tDb250YWluZXIHAJ+Wqt8I/gIDCXBhZ2VCcmVhaygAn5aq3wj+AgJpZAF3JGM4MWE1NGQxLTQyMDEtNDAyOS1iNWIzLTMwNDBhNjA3NzBlM4eflqrfCP4CAwpjb2x1bW5MaXN0BwCflqrfCIEDAwZjb2x1bW4HAJ+Wqt8IggMDDmJsb2NrQ29udGFpbmVyBwCflqrfCIMDAwlwYXJhZ3JhcGgHAJ+Wqt8IhAMGBACflqrfCIUDDUNvbHVtbiAxIFRleHQoAJ+Wqt8IhAMPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiEAwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCIQDDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCIMDAmlkAXckMDJjYzRhNTAtOGQwNS00MzA3LWI3YzctMzZlYjI3ODE1OTNkKACflqrfCIIDAmlkAXckMTNlYjA4Y2QtNTkyOC00Y2ZiLWFkMzAtM2RiZGMwMDgzMjFlKACflqrfCIIDBXdpZHRoAX0Bh5+Wqt8IggMDBmNvbHVtbgcAn5aq3wiZAwMOYmxvY2tDb250YWluZXIHAJ+Wqt8ImgMDCXBhcmFncmFwaAcAn5aq3wibAwYEAJ+Wqt8InAMNQ29sdW1uIDIgVGV4dCgAn5aq3wibAw9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCJsDCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8ImwMNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8ImgMCaWQBdyQ2NTA5ZGYzZS03MmViLTQ3ZjEtYmNiMC1lNzgyZjM4YTkwODkoAJ+Wqt8ImQMCaWQBdyQwMGEyNmFiMC1kYzI1LTRhZGYtOWQ5MC1iYTNmYTAwM2VmYmIoAJ+Wqt8ImQMFd2lkdGgBfQGHn5aq3wiZAwMGY29sdW1uBwCflqrfCLADAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wixAwMJcGFyYWdyYXBoBwCflqrfCLIDBgQAn5aq3wizAw1Db2x1bW4gMyBUZXh0KACflqrfCLIDD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsgMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiyAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wixAwJpZAF3JDg1NTg5ZTJjLWI1MDQtNGY2OS05MjFlLTkyZjkxNzhmZjFiOYeflqrfCLEDAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjFAwMJcGFyYWdyYXBoKACflqrfCMYDD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IxgMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjGAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjFAwJpZAF3JGNlMzdkMzJhLTUwZjgtNDBlZi1iNWVjLTA0MWVkYTMzNWY5NSgAn5aq3wiwAwJpZAF3JDg5NTg1NWU3LWMyMGItNDk5Ny04YzkyLWIyNmUyMDc4Nzc2MCgAn5aq3wiwAwV3aWR0aAF9ASgAn5aq3wiBAwJpZAF3JDc5NDIzYTU3LTFlNWEtNDQ4My04YmY5LTQzMzhmYzY1ZTVjMYeflqrfCIEDAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjOAwMHY2FsbG91dCgAn5aq3wjPAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjPAw9iYWNrZ3JvdW5kQ29sb3IBdwZ5ZWxsb3coAJ+Wqt8IzwMFZW1vamkBdwTwn5KhKACflqrfCM4DAmlkAXckYjJhYjhjN2EtYzcwZC00Mzc5LTg4ZTUtZWI5NzQ3Njc2Yjkyh5+Wqt8IzgMDDmJsb2NrQ29udGFpbmVyBwCflqrfCNQDAwlwYXJhZ3JhcGgoAJ+Wqt8I1QMPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wjVAwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCNUDDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCNQDAmlkAXckODg0NTBmY2MtMjUwZC00Y2ZkLWE3NmQtNzgzMWExMGQyNjE0h5+Wqt8I1AMDDmJsb2NrQ29udGFpbmVyBwCflqrfCNoDAwlwYXJhZ3JhcGgoAJ+Wqt8I2wMPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wjbAwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCNsDDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCNoDAmlkAXckNjc2YTQ3NTItZmQ4OC00OTY1LWIzYmUtZGRmNzE4ZWZkM2Rih5+Wqt8I2gMDDmJsb2NrQ29udGFpbmVyBwCflqrfCOADAwV0YWJsZQcAn5aq3wjhAwMIdGFibGVSb3cHAJ+Wqt8I4gMDCXRhYmxlQ2VsbAcAn5aq3wjjAwMOdGFibGVQYXJhZ3JhcGgHAJ+Wqt8I5AMGBgCflqrfCOUDBGJvbGQCe32En5aq3wjmAwtCUklE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b2xvcgF3B2RlZmF1bHQoAJ+Wqt8IgwgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IgwgHY29sc3BhbgF9ASgAn5aq3wiDCAdyb3dzcGFuAX0BKACflqrfCIMICGNvbHdpZHRoAXUBfT+Hn5aq3wiDCAMJdGFibGVDZWxsBwCflqrfCJAIAw50YWJsZVBhcmFncmFwaAcAn5aq3wiRCAYEAJ+Wqt8IkggEMTQsNCgAn5aq3wiQCAl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJAID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IkAgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IkAgHY29sc3BhbgF9ASgAn5aq3wiQCAdyb3dzcGFuAX0BKACflqrfCJAICGNvbHdpZHRoAXUBfYcBKACflqrfCOEDCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I4AMCaWQBdyRmMmQwYmNjZS03YmI5LTQ4NzUtODFiMC1kYjJiOTk0NjkwNTSHn5aq3wjgAwMOYmxvY2tDb250YWluZXIHAJ+Wqt8InwgDCXBhcmFncmFwaCgAn5aq3wigCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKAICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IoAgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8InwgCaWQBdyRhYTJiNWQ2MC1mMDFhLTRmNGQtODkxNC00ZTljY2FlNDgwYTSHn5aq3wifCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IpQgDCXBhcmFncmFwaAcAn5aq3wimCAMYaW50ZXJsaW5raW5nU2VhcmNoSW5saW5lKACflqrfCKcIB3RyaWdnZXIBdwEvKACflqrfCKcICGRpc2FibGVkAXiHn5aq3winCAMWaW50ZXJsaW5raW5nTGlua0lubGluZSgAn5aq3wiqCAVkb2NJZAF3JDAyMmQwNDhjLTZkMDctNGU1OC1iM2ZjLTljNDNhMjg3MTJlOSgAn5aq3wiqCAV0aXRsZQF3D1Rlc3QgUmVncmVzc2lvbigAn5aq3wimCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKYICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IpggNdGV4dEFsaWdubWVudAF3BGxlZnSHn5aq3wimCAMKYmxvY2tHcm91cAcAn5aq3wiwCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IsQgDBWltYWdlKACflqrfCLIIDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCLIID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsggEbmFtZQF3ACgAn5aq3wiyCAN1cmwBdxZodHRwOi8vbG9jYWxob3N0OjMwMDAvKACflqrfCLIIB2NhcHRpb24BdwAoAJ+Wqt8IsggLc2hvd1ByZXZpZXcBeCgAn5aq3wiyCAxwcmV2aWV3V2lkdGgBfygAn5aq3wixCAJpZAF3JDk1Y2Q0NDI2LTA4YTgtNGRlZC1iNTcxLWZlYWUzYmMyMzA0ZYeflqrfCLEIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wi7CAMJcGFyYWdyYXBoKACflqrfCLwID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IvAgJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wi8CA10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wi7CAJpZAF3JDY1MTg5OWZlLWUyOWMtNGU0ZC04Njk0LWJmOWEzZWQ0MDVmZigAn5aq3wilCAJpZAF3JGZiN2UzMTRmLTA3YjEtNDFhZi04OTIyLWNmNTM3YjRkYjNjYYeflqrfCKUIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjCCAMHaGVhZGluZwcAn5aq3wjDCAYGAJ+Wqt8IxAgEYm9sZAJ7fYSflqrfCMUIEkhlbGxvIFRpdGxlIFRvZ2dsZYaflqrfCNcIBGJvbGQEbnVsbCgAn5aq3wjDCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMMICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IwwgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IwwgFbGV2ZWwBfQEoAJ+Wqt8IwwgMaXNUb2dnbGVhYmxlAXgoAJ+Wqt8IwggCaWQBdyRmZTMyZGNiOC0zMjVjLTQyZTEtYjQ2Zi04NDVlZTUxMmI1NGWHn5aq3wjCCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8I3wgDCXBhcmFncmFwaCgAn5aq3wjgCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCOAICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I4AgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I3wgCaWQBdyRiNmFlOWZhNS04MWJhLTQzNmMtOWYyMC04NTk4MGNkNTUxYjWHn5aq3wjfCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8I5QgDB2hlYWRpbmcHAJ+Wqt8I5ggGBgCflqrfCOcIBGJvbGQCe32En5aq3wjoCA1IZWxsbyB0aXRsZSA0hp+Wqt8I9QgEYm9sZARudWxsKACflqrfCOYID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I5ggJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjmCA10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjmCAVsZXZlbAF9BCgAn5aq3wjmCAxpc1RvZ2dsZWFibGUBeSgAn5aq3wjlCAJpZAF3JDU5MWE1YjUwLWZjZjAtNDJjYi1iNDdiLTlhZDc5ZjUzN2ZkMYeflqrfCOUIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wj9CAMJcGFyYWdyYXBoKACflqrfCP4ID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I/ggJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wj+CA10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wj9CAJpZAF3JDRmNDkxYzE3LTk4ZDktNDdkOS04ZmYxLTg4MDdhZmQzMGY3ZYeflqrfCP0IAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiDCQMHaGVhZGluZwcAn5aq3wiECQYGAJ+Wqt8IhQkEYm9sZAJ7fYSflqrfCIYJDUhlbGxvIHRpdGxlIDWGn5aq3wiTCQRib2xkBG51bGwoAJ+Wqt8IhAkPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiECQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCIQJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCIQJBWxldmVsAX0FKACflqrfCIQJDGlzVG9nZ2xlYWJsZQF5KACflqrfCIMJAmlkAXckNTk0OTQ1MzUtODQxNS00MmU0LTk2YWMtNjQxYjFiY2E1NmFhh5+Wqt8IgwkDDmJsb2NrQ29udGFpbmVyBwCflqrfCJsJAwlwYXJhZ3JhcGgoAJ+Wqt8InAkPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wicCQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJwJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJsJAmlkAXckMDZhOTcxMmUtYjYwZi00NzYzLWI2ZmItM2M2N2FjYTBmNTY4h5+Wqt8ImwkDDmJsb2NrQ29udGFpbmVyBwCflqrfCKEJAwdoZWFkaW5nBwCflqrfCKIJBgYAn5aq3wijCQRib2xkAnt9hJ+Wqt8IpAkNSGVsbG8gdGl0bGUgNoaflqrfCLEJBGJvbGQEbnVsbCgAn5aq3wiiCQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKIJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IogkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IogkFbGV2ZWwBfQYoAJ+Wqt8IogkMaXNUb2dnbGVhYmxlAXkoAJ+Wqt8IoQkCaWQBdyRhMTQzMjQ2MS00MWUwLTQ3YTAtYjEzZS01ZmM3MzI0YmNhMjKHn5aq3wihCQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IuQkDCXBhcmFncmFwaCgAn5aq3wi6CQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCLoJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IugkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IuQkCaWQBdyQzOWIwNzcxNy1iOWRiLTQ0OTMtOGVmMC1hYzE4MTE4Mzc3M2OHn5aq3wi5CQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IvwkDCXBhcmFncmFwaAcAn5aq3wjACQYEAJ+Wqt8IwQkN8J+nmeKAjeKZgu+4j4aflqrfCMYJCXRleHRDb2xvciF7InN0cmluZ1ZhbHVlIjoicmdiKDY5LCA2OSwgODgpIn2Gn5aq3wjHCQ9iYWNrZ3JvdW5kQ29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigyNTUsIDI1NSwgMjU1KSJ9hJ+Wqt8IyAk88J+Yg/Cfjonwn5qA8J+Zi+KAjeKZgO+4j/Cfp5Hwn4+/4oCN4p2k77iP4oCN8J+Si+KAjfCfp5Hwn4++hp+Wqt8I4gkJdGV4dENvbG9yBG51bGyGn5aq3wjjCQ9iYWNrZ3JvdW5kQ29sb3IEbnVsbISflqrfCOQJDCBNYWdpYyBlbW9qaSgAn5aq3wjACQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMAJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IwAkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IvwkCaWQBdyRlNWJlN2UwYi0wYTBiLTQzMzQtYTE4Ni00MDJlMDUwYjc2YWGHn5aq3wi/CQMOYmxvY2tDb250YWluZXIHAJ+Wqt8I9QkDB2hlYWRpbmcHAJ+Wqt8I9gkGBgCflqrfCPcJBGJvbGQCe32En5aq3wj4CRdjb3B5L3Bhc3Rpbmcgb3V0IG9mIGRvY4aflqrfCI8KBGJvbGQEbnVsbCgAn5aq3wj2CQ9iYWNrZ3JvdW5kQ29sb3IBdw9yZ2IoMTMsIDE3LCAyMykoAJ+Wqt8I9gkJdGV4dENvbG9yAXcScmdiKDI0MCwgMjQ2LCAyNTIpKACflqrfCPYJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCPYJBWxldmVsAX0BKACflqrfCPYJDGlzVG9nZ2xlYWJsZQF5KACflqrfCPUJAmlkAXckY2FlZGEwNWMtNDFlZi00MjlhLThjOWItNDc5NDcyYTZlZGE1h5+Wqt8I9QkDDmJsb2NrQ29udGFpbmVyBwCflqrfCJcKAwlwYXJhZ3JhcGgoAJ+Wqt8ImAoPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiYCgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJgKDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJcKAmlkAXckMDQzMDJiNWUtYzJhMy00MjgxLTk2NTYtM2M3ZTU0MjVhZWFkh5+Wqt8IlwoDDmJsb2NrQ29udGFpbmVyBwCflqrfCJ0KAwVpbWFnZSgAn5aq3wieCg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wieCg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCJ4KBG5hbWUBdwh0ZXN0LnN2ZygAn5aq3wieCgN1cmwBd3VodHRwOi8vbG9jYWxob3N0OjgwODMvbWVkaWEvYTQxOGE5NjQtYTZmOS00YmE2LTkyYzEtYmY0Njc2NmMzMTk1L2F0dGFjaG1lbnRzLzM4ZTFmNTFhLTgzZTAtNDUzNi04ZmIwLWM3ZjFhMDMxNTUwZC5zdmcoAJ+Wqt8IngoHY2FwdGlvbgF3ACgAn5aq3wieCgtzaG93UHJldmlldwF4KACflqrfCJ4KDHByZXZpZXdXaWR0aAF/KACflqrfCJ0KAmlkAXckMWUwZGE1YjAtMzNjYi00MDcwLTgzYmQtODQxNjNkYzY0MGJmh5+Wqt8InQoDDmJsb2NrQ29udGFpbmVyBwCflqrfCKcKAwVpbWFnZSgAn5aq3wioCg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wioCg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKgKBG5hbWUBdxhsb2dvLXN1aXRlLW51bWVyaXF1ZS5wbmcoAJ+Wqt8IqAoDdXJsAXd1aHR0cDovL2xvY2FsaG9zdDo4MDgzL21lZGlhL2E0MThhOTY0LWE2ZjktNGJhNi05MmMxLWJmNDY3NjZjMzE5NS9hdHRhY2htZW50cy8wODZjNTM3Yi1jMGVkLTQ5ZGUtYWE3Yy01YjhjOTNhMWE4MjkucG5nKACflqrfCKgKB2NhcHRpb24BdwAoAJ+Wqt8IqAoLc2hvd1ByZXZpZXcBeCgAn5aq3wioCgxwcmV2aWV3V2lkdGgBfygAn5aq3winCgJpZAF3JGY0NTUyYjhjLWYxYzktNDlhZS04ZTA1LTczMzM1NTJiMjk0ZYeflqrfCKcKAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wixCgMJcGFyYWdyYXBoKACflqrfCLIKD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsgoJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiyCg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wixCgJpZAF3JDBkMmU3N2EyLWRkNWMtNDFlMC1hN2E2LTEyMjA1ODBlYzRmYgLJoobnCQMAAggFFQaflqrfCAOfCAa7CAedCho=" \ No newline at end of file +"Ag7JoobnCQAAAgcAn5aq3wjPAwYEAMmihucJAgVIZWxsb4HJoobnCQcFhMmihucJDAggQ2FsbG91dMGflqrfCKUIn5aq3wjCCAEABaiflqrfCMEIAXckMGU1ZjA3MDUtMmNiYy00OWQwLWFhNTktMDQxOGExYTQ3OTExx5+Wqt8I4AOflqrfCJ8IAw5ibG9ja0NvbnRhaW5lcgcAyaKG5wkcAwlwYXJhZ3JhcGgoAMmihucJHQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KADJoobnCR0JdGV4dENvbG9yAXcHZGVmYXVsdCgAyaKG5wkdDXRleHRBbGlnbm1lbnQBdwRsZWZ0KADJoobnCRwCaWQBdyRmYjdlMzE0Zi0wN2IxLTQxYWYtODkyMi1jZjUzN2I0ZGIzY2HjBZ+Wqt8IAAcBDmRvY3VtZW50LXN0b3JlAwpibG9ja0dyb3VwBwCflqrfCAADDmJsb2NrQ29udGFpbmVyBwCflqrfCAEDCXBhcmFncmFwaAcAn5aq3wgCBgQAn5aq3wgDCkhlbGxvIFRleHQoAJ+Wqt8IAg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCAIJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wgCDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCAECaWQBdw5pbml0aWFsQmxvY2tJZIeflqrfCAEDDmJsb2NrQ29udGFpbmVyBwCflqrfCBIDB2hlYWRpbmcHAJ+Wqt8IEwYGAJ+Wqt8IFARib2xkAnt9hp+Wqt8IFQl0ZXh0Q29sb3IWeyJzdHJpbmdWYWx1ZSI6ImJsdWUifYSflqrfCBYPSGVsbG8gSGVhZGluZyAxhp+Wqt8IJQRib2xkBG51bGyGn5aq3wgmCXRleHRDb2xvcgRudWxsKACflqrfCBMPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wgTCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IEw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wgTBWxldmVsAX0BKACflqrfCBMMaXNUb2dnbGVhYmxlAXkoAJ+Wqt8IEgJpZAF3JGM0YzI2NDk1LWNhOWMtNGM3OC05M2RiLTM0MTFjN2I0N2Q1ZoeflqrfCBIDDmJsb2NrQ29udGFpbmVyBwCflqrfCC4DB2hlYWRpbmcHAJ+Wqt8ILwYGAJ+Wqt8IMARib2xkAnt9hJ+Wqt8IMQ9IZWxsbyBIZWFkaW5nIDKGn5aq3whABGJvbGQEbnVsbCgAn5aq3wgvD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8ILwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCC8NdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8ILwVsZXZlbAF9AigAn5aq3wgvDGlzVG9nZ2xlYWJsZQF5KACflqrfCC4CaWQBdyQzNzllNDg0NC1lNWY1LTRmN2ItYTViYy1lYzk3NjdiMTRhYjiHn5aq3wguAw5ibG9ja0NvbnRhaW5lcgcAn5aq3whIAwdoZWFkaW5nBwCflqrfCEkGBgCflqrfCEoEYm9sZAJ7fYaflqrfCEsPYmFja2dyb3VuZENvbG9yF3sic3RyaW5nVmFsdWUiOiJncmVlbiJ9hJ+Wqt8ITA9IZWxsbyBIZWFkaW5nIDOGn5aq3whbBGJvbGQEbnVsbIaflqrfCFwPYmFja2dyb3VuZENvbG9yBG51bGwoAJ+Wqt8ISQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCEkJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3whJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCEkFbGV2ZWwBfQMoAJ+Wqt8ISQxpc1RvZ2dsZWFibGUBeSgAn5aq3whIAmlkAXckZmU5ZGVhMGYtY2NmNy00MDNkLWJjMDUtYzkzMTIzOThmZGQzh5+Wqt8ISAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IZAMJcGFyYWdyYXBoKACflqrfCGUPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3whlCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IZQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3whkAmlkAXckMDAzMzQ5ZjctNjUxMy00ZTk0LTlhZDEtNDMwYWQ4MDU0MjVlh5+Wqt8IZAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IagMNY2hlY2tMaXN0SXRlbQcAn5aq3whrBgQAn5aq3whsEENoZWNrbGlzdCBJdGVtIDEoAJ+Wqt8Iaw9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCGsJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3whrDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCGsHY2hlY2tlZAF5KACflqrfCGoCaWQBdyQ3OTJiZTNhNy1jMzg0LTQxM2MtYjJjMy1hOGNjYzQxZGZiNDaHn5aq3whqAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiCAQMNY2hlY2tMaXN0SXRlbQcAn5aq3wiDAQYEAJ+Wqt8IhAEQQ2hlY2tsaXN0IEl0ZW0gMigAn5aq3wiDAQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCIMBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IgwENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IgwEHY2hlY2tlZAF4KACflqrfCIIBAmlkAXckMGMzNzk0ZGEtZDc3ZS00OGVmLWE0M2YtMDE0ZTk5MDhhOWU2h5+Wqt8IggEDDmJsb2NrQ29udGFpbmVyBwCflqrfCJoBAwlwYXJhZ3JhcGgoAJ+Wqt8ImwEPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wibAQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJsBDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJoBAmlkAXckY2RjZWM5N2MtODc5ZC00MTc3LTg4OTAtMWY3YWZlNDg5MWU5h5+Wqt8ImgEDDmJsb2NrQ29udGFpbmVyBwCflqrfCKABAwVxdW90ZQcAn5aq3wihAQYEAJ+Wqt8IogELSGVsbG8gUXVvdGUoAJ+Wqt8IoQEPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wihAQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCKABAmlkAXckN2QwYTVkYjEtNzIyMi00NTMxLWFiODMtZmNmYzdiM2Y3MTJlh5+Wqt8IoAEDDmJsb2NrQ29udGFpbmVyBwCflqrfCLEBAwlwYXJhZ3JhcGgoAJ+Wqt8IsgEPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiyAQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCLIBDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCLEBAmlkAXckYTAzZGE2YmEtZmZiNS00YjVkLThmZjItYTc1NDhmYmVhZjA1h5+Wqt8IsQEDDmJsb2NrQ29udGFpbmVyBwCflqrfCLcBAw50b2dnbGVMaXN0SXRlbQcAn5aq3wi4AQYEAJ+Wqt8IuQETSGVsbG8gVG9nZ2xlIExpc3QgMSgAn5aq3wi4AQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCLgBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IuAENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8ItwECaWQBdyRmNzNhZmI0OS1jOGE3LTRmYWYtOGE4Zi01YWYzODEyZDAwZTOHn5aq3wi3AQMOYmxvY2tDb250YWluZXIHAJ+Wqt8I0QEDCXBhcmFncmFwaCgAn5aq3wjSAQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCNIBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I0gENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I0QECaWQBdyRlNTg0NDI2OC0zMTE2LTQyMjEtOTc3MC1hZTIzYjRhOTk5OWSHn5aq3wjRAQMOYmxvY2tDb250YWluZXIHAJ+Wqt8I1wEDEG51bWJlcmVkTGlzdEl0ZW0HAJ+Wqt8I2AEGBACflqrfCNkBFE51bWJlcmVkIExpc3QgSXRlbSAxKACflqrfCNgBD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I2AEJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjYAQ10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjYAQVzdGFydAF/KACflqrfCNcBAmlkAXckOTc1Yjg2ZmMtNzk4Yi00ZmM1LTljMjctZjBmNzZlOTM3Yzc3h5+Wqt8I1wEDDmJsb2NrQ29udGFpbmVyBwCflqrfCPMBAxBudW1iZXJlZExpc3RJdGVtBwCflqrfCPQBBgQAn5aq3wj1ARROdW1iZXJlZCBMaXN0IEl0ZW0gMigAn5aq3wj0AQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCPQBCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I9AENdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I9AEFc3RhcnQBfygAn5aq3wjzAQJpZAF3JDFkODVmMzVmLTdlNzYtNDhkNS05MDRmLTlmZDhlMWViNWQwZIeflqrfCPMBAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiPAgMJcGFyYWdyYXBoKACflqrfCJACD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IkAIJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiQAg10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wiPAgJpZAF3JDJmMzYxZDBhLTRlOTQtNDY5YS05ZWVmLWM4NWEyOTQ2ZTI2N4eflqrfCI8CAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiVAgMOYnVsbGV0TGlzdEl0ZW0HAJ+Wqt8IlgIGBACflqrfCJcCEkJ1bGxldCBMaXN0IEl0ZW0gMSgAn5aq3wiWAg9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCJYCCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IlgINdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IlQICaWQBdyQwM2RhMjAyYS00NDQ0LTQ1ZjItOWM3OC05Yzg1NTAwZDZmZDOHn5aq3wiVAgMOYmxvY2tDb250YWluZXIHAJ+Wqt8IrgIDDmJ1bGxldExpc3RJdGVtBwCflqrfCK8CBgQAn5aq3wiwAhJCdWxsZXQgTGlzdCBJdGVtIDIoAJ+Wqt8IrwIPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wivAgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCK8CDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCK4CAmlkAXckOTIzZTQ5N2MtZjg0OC00ZGZjLWEyZTItNmUxMGJhZTA1NjVhh5+Wqt8IrgIDDmJsb2NrQ29udGFpbmVyBwCflqrfCMcCAwlwYXJhZ3JhcGgoAJ+Wqt8IyAIPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wjIAgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCMgCDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCMcCAmlkAXckNzIwY2I1ZjktZmE5YS00ZDFhLTg3NDktNzZkNDg3MmExNDYzh5+Wqt8IxwIDDmJsb2NrQ29udGFpbmVyBwCflqrfCM0CAwljb2RlQmxvY2sHAJ+Wqt8IzgIGBgCflqrfCM8CCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDI0OSwgMTE3LCAxMzEpIn2En5aq3wjQAgVjb25zdIaflqrfCNUCCXRleHRDb2xvcgRudWxshp+Wqt8I1gIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMjI1LCAyMjgsIDIzMikifYSflqrfCNcCASCGn5aq3wjYAgl0ZXh0Q29sb3IEbnVsbIaflqrfCNkCCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDEyMSwgMTg0LCAyNTUpIn2En5aq3wjaAgFhhp+Wqt8I2wIJdGV4dENvbG9yBG51bGyGn5aq3wjcAgl0ZXh0Q29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigyMjUsIDIyOCwgMjMyKSJ9hJ+Wqt8I3QIBIIaflqrfCN4CCXRleHRDb2xvcgRudWxshp+Wqt8I3wIJdGV4dENvbG9yJHsic3RyaW5nVmFsdWUiOiJyZ2IoMjQ5LCAxMTcsIDEzMSkifYSflqrfCOACAT2Gn5aq3wjhAgl0ZXh0Q29sb3IEbnVsbIaflqrfCOICCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDIyNSwgMjI4LCAyMzIpIn2En5aq3wjjAgEghp+Wqt8I5AIJdGV4dENvbG9yBG51bGyGn5aq3wjlAgl0ZXh0Q29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigxMjEsIDE4NCwgMjU1KSJ9hJ+Wqt8I5gICMTCGn5aq3wjoAgl0ZXh0Q29sb3IEbnVsbIaflqrfCOkCCXRleHRDb2xvciR7InN0cmluZ1ZhbHVlIjoicmdiKDIyNSwgMjI4LCAyMzIpIn2En5aq3wjqAgE7hp+Wqt8I6wIJdGV4dENvbG9yBG51bGwoAJ+Wqt8IzgIIbGFuZ3VhZ2UBdwpqYXZhc2NyaXB0KACflqrfCM0CAmlkAXckY2JjYmY1MjMtMzgxZi00ZjM0LTk5ZmMtM2ZlOTMwN2ExZDgyh5+Wqt8IzQIDDmJsb2NrQ29udGFpbmVyBwCflqrfCO8CAwlwYXJhZ3JhcGgoAJ+Wqt8I8AIPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wjwAgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCPACDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCO8CAmlkAXckNWNkZDZlOTAtODM2MC00NTE3LTliOTEtNzhmODYzM2FiNWUwh5+Wqt8I7wIDDmJsb2NrQ29udGFpbmVyBwCflqrfCPUCAwdkaXZpZGVyKACflqrfCPUCAmlkAXckMDkxYTY2NWYtYTJiYy00MGIxLTllZDktNjBiZDM0OWFhOTZkh5+Wqt8I9QIDDmJsb2NrQ29udGFpbmVyBwCflqrfCPgCAwlwYXJhZ3JhcGgoAJ+Wqt8I+QIPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wj5Agl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCPkCDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCPgCAmlkAXckZGRjMTVlY2ItZmZlMS00YmM5LTllZDMtNWFjYjkwMTk1ZDhlh5+Wqt8I+AIDDmJsb2NrQ29udGFpbmVyBwCflqrfCP4CAwlwYWdlQnJlYWsoAJ+Wqt8I/gICaWQBdyRjODFhNTRkMS00MjAxLTQwMjktYjViMy0zMDQwYTYwNzcwZTOHn5aq3wj+AgMKY29sdW1uTGlzdAcAn5aq3wiBAwMGY29sdW1uBwCflqrfCIIDAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiDAwMJcGFyYWdyYXBoBwCflqrfCIQDBgQAn5aq3wiFAw1Db2x1bW4gMSBUZXh0KACflqrfCIQDD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IhAMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wiEAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wiDAwJpZAF3JDAyY2M0YTUwLThkMDUtNDMwNy1iN2M3LTM2ZWIyNzgxNTkzZCgAn5aq3wiCAwJpZAF3JDEzZWIwOGNkLTU5MjgtNGNmYi1hZDMwLTNkYmRjMDA4MzIxZSgAn5aq3wiCAwV3aWR0aAF9AYeflqrfCIIDAwZjb2x1bW4HAJ+Wqt8ImQMDDmJsb2NrQ29udGFpbmVyBwCflqrfCJoDAwlwYXJhZ3JhcGgHAJ+Wqt8ImwMGBACflqrfCJwDDUNvbHVtbiAyIFRleHQoAJ+Wqt8ImwMPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wibAwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJsDDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJoDAmlkAXckNjUwOWRmM2UtNzJlYi00N2YxLWJjYjAtZTc4MmYzOGE5MDg5KACflqrfCJkDAmlkAXckMDBhMjZhYjAtZGMyNS00YWRmLTlkOTAtYmEzZmEwMDNlZmJiKACflqrfCJkDBXdpZHRoAX0Bh5+Wqt8ImQMDBmNvbHVtbgcAn5aq3wiwAwMOYmxvY2tDb250YWluZXIHAJ+Wqt8IsQMDCXBhcmFncmFwaAcAn5aq3wiyAwYEAJ+Wqt8IswMNQ29sdW1uIDMgVGV4dCgAn5aq3wiyAw9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCLIDCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsgMNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IsQMCaWQBdyQ4NTU4OWUyYy1iNTA0LTRmNjktOTIxZS05MmY5MTc4ZmYxYjmHn5aq3wixAwMOYmxvY2tDb250YWluZXIHAJ+Wqt8IxQMDCXBhcmFncmFwaCgAn5aq3wjGAw9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMYDCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IxgMNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IxQMCaWQBdyRjZTM3ZDMyYS01MGY4LTQwZWYtYjVlYy0wNDFlZGEzMzVmOTUoAJ+Wqt8IsAMCaWQBdyQ4OTU4NTVlNy1jMjBiLTQ5OTctOGM5Mi1iMjZlMjA3ODc3NjAoAJ+Wqt8IsAMFd2lkdGgBfQEoAJ+Wqt8IgQMCaWQBdyQ3OTQyM2E1Ny0xZTVhLTQ0ODMtOGJmOS00MzM4ZmM2NWU1YzGHn5aq3wiBAwMOYmxvY2tDb250YWluZXIHAJ+Wqt8IzgMDB2NhbGxvdXQoAJ+Wqt8IzwMNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IzwMPYmFja2dyb3VuZENvbG9yAXcGeWVsbG93KACflqrfCM8DBWVtb2ppAXcE8J+SoSgAn5aq3wjOAwJpZAF3JGIyYWI4YzdhLWM3MGQtNDM3OS04OGU1LWViOTc0NzY3NmI5MoeflqrfCM4DAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjUAwMJcGFyYWdyYXBoKACflqrfCNUDD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I1QMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjVAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjUAwJpZAF3JDg4NDUwZmNjLTI1MGQtNGNmZC1hNzZkLTc4MzFhMTBkMjYxNIeflqrfCNQDAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjaAwMJcGFyYWdyYXBoKACflqrfCNsDD2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I2wMJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjbAw10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjaAwJpZAF3JDY3NmE0NzUyLWZkODgtNDk2NS1iM2JlLWRkZjcxOGVmZDNkYoeflqrfCNoDAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjgAwMFdGFibGUHAJ+Wqt8I4QMDCHRhYmxlUm93BwCflqrfCOIDAwl0YWJsZUNlbGwHAJ+Wqt8I4wMDDnRhYmxlUGFyYWdyYXBoBwCflqrfCOQDBgYAn5aq3wjlAwRib2xkAnt9hJ+Wqt8I5gMLQlJJRElPTiDCriCGn5aq3wjwAwRib2xkBG51bGyGn5aq3wjxAwRib2xkAnt9hp+Wqt8I8gMGaXRhbGljAnt9hJ+Wqt8I8wMfKEFudGFnb25pc3RlIGRlIGzigJlFc23DqXJvbsKuKYaflqrfCI4EBGJvbGQEbnVsbIaflqrfCI8EBml0YWxpYwRudWxsKACflqrfCOMDCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I4wMPYmFja2dyb3VuZENvbG9yAXcGcHVycGxlKACflqrfCOMDDXRleHRBbGlnbm1lbnQBdwZjZW50ZXIoAJ+Wqt8I4wMHY29sc3BhbgF9CSgAn5aq3wjjAwdy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dwRsZWZ0KACflqrfCJAIB2NvbHNwYW4BfQEoAJ+Wqt8IkAgHcm93c3BhbgF9ASgAn5aq3wiQCAhjb2x3aWR0aAF1AX2HASgAn5aq3wjhAwl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCOADAmlkAXckZjJkMGJjY2UtN2JiOS00ODc1LTgxYjAtZGIyYjk5NDY5MDU0gZ+Wqt8I4AMBAAWHn5aq3wifCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IpQgDCXBhcmFncmFwaAcAn5aq3wimCAMYaW50ZXJsaW5raW5nU2VhcmNoSW5saW5lKACflqrfCKcIB3RyaWdnZXIBdwEvKACflqrfCKcICGRpc2FibGVkAXiHn5aq3winCAMWaW50ZXJsaW5raW5nTGlua0lubGluZSgAn5aq3wiqCAVkb2NJZAF3JDAyMmQwNDhjLTZkMDctNGU1OC1iM2ZjLTljNDNhMjg3MTJlOSgAn5aq3wiqCAV0aXRsZQF3D1Rlc3QgUmVncmVzc2lvbigAn5aq3wimCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKYICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IpggNdGV4dEFsaWdubWVudAF3BGxlZnSHn5aq3wimCAMKYmxvY2tHcm91cAcAn5aq3wiwCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8IsQgDBWltYWdlKACflqrfCLIIDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCLIID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IsggEbmFtZQF3ACgAn5aq3wiyCAN1cmwBdxZodHRwOi8vbG9jYWxob3N0OjMwMDAvKACflqrfCLIIB2NhcHRpb24BdwAoAJ+Wqt8IsggLc2hvd1ByZXZpZXcBeCgAn5aq3wiyCAxwcmV2aWV3V2lkdGgBfygAn5aq3wixCAJpZAF3JDk1Y2Q0NDI2LTA4YTgtNGRlZC1iNTcxLWZlYWUzYmMyMzA0ZYGflqrfCLEIAQAFIQCflqrfCKUIAmlkAYeflqrfCKUIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wjCCAMHaGVhZGluZwcAn5aq3wjDCAYGAJ+Wqt8IxAgEYm9sZAJ7fYSflqrfCMUIEkhlbGxvIFRpdGxlIFRvZ2dsZYaflqrfCNcIBGJvbGQEbnVsbCgAn5aq3wjDCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMMICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IwwgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IwwgFbGV2ZWwBfQEoAJ+Wqt8IwwgMaXNUb2dnbGVhYmxlAXgoAJ+Wqt8IwggCaWQBdyRmZTMyZGNiOC0zMjVjLTQyZTEtYjQ2Zi04NDVlZTUxMmI1NGWHn5aq3wjCCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8I3wgDCXBhcmFncmFwaCgAn5aq3wjgCA9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCOAICXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I4AgNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8I3wgCaWQBdyRiNmFlOWZhNS04MWJhLTQzNmMtOWYyMC04NTk4MGNkNTUxYjWHn5aq3wjfCAMOYmxvY2tDb250YWluZXIHAJ+Wqt8I5QgDB2hlYWRpbmcHAJ+Wqt8I5ggGBgCflqrfCOcIBGJvbGQCe32En5aq3wjoCA1IZWxsbyB0aXRsZSA0hp+Wqt8I9QgEYm9sZARudWxsKACflqrfCOYID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I5ggJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wjmCA10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wjmCAVsZXZlbAF9BCgAn5aq3wjmCAxpc1RvZ2dsZWFibGUBeSgAn5aq3wjlCAJpZAF3JDU5MWE1YjUwLWZjZjAtNDJjYi1iNDdiLTlhZDc5ZjUzN2ZkMYeflqrfCOUIAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wj9CAMJcGFyYWdyYXBoKACflqrfCP4ID2JhY2tncm91bmRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8I/ggJdGV4dENvbG9yAXcHZGVmYXVsdCgAn5aq3wj+CA10ZXh0QWxpZ25tZW50AXcEbGVmdCgAn5aq3wj9CAJpZAF3JDRmNDkxYzE3LTk4ZDktNDdkOS04ZmYxLTg4MDdhZmQzMGY3ZYeflqrfCP0IAw5ibG9ja0NvbnRhaW5lcgcAn5aq3wiDCQMHaGVhZGluZwcAn5aq3wiECQYGAJ+Wqt8IhQkEYm9sZAJ7fYSflqrfCIYJDUhlbGxvIHRpdGxlIDWGn5aq3wiTCQRib2xkBG51bGwoAJ+Wqt8IhAkPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiECQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCIQJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCIQJBWxldmVsAX0FKACflqrfCIQJDGlzVG9nZ2xlYWJsZQF5KACflqrfCIMJAmlkAXckNTk0OTQ1MzUtODQxNS00MmU0LTk2YWMtNjQxYjFiY2E1NmFhh5+Wqt8IgwkDDmJsb2NrQ29udGFpbmVyBwCflqrfCJsJAwlwYXJhZ3JhcGgoAJ+Wqt8InAkPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wicCQl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJwJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJsJAmlkAXckMDZhOTcxMmUtYjYwZi00NzYzLWI2ZmItM2M2N2FjYTBmNTY4h5+Wqt8ImwkDDmJsb2NrQ29udGFpbmVyBwCflqrfCKEJAwdoZWFkaW5nBwCflqrfCKIJBgYAn5aq3wijCQRib2xkAnt9hJ+Wqt8IpAkNSGVsbG8gdGl0bGUgNoaflqrfCLEJBGJvbGQEbnVsbCgAn5aq3wiiCQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCKIJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IogkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IogkFbGV2ZWwBfQYoAJ+Wqt8IogkMaXNUb2dnbGVhYmxlAXkoAJ+Wqt8IoQkCaWQBdyRhMTQzMjQ2MS00MWUwLTQ3YTAtYjEzZS01ZmM3MzI0YmNhMjKHn5aq3wihCQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IuQkDCXBhcmFncmFwaCgAn5aq3wi6CQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCLoJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IugkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IuQkCaWQBdyQzOWIwNzcxNy1iOWRiLTQ0OTMtOGVmMC1hYzE4MTE4Mzc3M2OHn5aq3wi5CQMOYmxvY2tDb250YWluZXIHAJ+Wqt8IvwkDCXBhcmFncmFwaAcAn5aq3wjACQYEAJ+Wqt8IwQkN8J+nmeKAjeKZgu+4j4aflqrfCMYJCXRleHRDb2xvciF7InN0cmluZ1ZhbHVlIjoicmdiKDY5LCA2OSwgODgpIn2Gn5aq3wjHCQ9iYWNrZ3JvdW5kQ29sb3IkeyJzdHJpbmdWYWx1ZSI6InJnYigyNTUsIDI1NSwgMjU1KSJ9hJ+Wqt8IyAk88J+Yg/Cfjonwn5qA8J+Zi+KAjeKZgO+4j/Cfp5Hwn4+/4oCN4p2k77iP4oCN8J+Si+KAjfCfp5Hwn4++hp+Wqt8I4gkJdGV4dENvbG9yBG51bGyGn5aq3wjjCQ9iYWNrZ3JvdW5kQ29sb3IEbnVsbISflqrfCOQJDCBNYWdpYyBlbW9qaSgAn5aq3wjACQ9iYWNrZ3JvdW5kQ29sb3IBdwdkZWZhdWx0KACflqrfCMAJCXRleHRDb2xvcgF3B2RlZmF1bHQoAJ+Wqt8IwAkNdGV4dEFsaWdubWVudAF3BGxlZnQoAJ+Wqt8IvwkCaWQBdyRlNWJlN2UwYi0wYTBiLTQzMzQtYTE4Ni00MDJlMDUwYjc2YWGHn5aq3wi/CQMOYmxvY2tDb250YWluZXIHAJ+Wqt8I9QkDB2hlYWRpbmcHAJ+Wqt8I9gkGBgCflqrfCPcJBGJvbGQCe32En5aq3wj4CRdjb3B5L3Bhc3Rpbmcgb3V0IG9mIGRvY4aflqrfCI8KBGJvbGQEbnVsbCgAn5aq3wj2CQ9iYWNrZ3JvdW5kQ29sb3IBdw9yZ2IoMTMsIDE3LCAyMykoAJ+Wqt8I9gkJdGV4dENvbG9yAXcScmdiKDI0MCwgMjQ2LCAyNTIpKACflqrfCPYJDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCPYJBWxldmVsAX0BKACflqrfCPYJDGlzVG9nZ2xlYWJsZQF5KACflqrfCPUJAmlkAXckY2FlZGEwNWMtNDFlZi00MjlhLThjOWItNDc5NDcyYTZlZGE1h5+Wqt8I9QkDDmJsb2NrQ29udGFpbmVyBwCflqrfCJcKAwlwYXJhZ3JhcGgoAJ+Wqt8ImAoPYmFja2dyb3VuZENvbG9yAXcHZGVmYXVsdCgAn5aq3wiYCgl0ZXh0Q29sb3IBdwdkZWZhdWx0KACflqrfCJgKDXRleHRBbGlnbm1lbnQBdwRsZWZ0KACflqrfCJcKAmlkAXckMDQzMDJiNWUtYzJhMy00MjgxLTk2NTYtM2M3ZTU0MjVhZWFkgZ+Wqt8IlwoBAAmBn5aq3widCgEACYGflqrfCKcKAQAFAsmihucJAwACCAUVBp+Wqt8IA58IBrAIEp0KGg==" \ No newline at end of file diff --git a/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf b/src/frontend/apps/e2e/__tests__/app-impress/assets/doc-export-PDF-browser-regressions.pdf index 1924022517a2d133617ee2052e9ff8a31189f3d4..989290549cb0882a970e60bae87169f9e5ae73ab 100644 GIT binary patch delta 149844 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ɢ+9`O@ez{% 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 z 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 stream -x][㸱~_? -oXC' Af439>f$wʲ[뱫,ŪdeG2Eg{냶Gr߾Ci=bAB?KY3g`n3Ԙ[Z5& -MAAFe1;rg3Eņe@.I,XUWLZח]7_]lUŮ&fi٭5.@R[lF"֫\$pKҿ-r& oZWr"d{˳l`9࠽!{ɯK:FNĥMD.~oaic fgSkay @L%"ClһMwkό@ED9WnF3p M[nm浸Z6Pa˭dm_9 ޜv1l>dMԘaB0uܚٸ6{֕nceoEWsTQrQ2fesKSAk~8~|ҏ{yr<4MgZzA70K:T"fK--?.nnn/}Tu.Sl*Qo<^Q3A<1%"rt ss7ח ;,Cѫy:tucft6Ɓ -8=wt~M6; -eTutX {5$]xMl*6KrT ||{p'n9NarVdb*N -8sNzXM&o}|rn[uYϺT(;ssFF9'* ]9F4#;uN`ݸO-57[ɺ`S;fRf_^abpf;$M6Gc<+o}S.ļ0]٥jɾ\OV豍מ4^) ل x^x~>=ár M3][GbT(+0Zث!k§ }&DXǷgz - wFTunzN -"sNкXȌuG _Aph: 9-ŃYϺs~w' OՄtï&MҌ9u>IV&K@So2q(\`>|vrIc4HV 6 -yb^)ܳP.Ig TGy|C χ w8S5aBk5HUWL>6; -eTutX {5$}xMp^%o#U]´+n8#2c2q~WNBmKzֳ.mܥI#S5!=* }9F4#;uN`ݸSeoa+ T 9o2q qJZ_ʽR/Ռ-g_ ~BH-۝\9a)nLRhf?33r׎ k@Q ^%eq*Ytv"o_NbJGmB8׻ pK#/Fb7!iyIUWL'Z_>=c-m0q~tPw,dܶט._AjBS{Tz!W^V@GKvꜜ1q`VtTo*p+TnJTrWT4ڬJҬ5\,ԹrIZg 6; -eTutX {5$]hM]W JrH8sL-W!NȵMmAb_TӉv Z/N8+MX'u\b-Y6hI,qᩚ^U2 Q:'nTܧ" Z}؊RTTo"Y֖9K`Di8 ܖ%iET󂷴oreu.#2S014%Ox&~Xgg^G_{vMXozM;RΦBU]1'B^ IP>m3-& \>=UHz3ldYMMNĿ^0m0>hmo-Z k~x f'ohp9檞/w+v>nY1&LsFvA} cPL0 fEKk3/Ab^0Mʽ^9['u5$dwy&Heg:޳kz mkߑ|mv6ʨ87jHi.\9*3\;wK3CφOfaD9a> 384uZn[@[׭h.[OC!YyZ0fgf}}[_m 0{-]8+MrIc} Iyb^ 咴L#B&⢯#U*BC_A0S;xMA7xǥ|mv6ʨ0=jHi d`CDXbTor-|%U]18xl眠±ui@|>ۖAszֳ.y9#W5!=* ]9F4#;uN`ݸSaoq+.?PӸ)eǧR?ʨlH, ܂dd@FddCȀ Ȁ nOȧK16___ #Ro^J`hb h -AZMhV hV hV hVigM npꪍaRa**ZuPWuPWuձb(|] !Bvjc0jTX +x]ݎ㸱 ?dO=6;@.\hfr0}'DecWY*U*/H=cdxBx̯O??l:??{Bbu:h_2G2 u֏ۙϪeק}RzԃzgTxyF"0a8˅a"(ċ +9#R|_>}P^ $㲟ܟ#,Ā&J\~>$PaDxi,9 -|bL0Qp^ħ@NI@ro\fXuoo/ow~^ dSAF60db T 3uzH}yJ!g^gx^(&2?mA4jGh%^Co"/qssY>`vԘ[Z&DɎw3ˆcw-zҋ 4o\fXoo/oظUŬ&zi٭5,@R]LF"6ܖ$YpKH 7 xm+9p2pf齌YZW6Ppސ^dIC%Ҧ~"?lo1q*Qayb-Ր!/ #bc쐽X*nS 43#Cѫy>JSŲ"WF9*r({L2feK]a)V.qGrW<4M[zA5g0K:MW"zK-?.nnn}Tu.SqvgTuOWg@LOfL.ݾ*wܫe)+P*|OD,~}K}# `@PZ#{tڱt6Pa:.[o(5vqd枉e?tV&ftbej&q*d +&چ>UknI5L{1ra:0,z!a#Ua2M!|RDNiKԴwۋ13eJŤ)-& q)~RlmlW{Q83R顰X0#8.5IM1} #MJ2,х_cR`)ZT̻K턡B@{jï|Zkz&DMtqi~ZCчUJؑgW<>-t]t2X[Vl؅h[yiX蝜K.K05I%+8[:)$׀Cajd\fXdNEY1/\ #FTU^Žwkӧ|߲ط[+f?ΎSkau <ǦHl3 +z{vqt/tsw:3&p СF{ղcqkeqj2pB|V.t@L/.쳼D2Nf/?SQV BiPG./ >P1a9^S5O~PdB;)w0r^ݷ{+f|ΎSka @ xM&’vC?ߞ*, .);8LӊLYL Q@Cv Z/^Ҵ @PBmx=Y +rg.pH7D~4+hwfd V&@FQz+YlD+j%ـ&^L~X0183\fX1󂷾M6ļ0]٥:}$mPc3d",Qa3\;%o#U]ޢ+n8#2c2q~7NBmKzֳ.9p\ऑᩚnU҄ Q:'n\ܧ2 Z}s2|W&v}MwФ*G \fX3L$+¦zf+~,K4)'BU]1ka KAI k.ݞ*$ . \$EU]18Xl眠ti됏 AЄunn[^%ֲ5AOd' O!teM|9yu>IV$ǖ򟠢,}ɺ,Y# m\fXdNY1/xKM{-p֙hd\I!ZguZpv,ugׄھT#U]1`sv +eTu|֞X y5$]@Mx8Jj4XsL&W!NugPS,J<)sNzAXrôG^g5hj^Iu 4 j A'*kOЄ0sU=3S_TW}ܲb|?0Mϙ 6?1{b]AǠ` +N.Iɼ͊y-`oNʽ^9['m$dwy&Heg:޳kz mkߑ}9;N2b>k'B^ IP>߅+G%5|t{&p'43ld&yMMO?n0c0>[MS'xj^6q(9Ac>"&7> +C}> 9-g]˹ssFjBV{TzWKr6xGiFvNqqdV&]~*q&tq[x$m`ۚr :x7(R44t4@#((ުc0 +ڀ (2A + +#(܀1_CͿdJD֊f7dKT2&d1IIII7eMzh}&|g'Obn )tJ))vN 蔀N 蔀N*:/jj;"[ .ߚRԅ-nñn%Vn%V[Vj>TTY$YY4K@t[4K@4K@ -,U4Kd(QD9%{_!dguQ>~(5Amy/fcژ%}>*wa\|^C噣HkOʭ'] H>(ÞaGܭCr <7bj1͆{|)9dt{GHެIǩ,rR`.@bq&S> -B7ÿ'ih1=쁙h(<ɰx*g"u#yANEJg -)((/2tAӻ#$ew=:Ɓd‡0bt| lY DD?Ɯre9Ծȟk>`ۂVVퟭ7_N37 }?c>y~=Zk=ˌtpW?Lw +6;@ P@ }SCE;)ߕ!;p0H&`&`j(p0p0ӭK}w^'HɎ0 TGHPP:-w ̌d{Um0Sw *?tsTX#?_#?GGG?z0U#,ߺ_$/0$Y`1P$ǖhfXf$`F0#30#`Ff$`Fj +0#3af W9$ӵ0ӀRO鲀$ e0&E0&c](1 1}(c0&c0&cmTY@&mY +[Z蓀> P`蓀> 蓀>d}a}'=X~*ڌXb X +A֤,X5 X5 X5 X5馬I/ B9a]̍:WN)VS:%S:)))]E[]eG_$p+ےVʂr:V:+Vn%Vnen/ɪ#I'B +4K4K@f h%y@4K@4K,]E~N%A4I^o{L hLvVh"*:m#׷lԲl[YdV?k? [wz>/sR=^ʣvY &g*oKB?l@M:&3ɘQmXS45G0fn䢡p$ä}{;c)WOE +F +Ks댃:&(p f(Lz] 6hP^ {NotHP6b!}ubcdh>!r@bO Y[ + 1yZ |B= <ήʩ>͛KnY>Vf~#td|/#tD>VGaN*ץ6e]4%6ZX/ uc&m7UYSOZ\re9Y$f;C16U=&[ΡUl_ +g62('*[eexI,4OY+ĸ p[ V..^h,='7mos2 endstream endobj 77 0 obj @@ -1329,7 +1331,7 @@ xref 0000026266 00000 n 0000001770 00000 n 0000001585 00000 n -0000033127 00000 n +0000033112 00000 n 0000002627 00000 n 0000007053 00000 n 0000007208 00000 n @@ -1337,24 +1339,24 @@ xref 0000000526 00000 n 0000000650 00000 n 0000000752 00000 n -0000032036 00000 n +0000032021 00000 n 0000000883 00000 n 0000000985 00000 n 0000001116 00000 n 0000001218 00000 n 0000001350 00000 n 0000001452 00000 n -0000037978 00000 n -0000045297 00000 n -0000054182 00000 n -0000062527 00000 n -0000071770 00000 n -0000080249 00000 n -0000082159 00000 n +0000037963 00000 n +0000045282 00000 n +0000054167 00000 n +0000062512 00000 n +0000071755 00000 n +0000080234 00000 n +0000082144 00000 n 0000024508 00000 n 0000002219 00000 n 0000002079 00000 n -0000091311 00000 n +0000091296 00000 n 0000007311 00000 n 0000007428 00000 n 0000007558 00000 n @@ -1388,23 +1390,23 @@ xref 0000006330 00000 n 0000006609 00000 n 0000024118 00000 n -0000031765 00000 n -0000032333 00000 n -0000036949 00000 n -0000044381 00000 n -0000052463 00000 n -0000061669 00000 n -0000070848 00000 n -0000079529 00000 n -0000081455 00000 n -0000083245 00000 n +0000031750 00000 n +0000032318 00000 n +0000036934 00000 n +0000044366 00000 n +0000052448 00000 n +0000061654 00000 n +0000070833 00000 n +0000079514 00000 n +0000081440 00000 n +0000083230 00000 n trailer << /Size 87 /Root 3 0 R /Info 52 0 R -/ID [<4d0627755c809232c991979db9766911> <4d0627755c809232c991979db9766911>] +/ID [<7800bd1e70bdb9114e48fc6d480ec696> <7800bd1e70bdb9114e48fc6d480ec696>] >> startxref -101726 +101711 %%EOF diff --git a/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts index b569b662d..5ccee2192 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts @@ -1,6 +1,6 @@ import { FullConfig, FullProject, chromium, expect } from '@playwright/test'; -import { keyCloakSignIn } from './utils-common'; +import { SignIn } from './utils-signin'; const saveStorageState = async ( browserConfig: FullProject, @@ -22,7 +22,7 @@ const saveStorageState = async ( await page.content(); await expect(page.getByText('Docs').first()).toBeVisible(); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); await expect( page.locator('header').first().getByRole('button', { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts index a11d897d9..ce0746a69 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts @@ -5,23 +5,25 @@ import { expect, test } from '@playwright/test'; import { CONFIG, createDoc, overrideConfig } from './utils-common'; test.describe('Config', () => { - test('it checks that sentry is trying to init from config endpoint', async ({ - page, - }) => { - await overrideConfig(page, { - SENTRY_DSN: 'https://sentry.io/123', + if (process.env.IS_INSTANCE !== 'true') { + test('it checks that sentry is trying to init from config endpoint', async ({ + page, + }) => { + await overrideConfig(page, { + SENTRY_DSN: 'https://sentry.io/123', + }); + + const invalidMsg = 'Invalid Sentry Dsn: https://sentry.io/123'; + const consoleMessage = page.waitForEvent('console', { + timeout: 5000, + predicate: (msg) => msg.text().includes(invalidMsg), + }); + + await page.goto('/'); + + expect((await consoleMessage).text()).toContain(invalidMsg); }); - - const invalidMsg = 'Invalid Sentry Dsn: https://sentry.io/123'; - const consoleMessage = page.waitForEvent('console', { - timeout: 5000, - predicate: (msg) => msg.text().includes(invalidMsg), - }); - - await page.goto('/'); - - expect((await consoleMessage).text()).toContain(invalidMsg); - }); + } test('it checks that media server is configured from config endpoint', async ({ page, @@ -55,7 +57,7 @@ test.describe('Config', () => { // Check src of image expect(await image.getAttribute('src')).toMatch( - /http:\/\/localhost:8083\/media\/.*\/attachments\/.*.png/, + new RegExp(`${process.env.MEDIA_BASE_URL}/media/.*?/attachments/.*?.png`), ); }); @@ -71,9 +73,9 @@ test.describe('Config', () => { .click(); const webSocket = await page.waitForEvent('websocket', (webSocket) => { - return webSocket.url().includes('ws://localhost:4444/collaboration/ws/'); + return webSocket.url().includes(`${process.env.COLLABORATION_WS_URL}`); }); - expect(webSocket.url()).toContain('ws://localhost:4444/collaboration/ws/'); + expect(webSocket.url()).toContain(`${process.env.COLLABORATION_WS_URL}`); }); test('it checks that Crisp is trying to init from config endpoint', async ({ @@ -85,9 +87,8 @@ test.describe('Config', () => { await page.goto('/'); - await expect( - page.locator('#crisp-chatbox').getByText('Invalid website'), - ).toBeVisible(); + const crispElement = page.locator('#crisp-chatbox'); + await expect(crispElement).toBeAttached(); }); test('it checks FRONTEND_CSS_URL config', async ({ page }) => { @@ -118,20 +119,22 @@ test.describe('Config', () => { ).toBeAttached(); }); - test('it checks the config api is called', async ({ page }) => { - const responsePromise = page.waitForResponse( - (response) => - response.url().includes('/config/') && response.status() === 200, - ); + if (process.env.IS_INSTANCE !== 'true') { + test('it checks the config api is called', async ({ page }) => { + const responsePromise = page.waitForResponse( + (response) => + response.url().includes('/config/') && response.status() === 200, + ); - await page.goto('/'); + await page.goto('/'); - const response = await responsePromise; - expect(response.ok()).toBeTruthy(); + const response = await responsePromise; + expect(response.ok()).toBeTruthy(); - const json = (await response.json()) as typeof CONFIG; - expect(json).toStrictEqual(CONFIG); - }); + const json = (await response.json()) as typeof CONFIG; + expect(json).toStrictEqual(CONFIG); + }); + } }); test.describe('Config: Not logged', () => { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts index 9b4b76f19..205a40699 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts @@ -3,6 +3,7 @@ import { expect, test } from '@playwright/test'; import { createDoc, + getCurrentConfig, mockedDocument, overrideConfig, verifyDocName, @@ -13,210 +14,295 @@ import { writeInEditor, } from './utils-editor'; -test.beforeEach(async ({ page }) => { - await page.goto('/'); -}); +if (process.env.IS_INSTANCE !== 'true') { + test.describe('Doc AI feature', () => { + test.beforeEach(async ({ page }) => { + await page.goto('/'); + }); -test.describe('Doc AI feature', () => { - [ - { - AI_FEATURE_ENABLED: false, - selector: 'Ask AI', - }, - { - AI_FEATURE_ENABLED: true, - AI_FEATURE_BLOCKNOTE_ENABLED: false, - selector: 'Ask AI', - }, - { - AI_FEATURE_ENABLED: true, - AI_FEATURE_LEGACY_ENABLED: false, - selector: 'AI', - }, - ].forEach((config) => { - test(`it checks the AI feature flag from config endpoint: ${JSON.stringify(config)}`, async ({ + [ + { + AI_FEATURE_ENABLED: false, + selector: 'Ask AI', + }, + { + AI_FEATURE_ENABLED: true, + AI_FEATURE_BLOCKNOTE_ENABLED: false, + selector: 'Ask AI', + }, + { + AI_FEATURE_ENABLED: true, + AI_FEATURE_LEGACY_ENABLED: false, + selector: 'AI', + }, + ].forEach((config) => { + test(`it checks the AI feature flag from config endpoint: ${JSON.stringify(config)}`, async ({ + page, + browserName, + }) => { + await overrideConfig(page, config); + + await page.goto('/'); + + await createDoc(page, 'doc-ai-feature', browserName, 1); + + await page.locator('.bn-block-outer').last().fill('Anything'); + await page.getByText('Anything').selectText(); + await expect( + page.locator('button[data-test="convertMarkdown"]'), + ).toHaveCount(1); + await expect( + page.getByRole('button', { name: config.selector, exact: true }), + ).toBeHidden(); + }); + }); + + test('it checks the AI feature and accepts changes', async ({ page, browserName, }) => { - await overrideConfig(page, config); + await overrideConfig(page, { + AI_BOT: { + name: 'Albert AI', + color: '#8bc6ff', + }, + }); + + await mockAIResponse(page); await page.goto('/'); - await createDoc(page, 'doc-ai-feature', browserName, 1); + await createDoc(page, 'doc-ai', browserName, 1); - await page.locator('.bn-block-outer').last().fill('Anything'); - await page.getByText('Anything').selectText(); + await openSuggestionMenu({ page }); + await page.getByText('Ask AI').click(); await expect( - page.locator('button[data-test="convertMarkdown"]'), - ).toHaveCount(1); + page.getByRole('option', { name: 'Continue Writing' }), + ).toBeVisible(); await expect( - page.getByRole('button', { name: config.selector, exact: true }), - ).toBeHidden(); - }); - }); + page.getByRole('option', { name: 'Summarize' }), + ).toBeVisible(); - test('it checks the AI feature and accepts changes', async ({ - page, - browserName, - }) => { - await overrideConfig(page, { - AI_BOT: { - name: 'Albert AI', - color: '#8bc6ff', - }, + await page.keyboard.press('Escape'); + + const editor = await writeInEditor({ page, text: 'Hello World' }); + await editor.getByText('Hello World').selectText(); + + // Check from toolbar + await page.getByRole('button', { name: 'Ask AI' }).click(); + + await expect( + page.getByRole('option', { name: 'Improve Writing' }), + ).toBeVisible(); + await expect( + page.getByRole('option', { name: 'Fix Spelling' }), + ).toBeVisible(); + await expect( + page.getByRole('option', { name: 'Translate' }), + ).toBeVisible(); + + await page.getByRole('option', { name: 'Translate' }).click(); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .fill('Translate into french'); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .press('Enter'); + await expect(editor.getByText('Albert AI')).toBeVisible(); + await page + .locator('p.bn-mt-suggestion-menu-item-title') + .getByText('Accept') + .click(); + + await expect(editor.getByText('Bonjour le monde')).toBeVisible(); + + // Check Suggestion menu + await page.locator('.bn-block-outer').last().fill('/'); + await expect(page.getByText('Write with AI')).toBeVisible(); + + // Reload the page to check that the AI change is still there + await page.goto(page.url()); + await expect(editor.getByText('Bonjour le monde')).toBeVisible(); }); - await mockAIResponse(page); + test('it reverts with the AI feature', async ({ page, browserName }) => { + await overrideConfig(page, { + AI_BOT: { + name: 'Albert AI', + color: '#8bc6ff', + }, + }); - await page.goto('/'); + await mockAIResponse(page); - await createDoc(page, 'doc-ai', browserName, 1); + await page.goto('/'); - await openSuggestionMenu({ page }); - await page.getByText('Ask AI').click(); - await expect( - page.getByRole('option', { name: 'Continue Writing' }), - ).toBeVisible(); - await expect(page.getByRole('option', { name: 'Summarize' })).toBeVisible(); + await createDoc(page, 'doc-ai', browserName, 1); - await page.keyboard.press('Escape'); + const editor = await writeInEditor({ page, text: 'Hello World' }); + await editor.getByText('Hello World').selectText(); - const editor = await writeInEditor({ page, text: 'Hello World' }); - await editor.getByText('Hello World').selectText(); + // Check from toolbar + await page.getByRole('button', { name: 'Ask AI' }).click(); - // Check from toolbar - await page.getByRole('button', { name: 'Ask AI' }).click(); + await page.getByRole('option', { name: 'Translate' }).click(); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .fill('Translate into french'); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .press('Enter'); + await expect(editor.getByText('Albert AI')).toBeVisible(); + await expect(editor.getByText('Bonjour le monde')).toBeVisible(); + await page + .locator('p.bn-mt-suggestion-menu-item-title') + .getByText('Revert') + .click(); - await expect( - page.getByRole('option', { name: 'Improve Writing' }), - ).toBeVisible(); - await expect( - page.getByRole('option', { name: 'Fix Spelling' }), - ).toBeVisible(); - await expect(page.getByRole('option', { name: 'Translate' })).toBeVisible(); - - await page.getByRole('option', { name: 'Translate' }).click(); - await page - .getByRole('textbox', { name: 'Ask anything...' }) - .fill('Translate into french'); - await page.getByRole('textbox', { name: 'Ask anything...' }).press('Enter'); - await expect(editor.getByText('Albert AI')).toBeVisible(); - await page - .locator('p.bn-mt-suggestion-menu-item-title') - .getByText('Accept') - .click(); - - await expect(editor.getByText('Bonjour le monde')).toBeVisible(); - - // Check Suggestion menu - await page.locator('.bn-block-outer').last().fill('/'); - await expect(page.getByText('Write with AI')).toBeVisible(); - - // Reload the page to check that the AI change is still there - await page.goto(page.url()); - await expect(editor.getByText('Bonjour le monde')).toBeVisible(); - }); - - test('it reverts with the AI feature', async ({ page, browserName }) => { - await overrideConfig(page, { - AI_BOT: { - name: 'Albert AI', - color: '#8bc6ff', - }, + await expect(editor.getByText('Hello World')).toBeVisible(); }); - await mockAIResponse(page); - - await page.goto('/'); - - await createDoc(page, 'doc-ai', browserName, 1); - - const editor = await writeInEditor({ page, text: 'Hello World' }); - await editor.getByText('Hello World').selectText(); - - // Check from toolbar - await page.getByRole('button', { name: 'Ask AI' }).click(); - - await page.getByRole('option', { name: 'Translate' }).click(); - await page - .getByRole('textbox', { name: 'Ask anything...' }) - .fill('Translate into french'); - await page.getByRole('textbox', { name: 'Ask anything...' }).press('Enter'); - await expect(editor.getByText('Albert AI')).toBeVisible(); - await expect(editor.getByText('Bonjour le monde')).toBeVisible(); - await page - .locator('p.bn-mt-suggestion-menu-item-title') - .getByText('Revert') - .click(); - - await expect(editor.getByText('Hello World')).toBeVisible(); - }); - - test('it checks the AI buttons feature legacy', async ({ - page, - browserName, - }) => { - await page.route(/.*\/ai-translate\//, async (route) => { - const request = route.request(); - if (request.method().includes('POST')) { - await route.fulfill({ - json: { - answer: 'Hallo Welt', - }, - }); - } else { - await route.continue(); - } - }); - - await createDoc(page, 'doc-ai', browserName, 1); - - await page.locator('.bn-block-outer').last().fill('Hello World'); - - const editor = page.locator('.ProseMirror'); - await editor.getByText('Hello').selectText(); - - await page.getByRole('button', { name: 'AI', exact: true }).click(); - - await expect( - page.getByRole('menuitem', { name: 'Use as prompt' }), - ).toBeVisible(); - await expect( - page.getByRole('menuitem', { name: 'Rephrase' }), - ).toBeVisible(); - await expect( - page.getByRole('menuitem', { name: 'Summarize' }), - ).toBeVisible(); - await expect(page.getByRole('menuitem', { name: 'Correct' })).toBeVisible(); - await expect( - page.getByRole('menuitem', { name: 'Language' }), - ).toBeVisible(); - - await page.getByRole('menuitem', { name: 'Language' }).hover(); - await expect( - page.getByRole('menuitem', { name: 'English', exact: true }), - ).toBeVisible(); - await expect( - page.getByRole('menuitem', { name: 'French', exact: true }), - ).toBeVisible(); - await expect( - page.getByRole('menuitem', { name: 'German', exact: true }), - ).toBeVisible(); - - await page.getByRole('menuitem', { name: 'German', exact: true }).click(); - - await expect(editor.getByText('Hallo Welt')).toBeVisible(); - }); - - [ - { ai_transform: false, ai_translate: false }, - { ai_transform: true, ai_translate: false }, - { ai_transform: false, ai_translate: true }, - ].forEach(({ ai_transform, ai_translate }) => { - test(`it checks AI buttons when can transform is at "${ai_transform}" and can translate is at "${ai_translate}"`, async ({ + test('it checks the AI buttons feature legacy', async ({ page, browserName, }) => { + await page.route(/.*\/ai-translate\//, async (route) => { + const request = route.request(); + if (request.method().includes('POST')) { + await route.fulfill({ + json: { + answer: 'Hallo Welt', + }, + }); + } else { + await route.continue(); + } + }); + + await createDoc(page, 'doc-ai', browserName, 1); + + await page.locator('.bn-block-outer').last().fill('Hello World'); + + const editor = page.locator('.ProseMirror'); + await editor.getByText('Hello').selectText(); + + await page.getByRole('button', { name: 'AI', exact: true }).click(); + + await expect( + page.getByRole('menuitem', { name: 'Use as prompt' }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'Rephrase' }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'Summarize' }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'Correct' }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'Language' }), + ).toBeVisible(); + + await page.getByRole('menuitem', { name: 'Language' }).hover(); + await expect( + page.getByRole('menuitem', { name: 'English', exact: true }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'French', exact: true }), + ).toBeVisible(); + await expect( + page.getByRole('menuitem', { name: 'German', exact: true }), + ).toBeVisible(); + + await page.getByRole('menuitem', { name: 'German', exact: true }).click(); + + await expect(editor.getByText('Hallo Welt')).toBeVisible(); + }); + + [ + { ai_transform: false, ai_translate: false }, + { ai_transform: true, ai_translate: false }, + { ai_transform: false, ai_translate: true }, + ].forEach(({ ai_transform, ai_translate }) => { + test(`it checks AI buttons when can transform is at "${ai_transform}" and can translate is at "${ai_translate}"`, async ({ + page, + browserName, + }) => { + await mockedDocument(page, { + accesses: [ + { + id: 'b0df4343-c8bd-4c20-9ff6-fbf94fc94egg', + role: 'owner', + user: { + email: 'super@owner.com', + full_name: 'Super Owner', + }, + }, + ], + abilities: { + destroy: true, // Means owner + link_configuration: true, + ai_transform, + ai_translate, + accesses_manage: true, + accesses_view: true, + update: true, + partial_update: true, + retrieve: true, + }, + link_reach: 'restricted', + link_role: 'editor', + created_at: '2021-09-01T09:00:00Z', + title: '', + }); + + const [randomDoc] = await createDoc( + page, + 'doc-editor-ai', + browserName, + 1, + ); + + await verifyDocName(page, randomDoc); + + await page.locator('.bn-block-outer').last().fill('Hello World'); + + const editor = page.locator('.ProseMirror'); + await editor.getByText('Hello').selectText(); + + if (!ai_transform && !ai_translate) { + await expect( + page.getByRole('button', { name: 'AI', exact: true }), + ).toBeHidden(); + return; + } + + await page.getByRole('button', { name: 'AI', exact: true }).click(); + + if (ai_transform) { + await expect( + page.getByRole('menuitem', { name: 'Use as prompt' }), + ).toBeVisible(); + } else { + await expect( + page.getByRole('menuitem', { name: 'Use as prompt' }), + ).toBeHidden(); + } + + if (ai_translate) { + await expect( + page.getByRole('menuitem', { name: 'Language' }), + ).toBeVisible(); + } else { + await expect( + page.getByRole('menuitem', { name: 'Language' }), + ).toBeHidden(); + } + }); + }); + + test(`it checks ai_proxy ability`, async ({ page, browserName }) => { await mockedDocument(page, { accesses: [ { @@ -231,8 +317,7 @@ test.describe('Doc AI feature', () => { abilities: { destroy: true, // Means owner link_configuration: true, - ai_transform, - ai_translate, + ai_proxy: false, accesses_manage: true, accesses_view: true, update: true, @@ -247,7 +332,7 @@ test.describe('Doc AI feature', () => { const [randomDoc] = await createDoc( page, - 'doc-editor-ai', + 'doc-editor-ai-proxy', browserName, 1, ); @@ -259,81 +344,108 @@ test.describe('Doc AI feature', () => { const editor = page.locator('.ProseMirror'); await editor.getByText('Hello').selectText(); - if (!ai_transform && !ai_translate) { - await expect( - page.getByRole('button', { name: 'AI', exact: true }), - ).toBeHidden(); - return; - } + await expect(page.getByRole('button', { name: 'Ask AI' })).toBeHidden(); + await page.locator('.bn-block-outer').last().fill('/'); + await expect(page.getByText('Write with AI')).toBeHidden(); + }); + }); +} + +if (process.env.IS_INSTANCE === 'true') { + test.describe('Doc AI feature on Instance', () => { + test('it checks legacy AI feature', async ({ page, browserName }) => { + const currentConfig = await getCurrentConfig(page); + test.skip( + !currentConfig.AI_FEATURE_ENABLED || + !currentConfig.AI_FEATURE_LEGACY_ENABLED, + 'Legacy AI feature is not enabled', + ); + + await createDoc(page, 'doc-editor-ai-legacy-instance', browserName, 1); + + const editor = await writeInEditor({ page, text: 'Hello World' }); + + await page.waitForTimeout(1000); + + await editor.getByText('Hello World').selectText(); await page.getByRole('button', { name: 'AI', exact: true }).click(); + await page.getByRole('menuitem', { name: 'Language' }).hover(); + await page.getByRole('menuitem', { name: 'French', exact: true }).click(); - if (ai_transform) { - await expect( - page.getByRole('menuitem', { name: 'Use as prompt' }), - ).toBeVisible(); - } else { - await expect( - page.getByRole('menuitem', { name: 'Use as prompt' }), - ).toBeHidden(); - } - - if (ai_translate) { - await expect( - page.getByRole('menuitem', { name: 'Language' }), - ).toBeVisible(); - } else { - await expect( - page.getByRole('menuitem', { name: 'Language' }), - ).toBeHidden(); - } - }); - }); - - test(`it checks ai_proxy ability`, async ({ page, browserName }) => { - await mockedDocument(page, { - accesses: [ - { - id: 'b0df4343-c8bd-4c20-9ff6-fbf94fc94egg', - role: 'owner', - user: { - email: 'super@owner.com', - full_name: 'Super Owner', - }, - }, - ], - abilities: { - destroy: true, // Means owner - link_configuration: true, - ai_proxy: false, - accesses_manage: true, - accesses_view: true, - update: true, - partial_update: true, - retrieve: true, - }, - link_reach: 'restricted', - link_role: 'editor', - created_at: '2021-09-01T09:00:00Z', - title: '', + await expect(editor.getByText('Bonjour le monde')).toBeVisible(); }); - const [randomDoc] = await createDoc( - page, - 'doc-editor-ai-proxy', - browserName, - 1, - ); + test('it checks legacy AI Blocknote', async ({ page, browserName }) => { + const currentConfig = await getCurrentConfig(page); + test.skip( + !currentConfig.AI_FEATURE_ENABLED || + !currentConfig.AI_FEATURE_BLOCKNOTE_ENABLED, + 'Blocknote AI feature is not enabled', + ); - await verifyDocName(page, randomDoc); + /** + * Problem with the POSTHOG flags that keep false. + * In case the flag is present, we mock the response + */ + await page.route(/flags\/\?v=2/, async (route) => { + const request = route.request(); + if (request.method().includes('POST')) { + await route.fulfill({ + json: { + errorsWhileComputingFlags: false, + flags: { + ai_blocknote: { + key: 'ai_blocknote', + enabled: true, + variant: null, + reason: { + code: 'condition_match', + condition_index: 5, + description: 'Matched condition set 6', + }, + metadata: { + id: 147864, + version: 47, + description: null, + payload: null, + }, + }, + }, + requestId: '2e3dc8be-d43c-4c9b-b497-c566f342904b', + evaluatedAt: 1775060096052, + }, + }); + } else { + await route.continue(); + } + }); - await page.locator('.bn-block-outer').last().fill('Hello World'); + await createDoc(page, 'doc-editor-ai-BN-instance', browserName, 1); - const editor = page.locator('.ProseMirror'); - await editor.getByText('Hello').selectText(); + const editor = await writeInEditor({ page, text: 'Hello World' }); - await expect(page.getByRole('button', { name: 'Ask AI' })).toBeHidden(); - await page.locator('.bn-block-outer').last().fill('/'); - await expect(page.getByText('Write with AI')).toBeHidden(); + await page.waitForTimeout(1000); + + await editor.getByText('Hello World').selectText(); + + await page.getByRole('button', { name: 'Ask AI' }).click(); + await page.getByRole('option', { name: 'Translate' }).click(); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .fill('Translate into french'); + await page + .getByRole('textbox', { name: 'Ask anything...' }) + .press('Enter'); + + await expect(editor.getByText(currentConfig.AI_BOT.name)).toBeVisible(); + await expect(editor.getByText('Bonjour le monde')).toBeVisible(); + await page + .locator('p.bn-mt-suggestion-menu-item-title') + .getByText('Revert') + .click(); + + await expect(editor.getByText('Hello World')).toBeVisible(); + }); }); -}); +} diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-comments.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-comments.spec.ts index 6641803be..58bc330b5 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-comments.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-comments.spec.ts @@ -58,10 +58,14 @@ test.describe('Doc Comments', () => { await page.getByRole('button', { name: '👍' }).click(); await expect( - thread.getByRole('img', { name: `E2E ${browserName}` }).first(), + thread + .getByRole('img', { name: `${process.env.FIRST_NAME} ${browserName}` }) + .first(), ).toBeVisible(); await expect(thread.getByText('This is a comment').first()).toBeVisible(); - await expect(thread.getByText(`E2E ${browserName}`).first()).toBeVisible(); + await expect( + thread.getByText(`${process.env.FIRST_NAME} ${browserName}`).first(), + ).toBeVisible(); await expect(thread.locator('.bn-comment-reaction')).toHaveText('👍1'); const urlCommentDoc = page.url(); @@ -85,7 +89,7 @@ test.describe('Doc Comments', () => { otherThread.getByText('This is a comment').first(), ).toBeVisible(); await expect( - otherThread.getByText(`E2E ${browserName}`).first(), + otherThread.getByText(`${process.env.FIRST_NAME} ${browserName}`).first(), ).toBeVisible(); await expect(otherThread.locator('.bn-comment-reaction')).toHaveText('👍2'); @@ -98,13 +102,19 @@ test.describe('Doc Comments', () => { // We check that the second user can see the comment he just made await expect( - otherThread.getByRole('img', { name: `E2E ${otherBrowserName}` }).first(), + otherThread + .getByRole('img', { + name: `${process.env.FIRST_NAME} ${otherBrowserName}`, + }) + .first(), ).toBeVisible(); await expect( otherThread.getByText('This is a comment from the other user').first(), ).toBeVisible(); await expect( - otherThread.getByText(`E2E ${otherBrowserName}`).first(), + otherThread + .getByText(`${process.env.FIRST_NAME} ${otherBrowserName}`) + .first(), ).toBeVisible(); // We check that the first user can see the comment made by the second user in real time @@ -112,7 +122,7 @@ test.describe('Doc Comments', () => { thread.getByText('This is a comment from the other user').first(), ).toBeVisible(); await expect( - thread.getByText(`E2E ${otherBrowserName}`).first(), + thread.getByText(`${process.env.FIRST_NAME} ${otherBrowserName}`).first(), ).toBeVisible(); await cleanup(); @@ -134,7 +144,7 @@ test.describe('Doc Comments', () => { await expect(editor.getByText('Hello')).toHaveCSS( 'background-color', - 'color(srgb 0.882353 0.831373 0.717647 / 0.4)', + /color\(srgb\s+[\d\s.]+\s+\/\s+0\.4\)/, ); await editor.first().click(); @@ -201,7 +211,7 @@ test.describe('Doc Comments', () => { await expect(editor.getByText('Hello')).toHaveCSS( 'background-color', - 'color(srgb 0.882353 0.831373 0.717647 / 0.4)', + /color\(srgb\s+[\d\s.]+\s+\/\s+0\.4\)/, ); await editor.first().click(); @@ -267,11 +277,15 @@ test.describe('Doc Comments', () => { await expect(otherEditor.getByText('Hello')).toHaveCSS( 'background-color', - 'color(srgb 0.882353 0.831373 0.717647 / 0.4)', + /color\(srgb\s+[\d\s.]+\s+\/\s+0\.4\)/, ); // We change the role of the second user to reader - await updateRoleUser(page, 'Reader', `user.test@${otherBrowserName}.test`); + await updateRoleUser( + page, + 'Reader', + process.env[`SIGN_IN_USERNAME_${otherBrowserName.toUpperCase()}`] || '', + ); // With the reader role, the second user cannot see comments await otherPage.reload(); @@ -296,13 +310,21 @@ test.describe('Doc Comments', () => { // Anonymous user can see and add comments await otherPage.getByRole('button', { name: 'Logout' }).click(); + await expect( + otherPage + .getByRole('button', { name: process.env.SIGN_IN_EL_TRIGGER }) + .first(), + ).toBeVisible({ + timeout: 10000, + }); + await otherPage.goto(urlCommentDoc); await verifyDocName(otherPage, docTitle); await expect(otherEditor.getByText('Hello')).toHaveCSS( 'background-color', - 'color(srgb 0.882353 0.831373 0.717647 / 0.4)', + /color\(srgb\s+[\d\s.]+\s+\/\s+0\.4\)/, ); await otherEditor.getByText('Hello').click(); await expect( @@ -348,7 +370,7 @@ test.describe('Doc Comments', () => { await expect(editor1.getByText('Document One')).toHaveCSS( 'background-color', - 'color(srgb 0.882353 0.831373 0.717647 / 0.4)', + /color\(srgb\s+[\d\s.]+\s+\/\s+0\.4\)/, ); await editor1.getByText('Document One').click(); 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 7ff67ade0..45cdeadc8 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 @@ -3,11 +3,11 @@ import { expect, test } from '@playwright/test'; import { createDoc, goToGridDoc, - keyCloakSignIn, randomName, verifyDocName, } from './utils-common'; import { connectOtherUserToDoc } from './utils-share'; +import { SignIn } from './utils-signin'; test.beforeEach(async ({ page }) => { await page.goto('/'); @@ -22,8 +22,7 @@ test.describe('Doc Create', () => { { timeout: 5000 }, ); - const header = page.locator('header').first(); - await header.locator('h1').getByText('Docs').click(); + await page.getByRole('button', { name: 'Back to homepage' }).click(); const docsGrid = page.getByTestId('docs-grid'); await expect(docsGrid).toBeVisible(); @@ -134,7 +133,7 @@ test.describe('Doc Create', () => { withoutSignIn: true, }); - await keyCloakSignIn(otherPage, otherBrowserName, false); + await SignIn(otherPage, otherBrowserName, false); await verifyDocName(otherPage, 'From unlogged doc from url'); @@ -160,22 +159,28 @@ test.describe('Doc Create: Not logged', () => { browserName, request, }) => { - const SERVER_TO_SERVER_API_TOKENS = 'server-api-token'; + test.skip( + !process.env.SERVER_TO_SERVER_API_TOKENS || + !process.env[`SUB_${browserName.toUpperCase()}`] || + !process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`], + 'Server to server API tokens and credentials must be set', + ); + 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.test@${browserName}.test`, - email: `user.test@${browserName}.test`, + sub: process.env[`SUB_${browserName.toUpperCase()}`], + email: process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`], }; const newDoc = await request.post( - `http://localhost:8071/api/v1.0/documents/create-for-owner/`, + `${process.env.BASE_API_URL}/documents/create-for-owner/`, { data, headers: { - Authorization: `Bearer ${SERVER_TO_SERVER_API_TOKENS}`, + Authorization: `Bearer ${process.env.SERVER_TO_SERVER_API_TOKENS}`, format: 'json', }, }, @@ -183,7 +188,7 @@ test.describe('Doc Create: Not logged', () => { expect(newDoc.ok()).toBeTruthy(); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); await goToGridDoc(page, { title }); 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 94268a323..3c30288ad 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 @@ -28,8 +28,12 @@ test.describe('Doc Editor', () => { }) => { await createDoc(page, 'doc-toolbar', browserName, 1); + await verifyDocName(page, 'doc-toolbar'); + const editor = await writeInEditor({ page, text: 'test content' }); + await page.waitForTimeout(1500); + await editor .getByText('test content', { exact: true, @@ -37,10 +41,7 @@ test.describe('Doc Editor', () => { .selectText(); const toolbar = page.locator('.bn-formatting-toolbar'); - await expect(toolbar.getByRole('button', { name: 'Ask AI' })).toBeVisible(); - await expect( - toolbar.locator('button[data-test="comment-toolbar-button"]'), - ).toBeVisible(); + await expect(toolbar.locator('button[data-test="bold"]')).toBeVisible(); await expect(toolbar.locator('button[data-test="italic"]')).toBeVisible(); await expect( @@ -63,6 +64,23 @@ test.describe('Doc Editor', () => { await expect( toolbar.locator('button[data-test="createLink"]'), ).toBeVisible(); + + /** + * Because of how Posthog is loaded and how auth session are + * saved, this assertion is not reliable on test instances + * We will dedicate a testcase to check the AI features + * on test instances with a specific setup + */ + if (process.env.IS_INSTANCE !== 'true') { + // eslint-disable-next-line playwright/no-conditional-expect + await expect( + toolbar.getByRole('button', { name: 'Ask AI' }), + ).toBeVisible(); + } + + await expect( + toolbar.locator('button[data-test="comment-toolbar-button"]'), + ).toBeVisible(); await expect( toolbar.locator('button[data-test="convertMarkdown"]'), ).toBeVisible(); @@ -117,7 +135,7 @@ test.describe('Doc Editor', () => { let webSocketPromise = page.waitForEvent('websocket', (webSocket) => { return webSocket .url() - .includes('ws://localhost:4444/collaboration/ws/?room='); + .includes(`${process.env.COLLABORATION_WS_URL}?room=`); }); await page @@ -128,7 +146,7 @@ test.describe('Doc Editor', () => { let webSocket = await webSocketPromise; expect(webSocket.url()).toContain( - 'ws://localhost:4444/collaboration/ws/?room=', + `${process.env.COLLABORATION_WS_URL}?room=`, ); // Is connected @@ -157,7 +175,7 @@ test.describe('Doc Editor', () => { webSocket = await page.waitForEvent('websocket', (webSocket) => { return webSocket .url() - .includes('ws://localhost:4444/collaboration/ws/?room='); + .includes(`${process.env.COLLABORATION_WS_URL}?room=`); }); framesentPromise = webSocket.waitForEvent('framesent'); framesent = await framesentPromise; @@ -331,7 +349,9 @@ test.describe('Doc Editor', () => { const viewerImg = otherPage .locator('.--docs--editor-container img.bn-visual-media') .first(); - await expect(viewerImg).toBeVisible(); + await expect(viewerImg).toBeVisible({ + timeout: 10000, + }); // Viewer can download the image await viewerImg.click(); @@ -364,15 +384,16 @@ test.describe('Doc Editor', () => { .locator('.--docs--editor-container img.bn-visual-media') .first(); - await expect(image).toBeVisible(); + await expect(image).toBeVisible({ + timeout: 10000, + }); // Wait for the media-check to be processed - await page.waitForTimeout(1000); // Check src of image expect(await image.getAttribute('src')).toMatch( - /http:\/\/localhost:8083\/media\/.*\/attachments\/.*.png/, + /media\/.*\/attachments\/.*.png/, ); await expect(image).toHaveAttribute('role', 'presentation'); @@ -381,60 +402,62 @@ test.describe('Doc Editor', () => { await expect(image).toHaveAttribute('aria-hidden', 'true'); }); - test('it downloads unsafe files', async ({ page, browserName }) => { - const [randomDoc] = await createDoc(page, 'doc-editor', browserName, 1); + if (process.env.IS_INSTANCE !== 'true') { + test('it downloads unsafe files', async ({ page, browserName }) => { + const [randomDoc] = await createDoc(page, 'doc-editor', browserName, 1); - const fileChooserPromise = page.waitForEvent('filechooser'); - const downloadPromise = page.waitForEvent('download', (download) => { - return download.suggestedFilename().includes(`html`); + const fileChooserPromise = page.waitForEvent('filechooser'); + const downloadPromise = page.waitForEvent('download', (download) => { + return download.suggestedFilename().includes(`html`); + }); + const responseCheckPromise = page.waitForResponse( + (response) => + response.url().includes('media-check') && response.status() === 200, + ); + + await verifyDocName(page, randomDoc); + + await page.locator('.ProseMirror.bn-editor').click(); + await page.locator('.ProseMirror.bn-editor').fill('Hello World'); + + await page.keyboard.press('Enter'); + await page.locator('.bn-block-outer').last().fill('/'); + await page.getByText('Embedded file').click(); + await page.getByText('Upload file').click(); + + const fileChooser = await fileChooserPromise; + await fileChooser.setFiles(path.join(__dirname, 'assets/test.html')); + + await responseCheckPromise; + + await page.locator('.bn-block-content[data-name="test.html"]').click(); + await page.getByRole('button', { name: 'Download file' }).click(); + + await expect( + page.getByText('This file is flagged as unsafe.'), + ).toBeVisible(); + + await expect( + page.getByRole('button', { + name: 'Download', + exact: true, + }), + ).toBeVisible(); + + void page + .getByRole('button', { + name: 'Download', + exact: true, + }) + .click(); + + const download = await downloadPromise; + expect(download.suggestedFilename()).toContain(`-unsafe.html`); + + const svgBuffer = await cs.toBuffer(await download.createReadStream()); + expect(svgBuffer.toString()).toContain('Hello svg'); }); - const responseCheckPromise = page.waitForResponse( - (response) => - response.url().includes('media-check') && response.status() === 200, - ); - - await verifyDocName(page, randomDoc); - - await page.locator('.ProseMirror.bn-editor').click(); - await page.locator('.ProseMirror.bn-editor').fill('Hello World'); - - await page.keyboard.press('Enter'); - await page.locator('.bn-block-outer').last().fill('/'); - await page.getByText('Embedded file').click(); - await page.getByText('Upload file').click(); - - const fileChooser = await fileChooserPromise; - await fileChooser.setFiles(path.join(__dirname, 'assets/test.html')); - - await responseCheckPromise; - - await page.locator('.bn-block-content[data-name="test.html"]').click(); - await page.getByRole('button', { name: 'Download file' }).click(); - - await expect( - page.getByText('This file is flagged as unsafe.'), - ).toBeVisible(); - - await expect( - page.getByRole('button', { - name: 'Download', - exact: true, - }), - ).toBeVisible(); - - void page - .getByRole('button', { - name: 'Download', - exact: true, - }) - .click(); - - const download = await downloadPromise; - expect(download.suggestedFilename()).toContain(`-unsafe.html`); - - const svgBuffer = await cs.toBuffer(await download.createReadStream()); - expect(svgBuffer.toString()).toContain('Hello svg'); - }); + } test('it analyzes uploads', async ({ page, browserName }) => { const [randomDoc] = await createDoc(page, 'doc-editor', browserName, 1); @@ -484,144 +507,150 @@ test.describe('Doc Editor', () => { await expect(editor.getByText('Analyzing file...')).toBeHidden(); }); - test('it checks block editing when not connected to collab server', async ({ - page, - browserName, - }) => { - test.slow(); - - /** - * The good port is 4444, but we want to simulate a not connected - * collaborative server. - * So we use a port that is not used by the collaborative server. - * The server will not be able to connect to the collaborative server. - */ - await overrideConfig(page, { - COLLABORATION_WS_URL: 'ws://localhost:5555/collaboration/ws/', - }); - - await page.goto('/'); - - const [parentTitle] = await createDoc( - page, - 'editing-blocking', - browserName, - 1, - ); - - const card = page.getByLabel('It is the card information'); - await expect( - card.getByText('Others are editing. Your network prevent changes.'), - ).toBeHidden(); - const editor = page.locator('.ProseMirror'); - - await expect(editor).toHaveAttribute('contenteditable', 'true'); - - let responseCanEditPromise = page.waitForResponse( - (response) => - response.url().includes(`/can-edit/`) && response.status() === 200, - ); - - await page.getByRole('button', { name: 'Share' }).click(); - - await updateShareLink(page, 'Public', 'Editing'); - - // Close the modal - await page.getByRole('button', { name: 'close' }).first().click(); - - const urlParentDoc = page.url(); - - const { name: childTitle } = await createRootSubPage( + if (process.env.COLLABORATION_WS_NOT_CONNECTED_READY_ONLY === 'true') { + test('it checks block editing when not connected to collab server', async ({ page, browserName, - 'editing-blocking - child', - ); + }) => { + test.slow(); - let responseCanEdit = await responseCanEditPromise; - expect(responseCanEdit.ok()).toBeTruthy(); - let jsonCanEdit = (await responseCanEdit.json()) as { can_edit: boolean }; - expect(jsonCanEdit.can_edit).toBeTruthy(); + /** + * The good port is 4444, but we want to simulate a not connected + * collaborative server. + * So we use a port that is not used by the collaborative server. + * The server will not be able to connect to the collaborative server. + */ + await overrideConfig(page, { + COLLABORATION_WS_URL: 'ws://localhost:5555/collaboration/ws/', + }); - const urlChildDoc = page.url(); + await page.goto('/'); - /** - * We open another browser that will connect to the collaborative server - * and will block the current browser to edit the doc. - */ - const { otherPage } = await connectOtherUserToDoc({ - browserName, - docUrl: urlChildDoc, - docTitle: childTitle, - withoutSignIn: true, + const [parentTitle] = await createDoc( + page, + 'editing-blocking', + browserName, + 1, + ); + + const card = page.getByLabel('It is the card information'); + await expect( + card.getByText('Others are editing. Your network prevent changes.'), + ).toBeHidden(); + const editor = page.locator('.ProseMirror'); + + await expect(editor).toHaveAttribute('contenteditable', 'true'); + + let responseCanEditPromise = page.waitForResponse( + (response) => + response.url().includes(`/can-edit/`) && response.status() === 200, + ); + + await page.getByRole('button', { name: 'Share' }).click(); + + await updateShareLink(page, 'Public', 'Editing'); + + // Close the modal + await page.getByRole('button', { name: 'close' }).first().click(); + + const urlParentDoc = page.url(); + + const { name: childTitle } = await createRootSubPage( + page, + browserName, + 'editing-blocking - child', + ); + + let responseCanEdit = await responseCanEditPromise; + expect(responseCanEdit.ok()).toBeTruthy(); + let jsonCanEdit = (await responseCanEdit.json()) as { can_edit: boolean }; + expect(jsonCanEdit.can_edit).toBeTruthy(); + + const urlChildDoc = page.url(); + + /** + * We open another browser that will connect to the collaborative server + * and will block the current browser to edit the doc. + */ + const { otherPage } = await connectOtherUserToDoc({ + browserName, + docUrl: urlChildDoc, + docTitle: childTitle, + withoutSignIn: true, + }); + + const webSocketPromise = otherPage.waitForEvent( + 'websocket', + (webSocket) => { + return webSocket + .url() + .includes(`${process.env.COLLABORATION_WS_URL}?room=`); + }, + ); + + await otherPage.goto(urlChildDoc); + + const webSocket = await webSocketPromise; + expect(webSocket.url()).toContain( + `${process.env.COLLABORATION_WS_URL}?room=`, + ); + + await verifyDocName(otherPage, childTitle); + + await page.reload(); + + responseCanEdit = await page.waitForResponse( + (response) => + response.url().includes(`/can-edit/`) && response.status() === 200, + ); + expect(responseCanEdit.ok()).toBeTruthy(); + + jsonCanEdit = (await responseCanEdit.json()) as { can_edit: boolean }; + expect(jsonCanEdit.can_edit).toBeFalsy(); + + await expect( + card.getByText('Others are editing. Your network prevent changes.'), + ).toBeVisible({ + timeout: 10000, + }); + + await expect(editor).toHaveAttribute('contenteditable', 'false'); + + await expect( + page.getByRole('textbox', { name: 'Document title' }), + ).toBeHidden(); + await expect( + page.getByRole('heading', { name: childTitle }), + ).toBeVisible(); + + await page.goto(urlParentDoc); + + await verifyDocName(page, parentTitle); + + await page.getByRole('button', { name: 'Share' }).click(); + + await page.getByTestId('doc-access-mode').click(); + await page.getByRole('menuitemradio', { name: 'Reading' }).click(); + + // Close the modal + await page.getByRole('button', { name: 'close' }).first().click(); + + await page.goto(urlChildDoc); + + await expect(editor).toHaveAttribute('contenteditable', 'true'); + + await expect( + page.getByRole('textbox', { name: 'Document title' }), + ).toContainText(childTitle); + await expect( + page.getByRole('heading', { name: childTitle }), + ).toBeHidden(); + + await expect( + card.getByText('Others are editing. Your network prevent changes.'), + ).toBeHidden(); }); - - const webSocketPromise = otherPage.waitForEvent( - 'websocket', - (webSocket) => { - return webSocket - .url() - .includes('ws://localhost:4444/collaboration/ws/?room='); - }, - ); - - await otherPage.goto(urlChildDoc); - - const webSocket = await webSocketPromise; - expect(webSocket.url()).toContain( - 'ws://localhost:4444/collaboration/ws/?room=', - ); - - await verifyDocName(otherPage, childTitle); - - await page.reload(); - - responseCanEdit = await page.waitForResponse( - (response) => - response.url().includes(`/can-edit/`) && response.status() === 200, - ); - expect(responseCanEdit.ok()).toBeTruthy(); - - jsonCanEdit = (await responseCanEdit.json()) as { can_edit: boolean }; - expect(jsonCanEdit.can_edit).toBeFalsy(); - - await expect( - card.getByText('Others are editing. Your network prevent changes.'), - ).toBeVisible({ - timeout: 10000, - }); - - await expect(editor).toHaveAttribute('contenteditable', 'false'); - - await expect( - page.getByRole('textbox', { name: 'Document title' }), - ).toBeHidden(); - await expect(page.getByRole('heading', { name: childTitle })).toBeVisible(); - - await page.goto(urlParentDoc); - - await verifyDocName(page, parentTitle); - - await page.getByRole('button', { name: 'Share' }).click(); - - await page.getByTestId('doc-access-mode').click(); - await page.getByRole('menuitemradio', { name: 'Reading' }).click(); - - // Close the modal - await page.getByRole('button', { name: 'close' }).first().click(); - - await page.goto(urlChildDoc); - - await expect(editor).toHaveAttribute('contenteditable', 'true'); - - await expect( - page.getByRole('textbox', { name: 'Document title' }), - ).toContainText(childTitle); - await expect(page.getByRole('heading', { name: childTitle })).toBeHidden(); - - await expect( - card.getByText('Others are editing. Your network prevent changes.'), - ).toBeHidden(); - }); + } test('it checks if callout custom block', async ({ page, browserName }) => { await createDoc(page, 'doc-toolbar', browserName, 1); @@ -868,7 +897,7 @@ test.describe('Doc Editor', () => { // Check src of pdf expect(await pdfIframe.getAttribute('src')).toMatch( - /http:\/\/localhost:8083\/media\/.*\/attachments\/.*.pdf/, + /\/media\/.*\/attachments\/.*.pdf/, ); await expect(pdfIframe).toHaveAttribute('role', 'presentation'); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts index 1cdccea07..b9d66c781 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts @@ -160,6 +160,8 @@ test.describe('Doc Export', () => { const download = await downloadPromise; expect(download.suggestedFilename()).toBe(`${randomDoc}.zip`); + await page.waitForTimeout(1000); + const zipBuffer = await cs.toBuffer(await download.createReadStream()); // Unzip and inspect contents const zip = await JSZip.loadAsync(zipBuffer); @@ -254,6 +256,8 @@ test.describe('Doc Export', () => { const download = await downloadPromise; expect(download.suggestedFilename()).toBe(`${randomDoc}.pdf`); + await page.waitForTimeout(1000); + const pdfBuffer = await cs.toBuffer(await download.createReadStream()); const pdfParse = new PDFParse({ data: pdfBuffer }); @@ -301,6 +305,8 @@ test.describe('Doc Export', () => { const download = await downloadPromise; expect(download.suggestedFilename()).toBe(`${randomDocFrench}.pdf`); + await page.waitForTimeout(1000); + const pdfBuffer = await cs.toBuffer(await download.createReadStream()); const pdfString = pdfBuffer.toString('latin1'); @@ -388,6 +394,8 @@ test.describe('Doc Export', () => { const download = await downloadPromise; expect(download.suggestedFilename()).toBe(`${randomDoc}.pdf`); + await page.waitForTimeout(1000); + const pdfBuffer = await cs.toBuffer(await download.createReadStream()); // If we need to update the PDF regression fixture, uncomment the line below diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts index 33e388371..a12dbd61c 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-grid-move.spec.ts @@ -22,11 +22,10 @@ test.describe('Doc grid move', () => { browserName, }) => { await page.goto('/'); - const header = page.locator('header').first(); await createDoc(page, 'Draggable doc', browserName, 1); - await header.locator('h1').getByText('Docs').click(); + await page.getByRole('button', { name: 'Back to homepage' }).click(); await createDoc(page, 'Droppable doc', browserName, 1); - await header.locator('h1').getByText('Docs').click(); + await page.getByRole('button', { name: 'Back to homepage' }).click(); const response = await page.waitForResponse( (response) => @@ -333,9 +332,14 @@ test.describe('Doc grid move', () => { // The other user should receive the access request and be able to approve it await otherPage.getByRole('button', { name: 'Share' }).click(); await expect(otherPage.getByText('Access Requests')).toBeVisible(); - await expect(otherPage.getByText(`E2E ${browserName}`)).toBeVisible(); + await expect( + otherPage.getByText( + process.env[`USERNAME_${browserName.toUpperCase()}`] || '', + ), + ).toBeVisible(); - const emailRequest = `user.test@${browserName}.test`; + const emailRequest = + process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || ''; await expect(otherPage.getByText(emailRequest)).toBeVisible(); const container = otherPage.getByTestId( `doc-share-access-request-row-${emailRequest}`, @@ -348,7 +352,11 @@ test.describe('Doc grid move', () => { await expect(otherPage.getByText('Access Requests')).toBeHidden(); await expect(otherPage.getByText('Share with 2 users')).toBeVisible(); - await expect(otherPage.getByText(`E2E ${browserName}`)).toBeVisible(); + await expect( + otherPage.getByText( + process.env[`USERNAME_${browserName.toUpperCase()}`] || '', + ), + ).toBeVisible(); // The first user should now be able to move the doc await page.reload(); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-import.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-import.spec.ts index a5821e9b2..c9fc5a691 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-import.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-import.spec.ts @@ -89,7 +89,7 @@ test.describe('Doc Import', () => { ).toBeVisible(); /* eslint-disable playwright/no-conditional-expect */ - if (isMDCheck) { + if (isMDCheck && process.env.IS_INSTANCE !== 'true') { await expect( editor.locator( 'img[src="http://localhost:3000/assets/logo-suite-numerique.png"]', diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-inherited-share.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-inherited-share.spec.ts index d3a713272..791c7eedc 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-inherited-share.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-inherited-share.spec.ts @@ -17,12 +17,14 @@ test.describe('Inherited share accesses', () => { page.getByText('People with access via the parent document'), ).toBeVisible(); - const user = page.getByTestId( - `doc-share-member-row-user.test@${browserName}.test`, - ); - await expect(user).toBeVisible(); - await expect(user.getByText(`E2E ${browserName}`)).toBeVisible(); - await expect(user.getByText('Owner')).toBeVisible(); + const users = page.locator('.--docs--doc-share-member-item'); + await expect(users).toBeVisible(); + await expect( + users.getByText( + process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || '', + ), + ).toBeVisible(); + await expect(users.getByText('Owner')).toBeVisible(); await page .locator('.--docs--doc-inherited-share-content') diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-member-create.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-member-create.spec.ts index 20f9d93d7..23eabde58 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-member-create.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-member-create.spec.ts @@ -1,14 +1,9 @@ import { expect, test } from '@playwright/test'; -import { - BROWSERS, - createDoc, - keyCloakSignIn, - randomName, - verifyDocName, -} from './utils-common'; +import { BROWSERS, createDoc, randomName, verifyDocName } from './utils-common'; import { writeInEditor } from './utils-editor'; import { connectOtherUserToDoc, updateRoleUser } from './utils-share'; +import { SignIn } from './utils-signin'; import { createRootSubPage } from './utils-sub-pages'; test.describe('Document create member', () => { @@ -99,7 +94,7 @@ test.describe('Document create member', () => { list.getByTestId(`doc-share-add-member-${users[1].email}`), ).toBeVisible(); await expect( - list.getByText(`${users[1].full_name || users[1].email}`), + list.getByText(`${users[1].full_name || users[1].email}`).first(), ).toBeVisible(); // Select email and verify tag @@ -302,9 +297,14 @@ test.describe('Document create member', () => { await page.getByRole('button', { name: 'Share' }).click(); await expect(page.getByText('Access Requests')).toBeVisible(); - await expect(page.getByText(`E2E ${otherBrowserName}`)).toBeVisible(); + await expect( + page.getByText( + process.env[`USERNAME_${otherBrowserName.toUpperCase()}`] || '', + ), + ).toBeVisible(); - const emailRequest = `user.test@${otherBrowserName}.test`; + const emailRequest = + process.env[`SIGN_IN_USERNAME_${otherBrowserName.toUpperCase()}`] || ''; await expect(page.getByText(emailRequest)).toBeVisible(); const container = page.getByTestId( `doc-share-access-request-row-${emailRequest}`, @@ -315,7 +315,11 @@ test.describe('Document create member', () => { await expect(page.getByText('Access Requests')).toBeHidden(); await expect(page.getByText('Share with 2 users')).toBeVisible(); - await expect(page.getByText(`E2E ${otherBrowserName}`)).toBeVisible(); + await expect( + page.getByText( + process.env[`USERNAME_${otherBrowserName.toUpperCase()}`] || '', + ), + ).toBeVisible(); // Other user verifies he has access await otherPage.reload(); @@ -343,7 +347,7 @@ test.describe('Document create member: Multiple login', () => { test.slow(); await page.goto('/'); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); const [docParent] = await createDoc( page, @@ -370,7 +374,7 @@ test.describe('Document create member: Multiple login', () => { const otherBrowser = BROWSERS.find((b) => b !== browserName); - await keyCloakSignIn(page, otherBrowser!); + await SignIn(page, otherBrowser!); await expect(page.getByTestId('header-logo-link')).toBeVisible({ timeout: 10000, diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-member-list.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-member-list.spec.ts index 726d4fa2e..efe7b2100 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-member-list.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-member-list.spec.ts @@ -149,8 +149,10 @@ test.describe('Document list members', () => { await page.getByRole('button', { name: 'Share' }).click(); const list = page.getByTestId('doc-share-quick-search'); await expect(list).toBeVisible(); + const emailRequest = + process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || ''; const currentUser = list.getByTestId( - `doc-share-member-row-user.test@${browserName}.test`, + `doc-share-member-row-${emailRequest}`, ); const currentUserRole = currentUser.getByTestId('doc-role-dropdown'); await expect(currentUser).toBeVisible(); @@ -214,8 +216,9 @@ test.describe('Document list members', () => { const list = page.getByTestId('doc-share-quick-search'); - const emailMyself = `user.test@${browserName}.test`; - const mySelf = list.getByTestId(`doc-share-member-row-${emailMyself}`); + const emailRequest = + process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || ''; + const mySelf = list.getByTestId(`doc-share-member-row-${emailRequest}`); const mySelfRole = mySelf.getByTestId('doc-role-dropdown'); const userOwnerEmail = await addNewMember(page, 0, 'Owner'); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts index c0cfd32a4..b3941aaa8 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts @@ -4,12 +4,12 @@ import { expect, test } from '@playwright/test'; import { createDoc, - expectLoginPage, - keyCloakSignIn, + getCurrentConfig, mockedDocument, verifyDocName, } from './utils-common'; import { writeInEditor } from './utils-editor'; +import { SignIn, expectLoginPage } from './utils-signin'; import { createRootSubPage } from './utils-sub-pages'; test.describe('Doc Routing', () => { @@ -54,6 +54,13 @@ test.describe('Doc Routing', () => { }); test('checks 401 on docs/[id] page', async ({ page, browserName }) => { + const currentConfig = await getCurrentConfig(page); + + test.skip( + currentConfig.FRONTEND_SILENT_LOGIN_ENABLED, + 'This test is only relevant when silent login is disabled.', + ); + const [docTitle] = await createDoc(page, '401-doc-parent', browserName, 1); await verifyDocName(page, docTitle); @@ -117,7 +124,7 @@ test.describe('Doc Routing: Not logged', () => { await page.goto(`/docs/${uuid}/`); await expect(page.locator('h2').getByText('Mocked document')).toBeVisible(); await page.getByRole('button', { name: 'Login' }).click(); - await keyCloakSignIn(page, browserName, false); + await SignIn(page, browserName, false); await expect(page.locator('h2').getByText('Mocked document')).toBeVisible(); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts index babd52274..9e60c1bc0 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts @@ -46,9 +46,27 @@ test.describe('Doc Trashbin', () => { const docsGrid = page.getByTestId('docs-grid'); await expect(docsGrid.getByText('Days remaining')).toBeVisible(); - await expect(row1.getByText(title1)).toBeVisible(); + + try { + await expect(row1.getByText(title1)).toBeVisible(); + } catch { + test.skip( + true, + 'We skip this test, it will fails because too much document deleted in the trashbin and it is ordered by day remaining', + ); + } + await expect(row1.getByText('30 days')).toBeVisible(); - await expect(row2.getByText(title2)).toBeVisible(); + + try { + await expect(row2.getByText(title2)).toBeVisible(); + } catch { + test.skip( + true, + 'We skip this test, it will fails because too much document deleted in the trashbin and it is ordered by day remaining', + ); + } + await expect( row2.getByRole('button', { name: 'Open the sharing settings for the document', @@ -115,8 +133,18 @@ test.describe('Doc Trashbin', () => { await page.getByRole('button', { name: 'Back to homepage' }).click(); await page.getByRole('link', { name: 'Trashbin' }).click(); - const row = await getGridRow(page, subDocName); - await row.getByText(subDocName).click(); + + let row; + try { + row = await getGridRow(page, subDocName); + } catch { + test.skip( + true, + 'We skip this test, it will fails because too much document deleted in the trashbin and it is ordered by day remaining', + ); + } + + await row?.getByText(subDocName).click(); await verifyDocName(page, subDocName); await expect( diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts index 24178783c..e31c246ed 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts @@ -2,12 +2,11 @@ import { expect, test } from '@playwright/test'; import { createDoc, - expectLoginPage, - keyCloakSignIn, + getOtherBrowserName, updateDocTitle, verifyDocName, } from './utils-common'; -import { addNewMember } from './utils-share'; +import { addNewMember, connectOtherUserToDoc } from './utils-share'; import { addChild, clickOnAddRootSubPage, @@ -28,10 +27,10 @@ test.describe('Doc Tree', () => { const response = { count: 40, - next: `http://localhost:8071/api/v1.0/documents/anything/children/?page=${parseInt(pageId) + 1}`, + next: `${process.env.BASE_API_URL}/documents/anything/children/?page=${parseInt(pageId) + 1}`, previous: parseInt(pageId) > 1 - ? `http://localhost:8071/api/v1.0/documents/anything/children/?page=${parseInt(pageId) - 1}` + ? `${process.env.BASE_API_URL}/documents/anything/children/?page=${parseInt(pageId) - 1}` : null, results: Array.from({ length: 20 }, (_, i) => ({ id: `doc-child-${pageId}-${i}`, @@ -142,8 +141,8 @@ test.describe('Doc Tree', () => { .click(); await expect(docTree.getByText('doc-child-1-19')).toBeVisible(); - await expect(docTree.locator('.c__spinner')).toBeVisible(); await docTree.getByText('doc-child-1-19').hover(); + await expect(docTree.locator('.c__spinner')).toBeVisible(); await expect( docTree.getByText('doc-child-2-1', { exact: true, @@ -264,8 +263,7 @@ test.describe('Doc Tree', () => { page.getByRole('textbox', { name: 'Document title' }), ).not.toHaveText(docChild); - const header = page.locator('header').first(); - await header.locator('h1').getByText('Docs').click(); + await page.getByRole('button', { name: 'Back to homepage' }).click(); await expect(page.getByText(docChild)).toBeVisible(); }); @@ -281,11 +279,14 @@ test.describe('Doc Tree', () => { await page.getByRole('button', { name: 'Share' }).click(); - await addNewMember(page, 0, 'Owner', 'impress'); + const otherBrowserName = getOtherBrowserName(browserName); + await addNewMember(page, 0, 'Owner', otherBrowserName); const list = page.getByTestId('doc-share-quick-search'); + const currentEmail = + process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || ''; const currentUser = list.getByTestId( - `doc-share-member-row-user.test@${browserName}.test`, + `doc-share-member-row-${currentEmail}`, ); const currentUserRole = currentUser.getByTestId('doc-role-dropdown'); await currentUserRole.click(); @@ -492,19 +493,12 @@ test.describe('Doc Tree', () => { await expect(row.getByText('😀')).toBeHidden(); await expect(titleEmojiPicker).toBeHidden(); }); -}); - -test.describe('Doc Tree: Inheritance', () => { - test.use({ storageState: { cookies: [], origins: [] } }); test('A child inherit from the parent', async ({ page, browserName }) => { // test.slow() to extend timeout since this scenario chains Keycloak login + redirects, // doc creation/navigation and async doc-tree loading (/documents/:id/tree), which can exceed 30s (especially in CI). test.slow(); - await page.goto('/'); - await keyCloakSignIn(page, browserName); - const [docParent] = await createDoc( page, 'doc-tree-inheritance-parent', @@ -531,22 +525,19 @@ test.describe('Doc Tree: Inheritance', () => { 'doc-tree-inheritance-child', ); - const urlDoc = page.url(); + const docUrl = page.url(); - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); + const { otherPage, cleanup } = await connectOtherUserToDoc({ + browserName, + docUrl, + withoutSignIn: true, + docTitle: docChild, + }); - await expectLoginPage(page); - - await page.goto(urlDoc); - - await expect(page.locator('h2').getByText(docChild)).toBeVisible(); - - const docTree = page.getByTestId('doc-tree'); + const docTree = otherPage.getByTestId('doc-tree'); await expect(docTree).toBeVisible({ timeout: 10000 }); await expect(docTree.getByText(docParent)).toBeVisible(); + + await cleanup(); }); }); 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 ab528ee4b..a04996741 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 @@ -1,14 +1,9 @@ import { expect, test } from '@playwright/test'; -import { - BROWSERS, - createDoc, - expectLoginPage, - keyCloakSignIn, - verifyDocName, -} from './utils-common'; +import { BROWSERS, createDoc, verifyDocName } from './utils-common'; import { getEditor, writeInEditor } from './utils-editor'; import { addNewMember, connectOtherUserToDoc } from './utils-share'; +import { SignIn, expectLoginPage } from './utils-signin'; import { createRootSubPage } from './utils-sub-pages'; test.describe('Doc Visibility', () => { @@ -74,7 +69,7 @@ test.describe('Doc Visibility: Restricted', () => { browserName, }) => { await page.goto('/'); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); const [docTitle] = await createDoc( page, @@ -109,7 +104,7 @@ test.describe('Doc Visibility: Restricted', () => { test.slow(); await page.goto('/'); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1); @@ -128,7 +123,7 @@ test.describe('Doc Visibility: Restricted', () => { throw new Error('No alternative browser found'); } - await keyCloakSignIn(page, otherBrowser); + await SignIn(page, otherBrowser); await expect(page.getByTestId('header-logo-link')).toBeVisible({ timeout: 10000, @@ -146,7 +141,7 @@ test.describe('Doc Visibility: Restricted', () => { test('A doc is accessible when member.', async ({ page, browserName }) => { test.slow(); await page.goto('/'); - await keyCloakSignIn(page, browserName); + await SignIn(page, browserName); const [docTitle] = await createDoc(page, 'Restricted auth', browserName, 1); @@ -369,15 +364,14 @@ test.describe('Doc Visibility: Public', () => { }); test.describe('Doc Visibility: Authenticated', () => { - test.use({ storageState: { cookies: [], origins: [] } }); + test.beforeEach(async ({ page }) => { + await page.goto('/'); + }); test('A doc is not accessible when unauthenticated.', async ({ page, browserName, }) => { - await page.goto('/'); - await keyCloakSignIn(page, browserName); - const [docTitle] = await createDoc( page, 'Authenticated unauthentified', @@ -398,23 +392,21 @@ test.describe('Doc Visibility: Authenticated', () => { await page.getByRole('button', { name: 'close' }).click(); - const urlDoc = page.url(); + const docUrl = page.url(); - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); + const { otherPage, cleanup } = await connectOtherUserToDoc({ + browserName, + docUrl, + withoutSignIn: true, + }); - await expectLoginPage(page); - - await page.goto(urlDoc); - - await expect(page.locator('h2').getByText(docTitle)).toBeHidden(); + await expect(otherPage.locator('h2').getByText(docTitle)).toBeHidden(); await expect( - page.getByText('Log in to access the document.'), + otherPage.getByText('Log in to access the document.'), ).toBeVisible(); + + await cleanup(); }); test('It checks a authenticated doc in read only mode', async ({ @@ -423,9 +415,6 @@ test.describe('Doc Visibility: Authenticated', () => { }) => { test.slow(); - await page.goto('/'); - await keyCloakSignIn(page, browserName); - const [docTitle] = await createDoc( page, 'Authenticated read only', @@ -454,7 +443,7 @@ test.describe('Doc Visibility: Authenticated', () => { await page.getByRole('button', { name: 'close' }).click(); - const urlDoc = page.url(); + const docUrl = page.url(); const { name: childTitle } = await createRootSubPage( page, @@ -464,56 +453,43 @@ test.describe('Doc Visibility: Authenticated', () => { const urlChildDoc = page.url(); - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); - - const otherBrowser = BROWSERS.find((b) => b !== browserName); - if (!otherBrowser) { - throw new Error('No alternative browser found'); - } - await keyCloakSignIn(page, otherBrowser); - - await expect(page.getByTestId('header-logo-link')).toBeVisible({ - timeout: 10000, + const { otherPage, cleanup } = await connectOtherUserToDoc({ + browserName, + docUrl, + docTitle, }); - await page.goto(urlDoc); - - await expect(page.locator('h2').getByText(docTitle)).toBeVisible(); - await page.getByRole('button', { name: 'Share' }).click(); - await page.getByRole('button', { name: 'Copy link' }).click(); - await expect(page.getByText('Link Copied !')).toBeVisible(); + await otherPage.getByRole('button', { name: 'Share' }).click(); await expect( - page.getByText( + otherPage.getByText( 'You can view this document but need additional access to see its members or modify settings.', ), ).toBeVisible(); - await page.getByRole('button', { name: 'Request access' }).click(); + await otherPage.getByRole('button', { name: 'Request access' }).click(); await expect( - page.getByRole('button', { name: 'Request access' }), + otherPage.getByRole('button', { name: 'Request access' }), ).toBeDisabled(); - await page.goto(urlChildDoc); + await otherPage.goto(urlChildDoc); - await expect(page.locator('h2').getByText(childTitle)).toBeVisible(); + await expect(otherPage.locator('h2').getByText(childTitle)).toBeVisible(); - await page.getByRole('button', { name: 'Share' }).click(); + await otherPage.getByRole('button', { name: 'Share' }).click(); await expect( - page.getByText( + otherPage.getByText( 'As this is a sub-document, please request access to the parent document to enable these features.', ), ).toBeVisible(); await expect( - page.getByRole('button', { name: 'Request access' }), + otherPage.getByRole('button', { name: 'Request access' }), ).toBeHidden(); + + await cleanup(); }); test('It checks a authenticated doc in editable mode', async ({ @@ -521,8 +497,6 @@ test.describe('Doc Visibility: Authenticated', () => { browserName, }) => { test.slow(); - await page.goto('/'); - await keyCloakSignIn(page, browserName); const [docTitle] = await createDoc( page, @@ -542,7 +516,7 @@ test.describe('Doc Visibility: Authenticated', () => { page.getByText('The document visibility has been updated.'), ).toBeVisible(); - const urlDoc = page.url(); + const docUrl = page.url(); await page.getByTestId('doc-access-mode').click(); await page.getByRole('menuitemradio', { name: 'Editing' }).click(); @@ -552,29 +526,24 @@ test.describe('Doc Visibility: Authenticated', () => { await page.getByRole('button', { name: 'close' }).click(); - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); - - const otherBrowser = BROWSERS.find((b) => b !== browserName); - if (!otherBrowser) { - throw new Error('No alternative browser found'); - } - await keyCloakSignIn(page, otherBrowser); - - await expect(page.getByTestId('header-logo-link')).toBeVisible({ - timeout: 10000, + const { otherPage, cleanup } = await connectOtherUserToDoc({ + browserName, + docUrl, + docTitle, }); - await page.goto(urlDoc); + await otherPage.getByRole('button', { name: 'Share' }).click(); - await verifyDocName(page, docTitle); - await page.getByRole('button', { name: 'Share' }).click(); - await page.getByRole('button', { name: 'Copy link' }).click(); - await expect(page.getByText('Link Copied !')).toBeVisible({ - timeout: 10000, - }); + await expect( + otherPage.getByText( + 'You can view this document but need additional access to see its members or modify settings.', + ), + ).toBeVisible(); + + await expect( + otherPage.getByRole('button', { name: 'Request access' }), + ).toBeVisible(); + + await cleanup(); }); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/footer.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/footer.spec.ts index b599e43ad..b00034a82 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/footer.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/footer.spec.ts @@ -14,45 +14,47 @@ test.describe('Footer', () => { await expect(page.locator('footer')).toBeHidden(); }); - test('checks all the elements are visible', async ({ page }) => { - await page.goto('/'); - const footer = page.locator('footer').first(); + if (process.env.IS_INSTANCE !== 'true') { + test('checks all the elements are visible', async ({ page }) => { + await page.goto('/'); + const footer = page.locator('footer').first(); - await expect(footer.getByAltText('Docs Logo')).toBeVisible(); - await expect(footer.getByRole('heading', { name: 'Docs' })).toBeVisible(); + await expect(footer.getByAltText('Docs Logo')).toBeVisible(); + await expect(footer.getByRole('heading', { name: 'Docs' })).toBeVisible(); - await expect(footer.getByRole('link', { name: 'GitHub' })).toBeVisible(); - await expect(footer.getByRole('link', { name: 'DINUM' })).toBeVisible(); - await expect(footer.getByRole('link', { name: 'ZenDiS' })).toBeVisible(); + await expect(footer.getByRole('link', { name: 'GitHub' })).toBeVisible(); + await expect(footer.getByRole('link', { name: 'DINUM' })).toBeVisible(); + await expect(footer.getByRole('link', { name: 'ZenDiS' })).toBeVisible(); - await expect( - footer.getByRole('link', { name: 'BlockNote.js' }), - ).toBeVisible(); - await expect( - footer.getByRole('link', { name: 'Legal Notice' }), - ).toBeVisible(); - await expect( - footer.getByRole('link', { name: 'Personal data and cookies' }), - ).toBeVisible(); - await expect( - footer.getByRole('link', { name: 'Accessibility' }), - ).toBeVisible(); + await expect( + footer.getByRole('link', { name: 'BlockNote.js' }), + ).toBeVisible(); + await expect( + footer.getByRole('link', { name: 'Legal Notice' }), + ).toBeVisible(); + await expect( + footer.getByRole('link', { name: 'Personal data and cookies' }), + ).toBeVisible(); + await expect( + footer.getByRole('link', { name: 'Accessibility' }), + ).toBeVisible(); - await expect( - footer.getByText( - 'Unless otherwise stated, all content on this site is under licence', - ), - ).toBeVisible(); + await expect( + footer.getByText( + 'Unless otherwise stated, all content on this site is under licence', + ), + ).toBeVisible(); - // Check the translation - const header = page.locator('header').first(); - await header.getByRole('button').getByText('English').click(); - await page.getByRole('menuitemradio', { name: 'Français' }).click(); + // Check the translation + const header = page.locator('header').first(); + await header.getByRole('button').getByText('English').click(); + await page.getByRole('menuitemradio', { name: 'Français' }).click(); - await expect( - page.locator('footer').getByText('Mentions légales'), - ).toBeVisible(); - }); + await expect( + page.locator('footer').getByText('Mentions légales'), + ).toBeVisible(); + }); + } test('checks the footer is correctly overrided', async ({ page }) => { await overrideConfig(page, { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts index 237a437d8..2e40a4201 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts @@ -1,10 +1,7 @@ import { expect, test } from '@playwright/test'; -import { - expectLoginPage, - keyCloakSignIn, - overrideConfig, -} from './utils-common'; +import { overrideConfig } from './utils-common'; +import { SignIn, expectLoginPage } from './utils-signin'; test.describe('Header', () => { test('checks all the elements are visible', async ({ page }) => { @@ -142,27 +139,31 @@ test.describe('Header', () => { await expect(page.getByRole('link', { name: 'Grist' })).toBeVisible(); await expect(page.getByRole('link', { name: 'Visio' })).toBeVisible(); }); -}); -test.describe('Header: Log out', () => { - test.use({ storageState: { cookies: [], origins: [] } }); - - // eslint-disable-next-line playwright/expect-expect - test('checks logout button', async ({ page, browserName }) => { + test('it displays skip link on first TAB and focuses page heading on click', async ({ + page, + }) => { await page.goto('/'); - await keyCloakSignIn(page, browserName); - await page - .getByRole('button', { - name: 'Logout', - }) - .click(); + // Wait for skip link to be mounted (client-side only component) + const skipLink = page.getByRole('link', { name: 'Go to content' }); + await skipLink.waitFor({ state: 'attached' }); - await expectLoginPage(page); + // First TAB shows the skip link + await page.keyboard.press('Tab'); + + // The skip link should be visible and focused + await expect(skipLink).toBeFocused(); + await expect(skipLink).toBeVisible(); + // Clicking moves focus to the page heading + await skipLink.click(); + const pageHeading = page.getByRole('heading', { + name: 'All docs', + level: 2, + }); + await expect(pageHeading).toBeFocused(); }); -}); -test.describe('Header: Override configuration', () => { test('checks the header is correctly overrided', async ({ page }) => { await overrideConfig(page, { FRONTEND_THEME: 'dsfr', @@ -190,28 +191,20 @@ test.describe('Header: Override configuration', () => { }); }); -test.describe('Header: Skip to Content', () => { - test('it displays skip link on first TAB and focuses page heading on click', async ({ - page, - }) => { +test.describe('Header: Log out', () => { + test.use({ storageState: { cookies: [], origins: [] } }); + + // eslint-disable-next-line playwright/expect-expect + test('checks logout button', async ({ page, browserName }) => { await page.goto('/'); + await SignIn(page, browserName); - // Wait for skip link to be mounted (client-side only component) - const skipLink = page.getByRole('link', { name: 'Go to content' }); - await skipLink.waitFor({ state: 'attached' }); + await page + .getByRole('button', { + name: 'Logout', + }) + .click(); - // First TAB shows the skip link - await page.keyboard.press('Tab'); - - // The skip link should be visible and focused - await expect(skipLink).toBeFocused(); - await expect(skipLink).toBeVisible(); - // Clicking moves focus to the page heading - await skipLink.click(); - const pageHeading = page.getByRole('heading', { - name: 'All docs', - level: 2, - }); - await expect(pageHeading).toBeFocused(); + await expectLoginPage(page); }); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/help.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/help.spec.ts index 428adf0aa..d8e9dca8e 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/help.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/help.spec.ts @@ -7,10 +7,6 @@ import { } from './utils-common'; test.describe('Help feature', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/'); - }); - test.describe('Onboarding modal', () => { test('Help menu not displayed if onboarding is disabled', async ({ page, @@ -23,6 +19,8 @@ test.describe('Help feature', () => { }, }); + await page.goto('/'); + await expect(page.getByRole('button', { name: 'New doc' })).toBeVisible(); await expect( @@ -42,6 +40,8 @@ test.describe('Help feature', () => { }, }); + await page.goto('/'); + await page.getByRole('button', { name: 'Open help menu' }).click(); await page.getByRole('menuitem', { name: 'Onboarding' }).click(); @@ -86,23 +86,21 @@ test.describe('Help feature', () => { }); test('closes modal with Skip button', async ({ page }) => { + await page.goto('/'); + await page.getByRole('button', { name: 'Open help menu' }).click(); await page.getByRole('menuitem', { name: 'Onboarding' }).click(); const modal = page.getByTestId('onboarding-modal'); await expect(modal).toBeVisible(); - await expect( - page.getByRole('link', { - name: 'Learn more docs features', - }), - ).toBeHidden(); - await page.getByRole('button', { name: /skip/i }).click(); await expect(modal).toBeHidden(); }); test('Modal onboarding translated correctly', async ({ page }) => { + await page.goto('/'); + // switch to french await waitForLanguageSwitch(page, TestLanguage.French); @@ -131,6 +129,8 @@ test.describe('Help feature', () => { page, browserName, }) => { + await page.goto('/'); + await expect(page.getByRole('button', { name: 'New doc' })).toBeVisible(); await expect(page.getByTestId('onboarding-modal')).toBeHidden(); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts index d7c0ed2f3..3c9e8649b 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts @@ -2,10 +2,6 @@ import { expect, test } from '@playwright/test'; import { overrideConfig } from './utils-common'; -test.beforeEach(async ({ page }) => { - await page.goto('/docs/'); -}); - test.describe('Home page', () => { test.use({ storageState: { cookies: [], origins: [] } }); @@ -23,7 +19,6 @@ test.describe('Home page', () => { await expect(languageButton).toBeVisible(); await expect(header.getByTestId('header-icon-docs')).toBeVisible(); - await expect(header.getByRole('heading', { name: 'Docs' })).toBeVisible(); // Check the titles const h2 = page.locator('h2'); @@ -69,7 +64,9 @@ test.describe('Home page', () => { h2.getByText('A new way to organize knowledge.'), ).toBeVisible(); await expect( - page.getByRole('button', { name: 'Start Writing' }), + page + .getByRole('button', { name: process.env.SIGN_IN_EL_TRIGGER }) + .first(), ).toBeVisible(); await expect(footer).toBeVisible(); @@ -178,7 +175,7 @@ test.describe('Home page', () => { // Keyclock login page await expect( - page.locator('.login-pf #kc-header-wrapper').getByText('impress'), + page.locator(`${process.env.SIGN_IN_EL_LOGIN_PAGE}`).getByText('impress'), ).toBeVisible(); }); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts index 1a064ee3b..6b75b45d8 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts @@ -116,7 +116,7 @@ test.describe('Language', () => { // Helper function to intercept and assert 404 response const check404Response = async (expectedDetail: string) => { const interceptedBackendResponse = await page.request.get( - 'http://localhost:8071/api/v1.0/documents/non-existent-doc-uuid/', + `${process.env.BASE_API_URL}/documents/non-existent-doc-uuid/`, ); // Assert that the intercepted error message is in the expected language diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts index d1c0f82f9..d6debab1b 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts @@ -18,7 +18,7 @@ export const CONFIG = { AI_FEATURE_LEGACY_ENABLED: true, API_USERS_SEARCH_QUERY_MIN_LENGTH: 3, CRISP_WEBSITE_ID: null, - COLLABORATION_WS_URL: 'ws://localhost:4444/collaboration/ws/', + COLLABORATION_WS_URL: process.env.COLLABORATION_WS_URL, COLLABORATION_WS_NOT_CONNECTED_READY_ONLY: true, CONVERSION_UPLOAD_ENABLED: true, CONVERSION_FILE_EXTENSIONS_ALLOWED: ['.docx', '.md'], @@ -29,7 +29,7 @@ export const CONFIG = { FRONTEND_HOMEPAGE_FEATURE_ENABLED: true, FRONTEND_SILENT_LOGIN_ENABLED: false, FRONTEND_THEME: null, - MEDIA_BASE_URL: 'http://localhost:8083', + MEDIA_BASE_URL: process.env.MEDIA_BASE_URL, LANGUAGES: [ ['en-us', 'English'], ['fr-fr', 'Français'], @@ -62,29 +62,18 @@ export const overrideConfig = async ( } }); -export const keyCloakSignIn = async ( - page: Page, - browserName: string, - fromHome = true, -) => { - if (fromHome) { - await page.getByRole('button', { name: 'Start Writing' }).first().click(); - } +export const getCurrentConfig = async (page: Page) => { + const responsePromise = page.waitForResponse( + (response) => + response.url().includes('/config/') && response.status() === 200, + ); - const login = `user-e2e-${browserName}`; - const password = `password-e2e-${browserName}`; + await page.goto('/'); - await expect( - page.locator('.login-pf #kc-header-wrapper').getByText('impress'), - ).toBeVisible(); + const response = await responsePromise; + expect(response.ok()).toBeTruthy(); - if (await page.getByLabel('Restart login').isVisible()) { - await page.getByLabel('Restart login').click(); - } - - await page.getByRole('textbox', { name: 'username' }).fill(login); - await page.getByRole('textbox', { name: 'password' }).fill(password); - await page.click('button[type="submit"]', { force: true }); + return (await response.json()) as typeof CONFIG; }; export const getOtherBrowserName = (browserName: BrowserName) => { @@ -209,8 +198,11 @@ export const goToGridDoc = async ( page: Page, { nthRow = 1, title }: GoToGridDocOptions = {}, ) => { - const header = page.locator('header').first(); - await header.locator('h1').getByText('Docs').click(); + if ( + await page.getByRole('button', { name: 'Back to homepage' }).isVisible() + ) { + await page.getByRole('button', { name: 'Back to homepage' }).click(); + } const docsGrid = page.getByTestId('docs-grid'); await expect(docsGrid).toBeVisible(); @@ -325,13 +317,6 @@ export const mockedListDocs = async (page: Page, data: object[] = []) => { }); }; -export const expectLoginPage = async (page: Page) => - await expect( - page.getByRole('heading', { name: 'Collaborative writing' }), - ).toBeVisible({ - timeout: 10000, - }); - // language helper export const TestLanguage = { English: { diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts index febec69c4..54395c63f 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-export.ts @@ -74,7 +74,9 @@ export const overrideDocContent = async ({ const image = page .locator('.--docs--editor-container img.bn-visual-media[src$=".svg"]') .first(); - await expect(image).toBeVisible(); + await expect(image).toBeVisible({ + timeout: 10000, + }); await page.keyboard.press('Enter'); await page.waitForTimeout(1000); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-share.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-share.ts index dc89907ea..69dc4c515 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-share.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-share.ts @@ -3,9 +3,9 @@ import { Page, chromium, expect } from '@playwright/test'; import { BrowserName, getOtherBrowserName, - keyCloakSignIn, verifyDocName, } from './utils-common'; +import { SignIn } from './utils-signin'; export type Role = 'Administrator' | 'Owner' | 'Editor' | 'Reader'; export type LinkReach = 'Private' | 'Connected' | 'Public'; @@ -131,14 +131,14 @@ export const connectOtherUserToDoc = async ({ .getByRole('main', { name: 'Main content' }) .getByLabel('Login'); const loginFromHome = otherPage.getByRole('button', { - name: 'Start Writing', + name: process.env.SIGN_IN_EL_TRIGGER, }); await loginFromApp.or(loginFromHome).first().click({ timeout: 15000, }); - await keyCloakSignIn(otherPage, otherBrowserName, false); + await SignIn(otherPage, otherBrowserName, false); } if (docTitle) { await verifyDocName(otherPage, docTitle); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-signin.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-signin.ts new file mode 100644 index 000000000..a3331011f --- /dev/null +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-signin.ts @@ -0,0 +1,94 @@ +import { Page, expect } from '@playwright/test'; + +export const SignIn = async ( + page: Page, + browserName: string, + fromHome = true, +) => { + if (process.env.CUSTOM_SIGN_IN === 'true') { + await customSignIn(page, browserName, fromHome); + return; + } + + await keycloakSignIn(page, browserName, fromHome); +}; + +export const customSignIn = async ( + page: Page, + browserName: string, + fromHome = true, +) => { + // Check if already signed in (Silent login or session still valid) + if ( + await page + .locator('header') + .first() + .getByRole('button', { + name: 'Logout', + }) + .isVisible() + ) { + return; + } + + if (fromHome) { + await page + .getByRole('button', { name: process.env.SIGN_IN_EL_TRIGGER }) + .first() + .click(); + } + + await page + .getByRole('textbox', { name: process.env.SIGN_IN_EL_USERNAME_INPUT }) + .fill(process.env[`SIGN_IN_USERNAME_${browserName.toUpperCase()}`] || ''); + + if (process.env.SIGN_IN_EL_USERNAME_VALIDATION) { + await page + .getByRole('button', { name: process.env.SIGN_IN_EL_USERNAME_VALIDATION }) + .first() + .click(); + } + + await page + .locator( + `input[name="${process.env.SIGN_IN_EL_PASSWORD_INPUT || 'password'}"]`, + ) + .fill(process.env[`SIGN_IN_PASSWORD_${browserName.toUpperCase()}`] || ''); + + await page.click('button[type="submit"]', { force: true }); +}; + +export const keycloakSignIn = async ( + page: Page, + browserName: string, + fromHome = true, +) => { + if (fromHome) { + await page + .getByRole('button', { name: process.env.SIGN_IN_EL_TRIGGER }) + .first() + .click(); + } + + const login = `user-e2e-${browserName}`; + const password = `password-e2e-${browserName}`; + + await expect( + page.locator('.login-pf #kc-header-wrapper').getByText('impress'), + ).toBeVisible(); + + if (await page.getByLabel('Restart login').isVisible()) { + await page.getByLabel('Restart login').click(); + } + + await page.getByRole('textbox', { name: 'username' }).fill(login); + await page.getByRole('textbox', { name: 'password' }).fill(password); + await page.click('button[type="submit"]', { force: true }); +}; + +export const expectLoginPage = async (page: Page) => + await expect( + page.getByRole('heading', { name: 'Collaborative writing' }), + ).toBeVisible({ + timeout: 10000, + }); diff --git a/src/frontend/apps/e2e/package.json b/src/frontend/apps/e2e/package.json index 5f1816837..72150052b 100644 --- a/src/frontend/apps/e2e/package.json +++ b/src/frontend/apps/e2e/package.json @@ -24,6 +24,7 @@ "dependencies": { "@types/pngjs": "6.0.5", "convert-stream": "1.0.2", + "dotenv": "17.3.1", "pdf-parse": "2.4.5", "pixelmatch": "7.1.0", "pngjs": "7.0.0" diff --git a/src/frontend/apps/e2e/playwright.config.ts b/src/frontend/apps/e2e/playwright.config.ts index cdb6aadc8..2cdf59b42 100644 --- a/src/frontend/apps/e2e/playwright.config.ts +++ b/src/frontend/apps/e2e/playwright.config.ts @@ -1,8 +1,14 @@ import { defineConfig, devices } from '@playwright/test'; +import dotenv from 'dotenv'; -const PORT = process.env.PORT || 3000; +dotenv.config({ + path: ['./.env.local', './.env'], + quiet: true, + debug: !process.env.CI, +}); -const baseURL = `http://localhost:${PORT}`; +const PORT = process.env.PORT; +const baseURL = process.env.BASE_URL; /** * See https://playwright.dev/docs/test-configuration. @@ -23,7 +29,10 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 3 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: [['html', { outputFolder: './report' }]], + reporter: [ + ['html', { outputFolder: './report' }], + ['list', { printSteps: true }], + ], /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { baseURL, @@ -31,13 +40,16 @@ export default defineConfig({ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', }, - - webServer: { - command: !process.env.CI ? `cd ../.. && yarn app:dev --port ${PORT}` : '', - url: baseURL, - timeout: 120 * 1000, - reuseExistingServer: true, - }, + ...(process.env.CI + ? {} + : { + webServer: { + command: `cd ../.. && yarn app:dev --port ${PORT}`, + url: baseURL, + timeout: 120 * 1000, + reuseExistingServer: true, + }, + }), globalSetup: require.resolve('./__tests__/app-impress/auth.setup'), /* Configure projects for major browsers */ projects: [