diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 83f0bd474..c810d8ee3 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,8 +16,8 @@ jobs: strategy: fail-fast: false matrix: - # run 2 copies of the job in parallel - shard: [1, 2] + # run 3 copies of the job in parallel + shard: [1, 2, 3] name: "Playwright Tests - pwc" timeout-minutes: 20 diff --git a/package.json b/package.json index 252dc8f5e..f5700e080 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@appquality/languages": "1.4.3", - "@appquality/unguess-design-system": "4.0.26", + "@appquality/unguess-design-system": "4.0.35", "@headwayapp/react-widget": "^0.0.4", "@reduxjs/toolkit": "^1.8.0", "@sentry/react": "^8.32.0", diff --git a/playwright.config.ts b/playwright.config.ts index 698788f85..2b7c6f76c 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -68,8 +68,24 @@ export default defineConfig({ // use: { ...devices['Desktop Edge'], channel: 'msedge' }, // }, { - name: 'Google Chrome', - use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + name: `Google Chrome ${ + process.env.DISABLE_GPU_WAYLAND ? 'without GPU' : 'with GPU' + }`, + use: { + ...devices['Desktop Chrome'], + channel: 'chrome', + ...(process.env.DISABLE_GPU_WAYLAND + ? { + launchOptions: { + args: [ + '--enable-features=UseOzonePlatform', + '--ozone-platform=wayland', + '--disable-gpu', + ], + }, + } + : {}), + }, }, ], diff --git a/src/app/store.ts b/src/app/store.ts index 0a2171670..d947a0541 100644 --- a/src/app/store.ts +++ b/src/app/store.ts @@ -1,14 +1,15 @@ import { configureStore } from '@reduxjs/toolkit'; import { setupListeners } from '@reduxjs/toolkit/dist/query'; import { unguessApiSlice } from 'src/features/api/apiTags'; -import userReducer from '../features/user/userSlice'; -import navigationReducer from '../features/navigation/navigationSlice'; -import workspaceReducer from '../features/workspaces/workspaceSlice'; -import filterReducer from '../features/campaignsFilter/campaignsFilterSlice'; -import expressReducer from '../features/express/expressSlice'; import { strapiSlice } from '../features/backoffice/strapi'; import bugsPageReducer from '../features/bugsPage/bugsPageSlice'; +import filterReducer from '../features/campaignsFilter/campaignsFilterSlice'; +import expressReducer from '../features/express/expressSlice'; +import navigationReducer from '../features/navigation/navigationSlice'; +import planModulesReducer from '../features/planModules'; +import userReducer from '../features/user/userSlice'; import uxFilterReducer from '../features/uxFilters'; +import workspaceReducer from '../features/workspaces/workspaceSlice'; export const store = configureStore({ reducer: { @@ -19,12 +20,15 @@ export const store = configureStore({ express: expressReducer, bugsPage: bugsPageReducer, uxFilters: uxFilterReducer, + planModules: planModulesReducer, [unguessApiSlice.reducerPath]: unguessApiSlice.reducer, [strapiSlice.reducerPath]: strapiSlice.reducer, }, middleware: (getDefaultMiddleware) => - getDefaultMiddleware() + getDefaultMiddleware({ + serializableCheck: false, + }) .concat(unguessApiSlice.middleware) .concat(strapiSlice.middleware), }); diff --git a/src/assets/icons/additional-target-icon.svg b/src/assets/icons/additional-target-icon.svg new file mode 100644 index 000000000..d9b4775c1 --- /dev/null +++ b/src/assets/icons/additional-target-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/cake-icon-fill.svg b/src/assets/icons/cake-icon-fill.svg new file mode 100644 index 000000000..691595b9b --- /dev/null +++ b/src/assets/icons/cake-icon-fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/exploratory-task-icon.svg b/src/assets/icons/exploratory-task-icon.svg new file mode 100644 index 000000000..7230ab1bf --- /dev/null +++ b/src/assets/icons/exploratory-task-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/flag-fill.svg b/src/assets/icons/flag-fill.svg new file mode 100644 index 000000000..27fd5a54d --- /dev/null +++ b/src/assets/icons/flag-fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/functional-task-icon.svg b/src/assets/icons/functional-task-icon.svg new file mode 100644 index 000000000..98771c425 --- /dev/null +++ b/src/assets/icons/functional-task-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/gender-icon.svg b/src/assets/icons/gender-icon.svg new file mode 100644 index 000000000..276063f6c --- /dev/null +++ b/src/assets/icons/gender-icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/languages.svg b/src/assets/icons/languages.svg new file mode 100644 index 000000000..098ab3949 --- /dev/null +++ b/src/assets/icons/languages.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/literacy-icon.svg b/src/assets/icons/literacy-icon.svg new file mode 100644 index 000000000..4355406d6 --- /dev/null +++ b/src/assets/icons/literacy-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/notification.svg b/src/assets/icons/notification.svg new file mode 100644 index 000000000..1013137bc --- /dev/null +++ b/src/assets/icons/notification.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/survey-task-icon.svg b/src/assets/icons/survey-task-icon.svg new file mode 100644 index 000000000..e1490b4a3 --- /dev/null +++ b/src/assets/icons/survey-task-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/tasks-icon.svg b/src/assets/icons/tasks-icon.svg new file mode 100644 index 000000000..1a1614dca --- /dev/null +++ b/src/assets/icons/tasks-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/thinking-aloud-task-icon.svg b/src/assets/icons/thinking-aloud-task-icon.svg new file mode 100644 index 000000000..8bb00f5b0 --- /dev/null +++ b/src/assets/icons/thinking-aloud-task-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/touchpoint-app-desktop-icon.svg b/src/assets/icons/touchpoint-app-desktop-icon.svg new file mode 100644 index 000000000..718081cc3 --- /dev/null +++ b/src/assets/icons/touchpoint-app-desktop-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/touchpoint-app-smartphone-icon.svg b/src/assets/icons/touchpoint-app-smartphone-icon.svg new file mode 100644 index 000000000..54e3a0325 --- /dev/null +++ b/src/assets/icons/touchpoint-app-smartphone-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/touchpoint-app-tablet-icon.svg b/src/assets/icons/touchpoint-app-tablet-icon.svg new file mode 100644 index 000000000..3ee409810 --- /dev/null +++ b/src/assets/icons/touchpoint-app-tablet-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/touchpoint-web-desktop-icon.svg b/src/assets/icons/touchpoint-web-desktop-icon.svg new file mode 100644 index 000000000..1995cc866 --- /dev/null +++ b/src/assets/icons/touchpoint-web-desktop-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/touchpoint-web-smartphone-icon.svg b/src/assets/icons/touchpoint-web-smartphone-icon.svg new file mode 100644 index 000000000..f6e329bef --- /dev/null +++ b/src/assets/icons/touchpoint-web-smartphone-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/touchpoint-web-tablet-icon.svg b/src/assets/icons/touchpoint-web-tablet-icon.svg new file mode 100644 index 000000000..d4d55c001 --- /dev/null +++ b/src/assets/icons/touchpoint-web-tablet-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/touchpoints-icon.svg b/src/assets/icons/touchpoints-icon.svg new file mode 100644 index 000000000..27ff6c81e --- /dev/null +++ b/src/assets/icons/touchpoints-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/user-follow.svg b/src/assets/icons/user-follow.svg new file mode 100644 index 000000000..294b4ebc1 --- /dev/null +++ b/src/assets/icons/user-follow.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/x-circle.svg b/src/assets/icons/x-circle.svg new file mode 100644 index 000000000..e5b4266b6 --- /dev/null +++ b/src/assets/icons/x-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/common/Pages.tsx b/src/common/Pages.tsx index d946eb845..3b7414cd7 100644 --- a/src/common/Pages.tsx +++ b/src/common/Pages.tsx @@ -1,13 +1,14 @@ +import * as Sentry from '@sentry/react'; import { useTranslation } from 'react-i18next'; import { + createBrowserRouter, + createRoutesFromElements, Navigate, Route, RouterProvider, - createBrowserRouter, - createRoutesFromElements, } from 'react-router-dom'; -import * as Sentry from '@sentry/react'; import ErrorBoundaryPage from 'src/common/components/ErrorBoundary/ErrorBoundaryPage'; +import SentryWrapper from 'src/features/SentryWrapper'; import Bug from 'src/pages/Bug'; import BugForm from 'src/pages/Bugform'; import Bugs from 'src/pages/Bugs'; @@ -15,17 +16,18 @@ import Campaign from 'src/pages/Campaign'; import CampaignPreview from 'src/pages/Campaign/preview'; import Dashboard from 'src/pages/Dashboard'; import Project from 'src/pages/Dashboard/Project'; +import InsightsPage from 'src/pages/Insights'; import LoginPage from 'src/pages/LoginPage'; -import NotFound from 'src/pages/NotFound/NotFound'; +import Manual from 'src/pages/Manual'; import MediaNotFound from 'src/pages/NotFound/MediaNotFound'; +import NotFound from 'src/pages/NotFound/NotFound'; +import Plan from 'src/pages/Plan'; import Service from 'src/pages/Service'; -import Template from 'src/pages/Template'; import Catalog from 'src/pages/Services'; -import Manual from 'src/pages/Manual'; -import Videos from 'src/pages/Videos'; +import Template from 'src/pages/Template'; +import Templates from 'src/pages/Templates'; import Video from 'src/pages/Video'; -import InsightsPage from 'src/pages/Insights'; -import SentryWrapper from 'src/features/SentryWrapper'; +import Videos from 'src/pages/Videos'; import { Redirect } from './Redirect'; const Pages = () => { @@ -86,6 +88,10 @@ const Pages = () => { path={`/${langPrefix}/services/:templateId`} element={} /> + } + /> } @@ -102,6 +108,10 @@ const Pages = () => { path={`/${langPrefix}/campaigns/:campaignId/videos/:videoId`} element={