Skip to content

KK-1543 React 19#404

Open
mikkojamG wants to merge 22 commits into
mainfrom
feat/KK-1543-react-19
Open

KK-1543 React 19#404
mikkojamG wants to merge 22 commits into
mainfrom
feat/KK-1543-react-19

Conversation

@mikkojamG

@mikkojamG mikkojamG commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Description

Migrating React to version 19

  • Convert Testcafe tests to Playwright. There were some compatibility issues, this seemed the most logical solution in long run
  • Node to v24
  • Remove deprecated mui/styles
  • Bump react-admin to v5
  • Various dependency upgrades

Context

KK-1543

How Has This Been Tested?

Manual Testing Instructions for Reviewers

Screenshots

Summary by CodeRabbit

  • New Features

    • Added Playwright end-to-end coverage for events, event groups, messages, breadcrumbs, and unauthorized access flows.
  • Bug Fixes

    • Improved handling when certain records are missing, reducing crashes in edit, publish, and toggle actions.
    • Refined page layouts and styling for more consistent rendering across admin screens.
  • Chores

    • Updated the app to use Node.js 24 and refreshed related build, CI, and documentation references.
    • Removed old browser-test setup in favor of the new end-to-end test approach.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@mikkojamG, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 55 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c153a953-e28e-4929-bc64-9f78aa2a108a

📥 Commits

Reviewing files that changed from the base of the PR and between fc81f5d and 3a92099.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (68)
  • .gitignore
  • .testcaferc.json
  • README.md
  • browser-tests/breadcrumFeature.ts
  • browser-tests/eventFeature.ts
  • browser-tests/eventGroupsFeature.ts
  • browser-tests/messageFeature.ts
  • browser-tests/pages/eventGroups.ts
  • browser-tests/pages/events.ts
  • browser-tests/pages/login.ts
  • browser-tests/pages/messages.ts
  • browser-tests/pages/navigation.ts
  • browser-tests/pages/select.ts
  • browser-tests/pages/unauthorized.ts
  • browser-tests/types.ts
  • browser-tests/unauthorizedFeature.ts
  • browser-tests/userRoles.ts
  • browser-tests/utils/jwt/clientUtils/login.ts
  • browser-tests/utils/jwt/mocks/testJWTAuthRequests.ts
  • browser-tests/utils/valueUtils.ts
  • e2e/breadcrumFeature.spec.ts
  • e2e/eventFeature.spec.ts
  • e2e/eventGroupsFeature.spec.ts
  • e2e/messageFeature.spec.ts
  • e2e/pages/eventGroups.ts
  • e2e/pages/events.ts
  • e2e/pages/messages.ts
  • e2e/pages/navigation.ts
  • e2e/pages/routes.ts
  • e2e/pages/select.ts
  • e2e/pages/unauthorized.ts
  • e2e/unauthorizedFeature.spec.ts
  • e2e/utils/auth/oidcMock.ts
  • e2e/utils/auth/seedStorage.ts
  • e2e/utils/auth/setupAuth.ts
  • e2e/utils/jwt/config.ts
  • e2e/utils/jwt/index.ts
  • e2e/utils/jwt/jwt.ts
  • e2e/utils/jwt/oidc.ts
  • e2e/utils/jwt/services.ts
  • e2e/utils/jwt/storage.ts
  • e2e/utils/jwt/types.ts
  • e2e/utils/jwt/users.ts
  • e2e/utils/mocks/smsMessageMock.ts
  • e2e/utils/settings.ts
  • package.json
  • playwright.config.ts
  • src/domain/application/layout/kukkuuDetailPage/KukkuuDetailPage.tsx
  • src/domain/eventGroups/edit/EventGroupEditToolbar.tsx
  • src/domain/eventGroups/edit/EventGroupsEdit.tsx
  • src/domain/events/__tests__/utils.test.js
  • src/domain/events/create/EventCreate.tsx
  • src/domain/eventsAndEventGroups/list/EventsAndEventGroupsList.tsx
  • src/domain/eventsAndEventGroups/list/__tests__/EventsAndEventGroupsList.test.tsx
  • src/domain/eventsAndEventGroups/list/__tests__/handleRowClick.test.ts
  • src/domain/messages/__tests__/choices.test.ts
  • src/domain/messages/detail/MessageDetailsToolbar.tsx
  • src/domain/messages/detail/__tests__/MessageDetailsToolbar.test.jsx
  • src/domain/messages/detail/__tests__/useResolveEditPermission.test.tsx
  • src/domain/messages/form/MessageForm.tsx
  • src/domain/messages/form/__tests__/MessageForm.test.jsx
  • src/domain/occurrences/OccurrenceCreate.tsx
  • src/domain/occurrences/OccurrenceEdit.tsx
  • src/domain/occurrences/inputs.tsx
  • src/domain/profile/__tests__/ProfileProjectDropdown.test.jsx
  • src/index.tsx
  • tsconfig.e2e.json
  • vitest.config.ts
📝 Walkthrough

Walkthrough

This PR upgrades Node.js to 24, React to 19, MUI to v6, react-admin, and TanStack Query, migrating components off @mui/styles/makeStyles to inline sx/style props, hardening record-access with optional chaining, and replacing the TestCafe browser-test suite with a Playwright E2E suite, config, and mocking utilities.

Changes

Platform and application upgrade

Layer / File(s) Summary
Runtime, dependencies, and app bootstrap
.nvmrc, Dockerfile, .github/workflows/ci.yml, pipelines/kukkuu-admin-review.yml, package.json, .eslintrc.cjs, vite.config.ts, vitest.config.ts, CHANGELOG.md, docs/*, src/common/materialUI/themeConfig.ts, src/domain/application/App.tsx, src/index.tsx
Node/Docker/CI images bump to Node 24; package.json raises engine requirement, swaps MUI v5→v6, TestCafe scripts→Playwright scripts, and bumps React/react-admin/TypeScript/vite; app bootstrap adds error-boundary logging and memoized resources; theme/lint/build config adjusted.
Common UI components and shared tests
src/common/components/*
Removes unused React imports and migrates AppBar, Breadcrumbs, DateTimeTextField, LocalDataGrid, LongTextField, PublishedField, and ImageUploadField from makeStyles/classes to sx/inline styles; ConfirmMutationButton switches to @tanstack/react-query typing; tests updated for router/theme import changes.
Application shell, auth, dashboard, profile
src/domain/application/layout/*, src/domain/authentication/*, src/domain/dashboard/*, src/domain/profile/*
Layout/toolbar/title components move to sx; auth pages drop makeStyles; profile dropdown switches to @tanstack/react-query with auth-gated fetch; related tests updated.
Event groups, events, combined listing
src/domain/eventGroups/*, src/domain/events/*, src/domain/eventsAndEventGroups/*
Detail/actions/publish/readiness components migrate styling and add null-safe record handling; new EventGroupEditToolbar; redirect props become functions; query hooks move to @tanstack/react-query; tests add ResourceContextProvider.
Message detail, form, list flows
src/domain/messages/*
Message toolbar/detail/form/list components move to sx/Box layout; send mutation hardened with optional chaining; hooks moved to @tanstack/react-query.
Occurrences, children, ticket tools, venues
src/domain/occurrences/*, src/domain/children/*, src/domain/ticketValidation/*, src/domain/ticketSystemPassword/*, src/domain/venues/*
Capacity override input reads record via useRecordContext; redirect props become functions; ticket validation/password dialogs drop withStyles; venue/child components remove unused React imports and safen record access.

Estimated code review effort: 4 (Complex) | ~75 minutes

Playwright E2E migration

Layer / File(s) Summary
Playwright tooling and project configuration
playwright.config.ts, tsconfig.e2e.json, .gitignore, .testcaferc.json, README.md
Adds Playwright config (Chromium project, reporters, base URL) and e2e TS config; removes TestCafe config; updates ignore rules and README docs for Playwright scripts and JWT helper layout.
OIDC and storage-based authentication mocking
e2e/utils/auth/*, e2e/utils/jwt/jwt.ts, e2e/utils/settings.ts
Adds installOidcMock, buildStorageSeed, and setupAuth to seed authenticated browser state without running the real login flow; fixes jsonwebtoken import and env lookup.
Page-object helpers
e2e/pages/*, e2e/utils/mocks/smsMessageMock.ts
Adds locator/action helpers for navigation, events, event groups, messages, unauthorized page, MUI select interaction, and a GraphQL SMS mock.
E2E spec suites
e2e/*.spec.ts
Adds Playwright specs for breadcrumb, events, event groups, messages, and unauthorized-access flows exercising create/edit/delete/publish behavior end-to-end.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Spec as Test spec
  participant SetupAuth as setupAuth
  participant OidcMock as installOidcMock
  participant SeedStorage as buildStorageSeed
  participant Page as Playwright Page

  Spec->>SetupAuth: setupAuth(page, user)
  SetupAuth->>OidcMock: installOidcMock(page, user)
  OidcMock->>Page: route OIDC authority requests
  SetupAuth->>SeedStorage: buildStorageSeed(user)
  SeedStorage-->>SetupAuth: localStorage/sessionStorage data
  SetupAuth->>Page: addInitScript(seed storage)
  Spec->>Page: page.goto(route)
Loading

Related labels: dependencies, tests, ci, documentation

Suggested reviewers: none identified from provided data

Poem:
A rabbit hopped from Node twenty to four-and-twenty,
Swapped its classes for sx, tidy and plenty,
TestCafe packed its bags, Playwright moved in,
With mocked OIDC tokens, tests now begin,
Hop, click, assert — the carrot's within!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.76% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the main change: the React 19 upgrade effort.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/KK-1543-react-19

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mikkojamG mikkojamG force-pushed the feat/KK-1543-react-19 branch from a386397 to 1c6fc5e Compare June 24, 2026 11:14
@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@mikkojamG

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (3)
src/domain/application/layout/kukkuuCreatePage/KukkuuCreateToolbar.tsx (1)

31-34: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Hardcoded sx after spread drops any caller-supplied sx.

Since KukkuuCreateToolbarProps extends React.ComponentProps<typeof Toolbar>, a caller can pass sx via delegatedProps. Placing the literal sx after {...delegatedProps} silently overrides it. Consider merging instead.

♻️ Merge caller sx
     <Toolbar
       {...delegatedProps}
-      sx={{ display: 'flex', justifyContent: 'space-between' }}
+      sx={[
+        { display: 'flex', justifyContent: 'space-between' },
+        ...(Array.isArray(delegatedProps.sx)
+          ? delegatedProps.sx
+          : [delegatedProps.sx]),
+      ]}
     >
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/domain/application/layout/kukkuuCreatePage/KukkuuCreateToolbar.tsx`
around lines 31 - 34, The Toolbar in KukkuuCreateToolbar currently hardcodes sx
after spreading delegatedProps, which overrides any caller-provided sx from
React.ComponentProps<typeof Toolbar>. Update the KukkuuCreateToolbar component
to merge the incoming delegatedProps.sx with the local flex/spacing styles
instead of replacing it, so both the caller’s styling and the toolbar layout
styles are preserved.
src/domain/application/layout/kukkuuListPage/KukkuuListPage.tsx (1)

27-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

as any cast plus trailing sx overrides typed/caller props.

Two concerns on this spread:

  • reactAdminProps as any disables type checking even though it's already typed Omit<ListProps, 'children'>; spread it directly to retain validation.
  • ListProps includes sx, so a caller-supplied sx in reactAdminProps is silently dropped by the literal sx placed after the spread. Merge if callers may style the list.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/domain/application/layout/kukkuuListPage/KukkuuListPage.tsx` around lines
27 - 32, The spread in KukkuuListPage is bypassing type safety and overriding
caller styling: remove the unnecessary reactAdminProps as any cast and pass
reactAdminProps directly so ListProps validation stays intact, then update the
List component props to merge any incoming sx from reactAdminProps with the
local toolbar margin override instead of replacing it. Use the KukkuuListPage
component and its ListProps/reactAdminProps wiring to locate the change.
Dockerfile (1)

2-2: 📐 Maintainability & Code Quality | 🔵 Trivial

Pin ubi9/nodejs-24 if reproducible builds matter. The image is published, but FROM registry.access.redhat.com/ubi9/nodejs-24 still floats to newer patches over time; use a digest or fully qualified tag to lock the build.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Dockerfile` at line 2, The base image in the Dockerfile is floating, so
update the FROM instruction using the existing appbase stage to reference a
pinned digest or fully qualified immutable tag instead of the moving
ubi9/nodejs-24 reference. This keeps the build reproducible while preserving the
same registry.access.redhat.com/ubi9/nodejs-24 image family.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pipelines/kukkuu-admin-review.yml`:
- Line 44: The pipeline resource is pinned to a temporary feature branch, which
will become unavailable once that branch is removed. Update the ref in the
kukkuu-admin-review pipeline to use a stable branch, tag, or commit SHA, and
keep the change aligned with the pipeline resource configuration around the ref
setting.

In `@src/domain/application/layout/kukkuuDetailPage/KukkuuDetailPage.tsx`:
- Around line 48-51: The KukkuuDetailPage component is unnecessarily using omit
and an any cast when passing reactAdminProps into KukkuuShow. Update
KukkuuDetailPage to spread reactAdminProps directly into KukkuuShow, and remove
the eslint disable plus the cast since reactAdminProps already excludes hasShow
and should remain type-checked.

In `@src/domain/messages/create/MessagesCreate.tsx`:
- Line 2: MessagesCreate.tsx imports useLocation from react-router-dom directly,
but the package is not declared as a direct dependency. Add react-router-dom to
package.json so MessagesCreate can resolve it explicitly rather than relying on
transitive dependencies, and verify the import remains valid in
MessagesCreate.tsx.

In `@src/domain/messages/form/MessageForm.tsx`:
- Around line 181-182: The SelectInput usage in MessageForm is passing a
redundant initialValue alongside defaultValue, but react-admin v5 only honors
defaultValue. Remove the initialValue prop from the SelectInput configuration in
MessageForm and keep the existing defaultValue based on record?.event?.id ||
'all' so the component is configured through the supported prop only.

In `@src/domain/occurrences/inputs.tsx`:
- Around line 30-47: Restore the event initialization logic in the occurrences
input component so the `event` state is populated for the capacity helper text.
Re-enable the `useEffect` in `OccurrenceCapacityOverrideInput` to first use
`props.record?.event` and otherwise fetch the event via
`dataProvider.getOne('events', ...)`, so `capacityPerOccurrence` can resolve
correctly instead of showing `'---'`.

In `@src/domain/profile/__tests__/ProfileProjectDropdown.test.jsx`:
- Around line 49-57: The `ProfileProjectDropdown` tests are using `useQuery`
with `mockReturnValueOnce`, which can break on re-render when the queued value
is exhausted. Update the affected tests to use
`vi.mocked(useQuery).mockReturnValue(...)` like the other cases in
`ProfileProjectDropdown.test.jsx`, so repeated calls from `getWrapper`,
`AdminContext`, or `waitFor` still receive a valid query object and the
component does not fail on destructuring.

In `@src/index.tsx`:
- Around line 35-54: The root error handlers in createRoot are intercepting
React render errors without forwarding them to Sentry. Update both onCaughtError
and onUncaughtError in index.tsx to call Sentry.captureException(error) while
keeping the existing console output, or replace these callbacks with
Sentry.reactErrorHandler if using `@sentry/react`. Use the createRoot setup and
the two callback names as the places to update.

---

Nitpick comments:
In `@Dockerfile`:
- Line 2: The base image in the Dockerfile is floating, so update the FROM
instruction using the existing appbase stage to reference a pinned digest or
fully qualified immutable tag instead of the moving ubi9/nodejs-24 reference.
This keeps the build reproducible while preserving the same
registry.access.redhat.com/ubi9/nodejs-24 image family.

In `@src/domain/application/layout/kukkuuCreatePage/KukkuuCreateToolbar.tsx`:
- Around line 31-34: The Toolbar in KukkuuCreateToolbar currently hardcodes sx
after spreading delegatedProps, which overrides any caller-provided sx from
React.ComponentProps<typeof Toolbar>. Update the KukkuuCreateToolbar component
to merge the incoming delegatedProps.sx with the local flex/spacing styles
instead of replacing it, so both the caller’s styling and the toolbar layout
styles are preserved.

In `@src/domain/application/layout/kukkuuListPage/KukkuuListPage.tsx`:
- Around line 27-32: The spread in KukkuuListPage is bypassing type safety and
overriding caller styling: remove the unnecessary reactAdminProps as any cast
and pass reactAdminProps directly so ListProps validation stays intact, then
update the List component props to merge any incoming sx from reactAdminProps
with the local toolbar margin override instead of replacing it. Use the
KukkuuListPage component and its ListProps/reactAdminProps wiring to locate the
change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3cf4e44a-ae77-48fa-8a2c-d70956a92050

📥 Commits

Reviewing files that changed from the base of the PR and between 04369f9 and d339d22.

⛔ Files ignored due to path filters (2)
  • src/common/components/viewTitle/__tests__/__snapshots__/ViewTitle.test.jsx.snap is excluded by !**/*.snap
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (124)
  • .eslintrc.cjs
  • .github/workflows/ci.yml
  • .nvmrc
  • CHANGELOG.md
  • Dockerfile
  • README.md
  • docs/setup-keycloak.md
  • docs/setup-local-kukkuu-api.md
  • docs/setup-tunnistamo.md
  • package.json
  • pipelines/kukkuu-admin-review.yml
  • src/common/components/appBar/KukkuuAppBar.tsx
  • src/common/components/appTitle/AppTitle.tsx
  • src/common/components/appTitle/__tests__/AppTitle.tests.jsx
  • src/common/components/aside/Aside.tsx
  • src/common/components/aside/__tests__/Aside.test.jsx
  • src/common/components/breadcrumbs/Breadcrumbs.tsx
  • src/common/components/breadcrumbs/__tests__/Breadcrumbs.test.jsx
  • src/common/components/confirmMutationButton/ConfirmMutationButton.tsx
  • src/common/components/confirmMutationButton/__tests__/ConfirmMutationButton.test.jsx
  • src/common/components/dateTimeTextField/DateTimeTextField.tsx
  • src/common/components/dateTimeTextField/__tests__/DateTimeTextField.test.jsx
  • src/common/components/imageField/ImageUploadField.tsx
  • src/common/components/imageField/__tests__/ImageUploadField.test.jsx
  • src/common/components/isTestEnvironmentLabel/IsTestEnvironmentLabel.tsx
  • src/common/components/localDataGrid/LocalDataGrid.tsx
  • src/common/components/localDataGrid/__tests__/LocalDataGrid.test.jsx
  • src/common/components/longTextField/LongTextField.tsx
  • src/common/components/publishedField/PublishedField.tsx
  • src/common/components/publishedField/__tests__/PublishedField.test.jsx
  • src/common/components/sanitizedGrid/SanitizedGrid.tsx
  • src/common/components/viewTitle/ViewTitle.tsx
  • src/common/components/viewTitle/__tests__/ViewTitle.test.jsx
  • src/common/materialUI/themeConfig.ts
  • src/domain/application/App.tsx
  • src/domain/application/__tests__/App.test.tsx
  • src/domain/application/layout/kukkuuAppLayout/KukkuuAppLayout.tsx
  • src/domain/application/layout/kukkuuCardPageLayout/KukkuuCardPageLayout.tsx
  • src/domain/application/layout/kukkuuCreatePage/KukkuuCreatePage.tsx
  • src/domain/application/layout/kukkuuCreatePage/KukkuuCreateToolbar.tsx
  • src/domain/application/layout/kukkuuDetailPage/KukkuuDetailPage.tsx
  • src/domain/application/layout/kukkuuDetailPage/KukkuuShow.tsx
  • src/domain/application/layout/kukkuuEditPage/KukkuuEdit.tsx
  • src/domain/application/layout/kukkuuListPage/KukkuuList.tsx
  • src/domain/application/layout/kukkuuListPage/KukkuuListPage.tsx
  • src/domain/application/layout/kukkuuPageLayout/KukkuuPageLayout.tsx
  • src/domain/application/layout/kukkuuPageTitle/KukkuuPageTitle.tsx
  • src/domain/authentication/InfoPageTemplate.tsx
  • src/domain/authentication/LoginPage.tsx
  • src/domain/authentication/UnauthorizedPage.tsx
  • src/domain/authentication/__tests__/AuthErrorPage.test.jsx
  • src/domain/authentication/__tests__/LoginPage.test.jsx
  • src/domain/authentication/__tests__/UnauthorizedPage.test.jsx
  • src/domain/authentication/__tests__/idleProvider.test.jsx
  • src/domain/children/ChildList.tsx
  • src/domain/children/ChildShow.tsx
  • src/domain/dashboard/Dashboard.tsx
  • src/domain/dashboard/__tests__/Dashboard.test.jsx
  • src/domain/eventGroups/create/EventGroupsCreate.tsx
  • src/domain/eventGroups/detail/EventGroupsDetail.tsx
  • src/domain/eventGroups/detail/EventGroupsDetailActions.tsx
  • src/domain/eventGroups/detail/EventReadyField.tsx
  • src/domain/eventGroups/detail/PublishEventGroupButton.tsx
  • src/domain/eventGroups/detail/__tests__/EventGroupsDetailActions.test.jsx
  • src/domain/eventGroups/detail/__tests__/EventReadyField.test.jsx
  • src/domain/eventGroups/edit/EventGroupsEdit.tsx
  • src/domain/eventGroups/form/EventGroupForm.tsx
  • src/domain/eventGroups/hooks/usePublishEventGroupMutation.tsx
  • src/domain/events/create/EventCreate.tsx
  • src/domain/events/detail/EventPublishButton.tsx
  • src/domain/events/detail/EventReadyToggle.tsx
  • src/domain/events/detail/EventShow.tsx
  • src/domain/events/detail/EventShowActions.tsx
  • src/domain/events/detail/__tests__/EventReadyToggle.test.jsx
  • src/domain/events/detail/__tests__/EventShowActions.test.jsx
  • src/domain/events/edit/EventEdit.tsx
  • src/domain/events/edit/EventEditToolbar.tsx
  • src/domain/events/eventForm/EventForm.tsx
  • src/domain/events/eventSelect/EventSelect.tsx
  • src/domain/events/fields.tsx
  • src/domain/events/hooks/usePublishEventMutation.tsx
  • src/domain/events/hooks/useSetReadyMutation.tsx
  • src/domain/events/ticketSystemInput/TicketSystemInput.tsx
  • src/domain/eventsAndEventGroups/list/Empty.tsx
  • src/domain/eventsAndEventGroups/list/EventsAndEventGroupsList.tsx
  • src/domain/eventsAndEventGroups/list/ManagementButtonGroup.tsx
  • src/domain/eventsAndEventGroups/list/__tests__/ManagementButtonGroup.test.jsx
  • src/domain/messages/create/MessagesCreate.tsx
  • src/domain/messages/detail/MessageDetailsToolbar.tsx
  • src/domain/messages/detail/MessageSendButton.tsx
  • src/domain/messages/detail/MessagesDetail.tsx
  • src/domain/messages/edit/MessagesEdit.tsx
  • src/domain/messages/fields/MessageRecipientCountField.tsx
  • src/domain/messages/form/MessageForm.tsx
  • src/domain/messages/form/__tests__/MessageForm.test.jsx
  • src/domain/messages/hooks/useMessageSendMutation.tsx
  • src/domain/messages/list/Empty.tsx
  • src/domain/messages/list/MessageListToolbar.tsx
  • src/domain/messages/list/MessagesManagementButtonGroup.tsx
  • src/domain/occurrences/OccurrenceArraySelect.tsx
  • src/domain/occurrences/OccurrenceCreate.tsx
  • src/domain/occurrences/OccurrenceEdit.tsx
  • src/domain/occurrences/OccurrenceShow.tsx
  • src/domain/occurrences/__tests__/OccurrenceArraySelect.test.jsx
  • src/domain/occurrences/__tests__/inputs.test.jsx
  • src/domain/occurrences/fields/OccurrenceAttendedField.tsx
  • src/domain/occurrences/fields/OccurrenceTimeRangeField.tsx
  • src/domain/occurrences/fields/__tests__/OccurrenceAttendedField.test.jsx
  • src/domain/occurrences/fields/__tests__/OccurrenceTimeRangeField.test.jsx
  • src/domain/occurrences/inputs.tsx
  • src/domain/profile/ProfileProjectDropdown.tsx
  • src/domain/profile/__tests__/ProfileProjectDropdown.test.jsx
  • src/domain/ticketSystemPassword/ImportTicketSystemPasswordsFormDialog.tsx
  • src/domain/ticketValidation/OccurrenceCard.tsx
  • src/domain/ticketValidation/TicketValidationPage.tsx
  • src/domain/ticketValidation/__tests__/TicketValidationPage.test.jsx
  • src/domain/venues/VenueCreate.tsx
  • src/domain/venues/VenueEdit.tsx
  • src/domain/venues/VenueEditToolbar.tsx
  • src/domain/venues/VenueForm.tsx
  • src/domain/venues/VenueList.tsx
  • src/domain/venues/VenueShow.tsx
  • src/index.tsx
  • vite.config.ts
💤 Files with no reviewable changes (51)
  • src/common/components/appTitle/AppTitle.tsx
  • src/domain/eventsAndEventGroups/list/tests/ManagementButtonGroup.test.jsx
  • src/domain/children/ChildList.tsx
  • src/domain/events/detail/tests/EventReadyToggle.test.jsx
  • src/domain/events/ticketSystemInput/TicketSystemInput.tsx
  • src/domain/eventsAndEventGroups/list/Empty.tsx
  • src/common/components/publishedField/tests/PublishedField.test.jsx
  • src/domain/occurrences/OccurrenceCreate.tsx
  • src/common/components/localDataGrid/tests/LocalDataGrid.test.jsx
  • src/domain/events/fields.tsx
  • src/domain/eventGroups/create/EventGroupsCreate.tsx
  • src/domain/eventGroups/form/EventGroupForm.tsx
  • src/common/components/dateTimeTextField/tests/DateTimeTextField.test.jsx
  • src/domain/events/edit/EventEdit.tsx
  • src/common/components/viewTitle/tests/ViewTitle.test.jsx
  • src/domain/venues/VenueList.tsx
  • src/common/components/publishedField/PublishedField.tsx
  • src/domain/venues/VenueForm.tsx
  • src/domain/messages/list/Empty.tsx
  • src/domain/ticketValidation/tests/TicketValidationPage.test.jsx
  • src/domain/venues/VenueEdit.tsx
  • src/domain/application/layout/kukkuuCardPageLayout/KukkuuCardPageLayout.tsx
  • src/common/components/aside/Aside.tsx
  • src/domain/venues/VenueShow.tsx
  • src/domain/application/tests/App.test.tsx
  • src/domain/application/layout/kukkuuAppLayout/KukkuuAppLayout.tsx
  • src/domain/authentication/tests/AuthErrorPage.test.jsx
  • src/domain/authentication/tests/idleProvider.test.jsx
  • src/common/components/isTestEnvironmentLabel/IsTestEnvironmentLabel.tsx
  • src/domain/events/eventSelect/EventSelect.tsx
  • src/domain/occurrences/fields/OccurrenceTimeRangeField.tsx
  • src/common/components/aside/tests/Aside.test.jsx
  • src/domain/messages/edit/MessagesEdit.tsx
  • src/domain/occurrences/fields/tests/OccurrenceTimeRangeField.test.jsx
  • src/domain/messages/list/MessagesManagementButtonGroup.tsx
  • src/common/components/sanitizedGrid/SanitizedGrid.tsx
  • src/domain/authentication/UnauthorizedPage.tsx
  • src/domain/venues/VenueCreate.tsx
  • src/domain/application/layout/kukkuuCreatePage/KukkuuCreatePage.tsx
  • src/domain/children/ChildShow.tsx
  • src/common/components/viewTitle/ViewTitle.tsx
  • src/domain/eventGroups/detail/tests/EventReadyField.test.jsx
  • src/domain/events/eventForm/EventForm.tsx
  • src/common/components/appTitle/tests/AppTitle.tests.jsx
  • src/domain/eventsAndEventGroups/list/ManagementButtonGroup.tsx
  • src/domain/eventGroups/edit/EventGroupsEdit.tsx
  • src/domain/messages/form/tests/MessageForm.test.jsx
  • src/domain/events/create/EventCreate.tsx
  • src/common/components/imageField/tests/ImageUploadField.test.jsx
  • src/domain/authentication/tests/LoginPage.test.jsx
  • vite.config.ts

Comment thread pipelines/kukkuu-admin-review.yml
Comment thread src/domain/application/layout/kukkuuDetailPage/KukkuuDetailPage.tsx Outdated
Comment thread src/domain/messages/create/MessagesCreate.tsx
Comment thread src/domain/messages/form/MessageForm.tsx Outdated
Comment thread src/domain/occurrences/inputs.tsx Outdated
Comment thread src/domain/profile/__tests__/ProfileProjectDropdown.test.jsx Outdated
Comment thread src/index.tsx
@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

1 similar comment
@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is success for https://kukkuu-admin-pr404.dev.hel.ninja 😆🎉🎉🎉

mikkojamG added 6 commits July 1, 2026 14:09
ci: e2e jwt fix Refs: KK-1543

ci: vitest exclude e2e Refs: KK-1543

ci: eventGroups selector fix Refs: KK-1543

ci: convert eventGroupsFeature tests Refs: KK-1543

ci: eventFeature tests Refs: KK-1543

ci: breadcrumFeature tests Refs: KK-1543

ci: messageFeature tests Refs: KK-1543

ci: unauthorized page tests Refs: KK-1543

ci: remove testcafe Refs: KK-1543

ci: playwright settings Refs: KK-1543
@mikkojamG mikkojamG force-pushed the feat/KK-1543-react-19 branch from b65e1dd to 1f6f0af Compare July 1, 2026 11:10
@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is success for https://kukkuu-admin-pr404.dev.hel.ninja 😆🎉🎉🎉

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is success for https://kukkuu-admin-pr404.dev.hel.ninja 😆🎉🎉🎉

@mikkojamG mikkojamG changed the title [WIP] KK-1543 React 19 KK-1543 React 19 Jul 2, 2026
@mikkojamG mikkojamG marked this pull request as ready for review July 2, 2026 06:36
@mikkojamG mikkojamG requested a review from a team as a code owner July 2, 2026 06:36
Comment thread src/domain/occurrences/OccurrenceEdit.tsx
@sonarqubecloud

sonarqubecloud Bot commented Jul 2, 2026

Copy link
Copy Markdown

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

1 similar comment
@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is failed for https://kukkuu-admin-pr404.dev.hel.ninja 😿💢💥💥

@azure-pipelines

Copy link
Copy Markdown

KUKKUU-ADMIN branch is deployed to platta: https://kukkuu-admin-pr404.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

TestCafe result is success for https://kukkuu-admin-pr404.dev.hel.ninja 😆🎉🎉🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants