450 Commits

Author SHA1 Message Date
ulferts 6ab4d02059 attempt to fix flickering activity spec
rspec ./spec/features/activities/work_package/activities_spec.rb:678

The attempt is to have the frontend wait for the turbo stream response rather than a fixed timeout.
The removed wait_for seems to be non-functional.
2026-06-04 16:43:50 +02:00
OpenProject Actions CI 3e02e2863f Merge branch 'release/17.5' into dev 2026-05-28 12:18:34 +00:00
Henriette Darge c74076a173 Merge pull request #23373 from opf/bug/64359-work-package-configuration-dialog-s-highlighting-tab-has-no-space-between-radio-buttons-and-labels
[64359] Work package configuration dialog's highlighting tab has no space between radio buttons and labels
2026-05-28 14:13:29 +02:00
OpenProject Actions CI 49b802ca02 Merge branch 'release/17.5' into dev 2026-05-28 08:51:09 +00:00
Oliver Günther b0905e35b7 Merge pull request #23392 from opf/fix/ldap-seeder-aliases
Fix LDAP seeder not using env aliases and underscores
2026-05-28 08:56:14 +02:00
Oliver Günther a058f227f3 Add retry block on button save click 2026-05-28 08:32:49 +02:00
Oliver Günther a1505dc0f5 Merge remote-tracking branch 'origin/release/17.5' into dev 2026-05-27 09:58:01 +02:00
Oliver Günther 46a4dbd1e6 Fix highlighting spec flakyness
The failing spec in this run
https://github.com/opf/openproject/actions/runs/26492229079/job/78012301717?pr=23371
was caused by the dialog not being open in the right tab.

Adding an expectation to it hopefully fixes it
2026-05-27 08:53:53 +02:00
Alexander Brandon Coles c776be17cc Make WP query history filter checks idempotent
Turbo can restore the query filter pane as either open or closed during
browser history traversal. Use an idempotent helper before asserting
restored filters so the spec checks the query state instead of depending
on the current pane visibility.
2026-05-26 23:17:42 +02:00
Behrokh Satarnejad d924c255cf [69524] Primerize Types form configuration page (#22854)
* Create the section component

* Create the form configuration component

* Create a controller

* change form template

* Use primer dialog for reset to defaults button

* show WP configuration modal while creating a related WPs table

* Fix the drag and drop functionality without save button

* Fix renaming functionality

* Use generic drag and drop in form configuration and move all client side action handling to server side

* Fix embedded query form configuration regressions

* Add data test selectors to all elements that we used for test

* update the current tests with the new implementations and design

* Add new tests for new controller of sections and rows

* WP quesry row should only have edit quesry action

* Update transformer spec regarding the new changes

* Fix the failing test in reset form configuration and some tests for actions

* Fix rubocop errors

* Fix eslint errors

* Add spec for removing a section

* Use condensed border boxes

* fix failing specs

* fix failing specs

* Switch the buttons in form configuration component

* Create the section at the top of the list

* Instead of using UUID, use the name of the group as the key

* Add missing check for EE for section actions

* Remove angular components

* Use action list instead of a border box for left side panel

* Reduce the margin between the right side panel and sub header, add some space to the query table left side, span to the whole available space

* Show validation errors while updating and creating a section

* Use a danger dialog for reset to default

* Add a confirmation for removing the section

* Align items in the row

* Use test_selector instead of data-test-selector

* Create move_action in rb file

* Create move_action in rb file

* Simplify section component

* Simplify form configuration component

* Remove dialog for rename and delete section on missing EE

* Create a component for inactive attribute list

* Create a separate component for reset dialog

* Remove EE feedback dialog

* Remove form partial which is not needed anymore

* Remove unused js strings

* Update using update_via_turbo

* Remove form configuration rows controller

* Create a blanksalte component

* Fix failing specs

* Fix failing specs

* Fix failing specs

* Remove unused translation strings

* Align form configuration section routes with actual create flow

* Change section to group

* Change section to group in services and controllers

* Change section to group in en.yml

* Fix rubocop errors

* Move the query group persistence assertion from the JS feature spec
to the synchronous form configuration groups controller spec.

* Reuse query service result in embedded query build

* Keep inactive attribute filter after turbo list refresh

* Extract form configuration group edit state into form model

* Fix the failing test

* Potential fix for pull request finding 'CodeQL / Potentially uninitialized local variable'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Rename inactive attribute component inputs

* Refine reset dialog wording for form configuration

* Use direct Turbo action for adding attribute groups

* Reuse generic filter-list controller for inactive attributes

* Remove focus impelementation in ts

* Group form configuration Stimulus controllers under one namespace

* Use turbo request service in form configuration controller

* Clarify legacy group key normalization in form config contract

* Replace inactive attribute list wrapper via turbo stream

* Extract duplicate untitled group key generation into Type::FormGroup.next_untitled_key

* Auto-generate untitled group name on create instead of returning an error

* Avoid mixed return types in form config group create service

* Extract shared form configuration group service behavior into concern

* Fix spacing for the last group and italic font for the placeholder rows

* Replace Angular no-results component with Primer Banner on form configuration page

* Hide dropped element immediately to prevent flickering before Turbo Stream response

* Reload type before rendering create error to prevent duplicate groups

* Await service initialization before use to prevent potential race condition

* Replace sleep calls with deterministic waits in form configuration spec

* Handle malformed JSON and invalid query errors gracefully in form configuration update

* Make query group label a clickable button and empty group hint italic

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-13 12:56:18 +02:00
ulferts eaf26e4918 attempt to fix flickering activities spec
rspec ./spec/features/activities/work_package/activities_spec.rb:678
2026-05-08 11:14:03 +02:00
Tomas Hykel db6f4734ad fix: Remove flakiness from a WP activities spec 2026-04-27 21:40:04 +02:00
Alexander Brandon Coles 4e99a964d6 Merge branch 'dev' into code-maintenance/73798-remove-scrum_projects-feature-flag 2026-04-20 08:40:52 +01:00
Oliver Günther 2898a1d0ff Delete dialog primer 2026-04-19 21:10:41 +02:00
Alexander Brandon Coles 712fdbceba Harden feature test support helpers
Stabilize shared ng-select interactions for Cuprite and reuse open
dropdowns safely in modal-based flows. Also keep filter clearing
safe when no value is selected and refresh the My Page drop target
after drag-induced DOM updates.
2026-04-17 10:15:39 +01:00
Alexander Brandon Coles 8d72592230 Improve sprint filter support in WP filter helper
Add `clear_filter_value` to clear an ng-select filter's current
selection without removing the filter row, allowing a new value
to be set in place.

Refactor `insert_autocomplete_item` to accept a filter `id` string
rather than a pre-captured element, so the ng-select node is
re-queried on each call. This avoids stale element references
after `clear_filter_value` causes the DOM to re-render.
2026-04-17 09:39:52 +01:00
Ivan Kuchin 8deb557630 wait after selecting work package type 2026-04-07 20:23:43 +02:00
Ivan Kuchin 6f512af3bb wait more time for relations tab to load 2026-04-07 20:23:39 +02:00
Christophe Bliard 447e07b38d Fix flaky spec in progress_modal_spec
failing spec: spec/features/work_packages/progress_modal_spec.rb:195
failing run: https://github.com/opf/openproject/actions/runs/21204407008/job/60997306384

In the spec, another page is visited during the test, meaning the
internal ids of the capybara elements may not be the same as the ones
before the page is reloaded. This is a problem because the
`progress_popover` caches the container element, and it's not valid
anymore (it's stale).

One fix could be to create a new `progress_popover` instance after the other page is visited.

I found it better to be able to pass a lambda for the container element
to the `progress_popover` constructor, so that it always gets it afresh
and will never be stale.
2026-01-22 15:30:43 +01:00
Jan Sandbrink 021c7bd6ed Fix flickering spec
Selection by work package ID was unreliable, because the text
that's selected by is from anywhere in the selected element.

The element shows different information:
* WP subject
* WP ID
* Project name
* status name

The intention of the original code was to uniquely select work packages
by their ID, however it was also perfectly possible to have a project
named "Project 123" as the parent of all work packages. So if the WP
id happens to be 123 as well, the selection would be effectively random
across the work packages.

(Credit for discovering the root cause of this flicker goes to Christophe Bliard
if anyone is asking ;-) )

Fixes flickers of spec/features/work_packages/details/relations/hierarchy_spec.rb,

Reproduction instructions as provided by Christophe:

    rm -f db/structure.sql; \
    bin/rails db:drop db:create db:migrate RAILS_ENV=test > /dev/null ; \
    CI=true TZ=UTC OPENPROJECT_LOG__LEVEL=info CAPYBARA_PUMA_THREADS=0:4 DISABLE_SPRING=1 \
    bin/rspec --seed 34872 -fd \
    'spec/features/work_packages/details/relations/hierarchy_spec.rb[1:1:1:1]' \
    spec/features/work_packages/work_package_index_spec.rb:46
2025-12-04 14:57:55 +01:00
Henriette Darge 655756631f [67007] Render the WP full view from rails (#20109)
* Create a FullView::CopyComponent for WorkPackages which is routed from rails

* Remove angular splitCopy route and component as it was overwritten by the angular fullCopy route for quite some time already and nobody complained. So we decided to remove the splitCopy completely

* Create FullView::CreateComponent for WorkPackages which is now routed from rails instead of Angular

* First draft of implementing the FullView route for WorkPackages from rails

* Pass correct tab from the URL to the FullView::ShowComponent

* Do a hard reload to "create" route when we are not routed from Angular

* Adapt routing spec to new WorkPackage routes and to some fine-tuning with the WP routes

* Show correct tab in WP Full view and change URL when clicking a tab entry

* Adapt to new rails based routing

* Fix some routes and redirects

* Make sure, the split screen stil renders correctly

* Remove back button from WP full view

* Fix routing issues

* Start fixing specs

* Attempt to override the browser history to be able to use browser back

* Use helper function to build new WP url string

* Adapt spec that now partially renders backend toasts

* Remove ability to move to fullscreen

Theoretically, we can re-add it by posting to some form endpoint, but
not worth it for the first iteration

* Disable cache-control on angular routed pages, so back links work

* Fix double click to fullscreen

* Adapt navigation and title setting

* Let WP breadcrumb to a hard reload instead of Angular transition

* Redirect when the WP route is incomplete (this is the attempt to re-implement an angular functionality)

* Navigate with Turbo when double clicking a card

* Adapt onboarding tour to new hard reload when switching to WP full view

* Fix some specs

* Fix more tests

* Hide Overview tab on FullView

* Correct check for incomplete routes

* Do a hard refresh when coming from slpit screen to full view

* Fix notification navigation

* Adapt attachment spec as the tab switch cannot be done anymore while dragging

* Fix more tests

* Please rubocop and fix more tests

* Attempt to fix navigation_spec

* Add debian_base for pullpreview

---------

Co-authored-by: Oliver Günther <mail@oliverguenther.de>
2025-11-03 09:02:16 +01:00
Kabiru Mwenja 0731145265 Defer loading of emoji (re)actions menu for improved performance (#20580)
https://community.openproject.org/wp/68046
2025-10-10 15:42:04 +03:00
Kabiru Mwenja 22b139c8f4 Merge branch 'dev' into merge-release/16.5-20251010123254 2025-10-10 15:36:38 +03:00
Kabiru Mwenja fe5ced5130 Defer loading of journal items actions menu for improved performance (#20566)
https://community.openproject.org/wp/68046
2025-10-10 10:42:19 +03:00
Kabiru Mwenja 2cffdfc3b2 Fix timing issue in Activities#type_comment for lazy-loaded pages
Add `wait_for_network_idle` at the start of `type_comment`
to ensure all pending Turbo Stream rendering completes before
attempting to interact with the form.

This is needed as the lazy pages now intercept turbo stream rendering.
2025-10-08 15:42:45 +03:00
Oliver Günther 14192a74c3 Replace confirm with turbo-confirm, method with turbo-method 2025-09-26 09:15:04 +02:00
Behrokh Satarnejad bce690124f [65417] WP items in bulk delete modal are misaligned (#20340)
* align items in destroy modal

* fix eslint error

* fix failing test
2025-09-18 08:02:27 +02:00
Oliver Günther 03e187907d Use retry_block on activities spec 2025-09-01 10:31:24 +02:00
ulferts 08135aa9c8 attempt to fix flickering spec 2025-07-30 11:47:22 +02:00
Kabiru Mwenja d15e06f05e Restructure composition via Outlets + Mixin 2025-07-22 18:08:04 +03:00
Kabiru Mwenja 33d3953701 bug/63545 When editing a comment in the activity tab and polling occurs, the form can be force closed (#19507)
The activities tab polling mechanism updates newly updated journals, based on the last update timestamp. In case an attachment is added, or the journal is updated in any other places- the UI item would be updated\ on the next poll, overriding the edit form.

This commit adds an exclusion for any forms that are in "edit" state- it does not yet take into account conflict resolution.

https://community.openproject.org/wp/63545
https://community.openproject.org/wp/65680
2025-07-15 14:46:29 +03:00
Alexander Brandon Coles 987b2dd504 Use combo_box_list_box in relations feature specs 2025-07-14 17:38:22 +01:00
Henriette Darge 99c321fa7f Hide submenu when the user has no permission to manage relations 2025-07-14 08:49:51 +02:00
Henriette Darge ca99688203 Use second-level navigation for the Relations create menu 2025-06-13 15:52:51 +02:00
Henriette Darge b2ca041022 Merge branch 'dev' into merge-release/16.0-20250520034636 2025-05-20 10:43:07 +02:00
Kabiru Mwenja 86eb9eacef Use visually_hide_label option instead
Stay consistent with primer as pointed out in the following review!
https://github.com/opf/openproject/pull/18903#pullrequestreview-2833035563
2025-05-13 14:40:06 +03:00
Kabiru Mwenja 8391af105e Remove duplicate method definition 2025-05-07 14:26:05 +03:00
Jan Sandbrink 03c8db36bf Merge pull request #18806 from opf/frozen-specs
Freeze string literals in specs
2025-05-07 07:54:10 +02:00
Christophe Bliard fa6c61a0da Fix flaky spec
spec is ./spec/features/activities/work_package/activities_spec.rb:598
failing in https://github.com/opf/openproject/actions/runs/14839826610/job/41659840476

The menu button to filter the journals is clicked but the menu content
is sometimes not visible for some reason... Add a `retry_block` around
it to retry it when it happens and fix the flakiness.
2025-05-06 08:41:16 +02:00
Jan Sandbrink 0b87e7543f Freeze string literals in specs
Rolling out frozen string literals further by freezing all
string literals in core specs.
2025-05-05 09:29:55 +02:00
Oliver Günther 98afc32952 Merge pull request #18684 from opf/feature/38030-add-parent-item-to-relations
[38030] Add parent relation to relations tab
2025-04-28 13:28:57 +02:00
Christophe Bliard 34a8aeb63b Fix spec
'./spec/features/activities/work_package/internal_comments_spec.rb:300'
was failing due to the renaming of the "Restrict visibility" checkbox to
"Internal comment" happening in a branch, and a test helper being added
for the old string in another branch.
2025-04-25 08:41:55 +02:00
Christophe Bliard 43ca98ceb4 [38030] Add "Parent" item to the relations tab "Add relation" menu
Reuse the same controller that was used for adding children,
`WorkPackageChildrenRelationsController`, and renamed it to
`WorkPackageHierarchyRelationsController`. The difference is done with a
`relation_type` parameter which can be `"parent"` or `"child"`.

Reuse the same dialog that was used for adding children,
`AddWorkPackageChildDialogComponent`, and renamed it to
`AddWorkPackageHierarchyDialogComponent`.
2025-04-24 18:05:47 +02:00
Kabiru Mwenja 98b65c73f0 Implementation/63625 Rename restricted visibility checkbox to internal comment (#18726)
https://community.openproject.org/work_packages/62785
2025-04-24 18:52:00 +03:00
Kabiru Mwenja 701b252119 feature/62785 Show warning if a user tries to uncheck the 'Internal comment' checkbox when there's already text in the comment box (#18695)
https://community.openproject.org/work_packages/62785
2025-04-24 18:46:16 +03:00
Bruno Pagno 97ccf0bfc5 adjust internal comments internal representation 2025-04-24 13:12:32 +02:00
Christophe Bliard e416595d0e [38030] Allow removing parent from relations tab parent item
https://community.openproject.org/wp/38030

When clicking the three dots menu of the parent relation item and
selecting "Delete relation".
2025-04-22 16:30:23 +02:00
ulferts 6ab12c1491 Merge remote-tracking branch 'origin/dev' into merge-release/15.5-20250414123053 2025-04-14 14:34:34 +02:00
Christophe Bliard 2f1aeb757b Fix flickering spec
Failing spec is 'spec/features/work_packages/scheduling/automatic_scheduling_logic_spec.rb:340'
CI job run is https://github.com/opf/openproject/actions/runs/14442271942/job/40494880063?pr=18613

The spec was failing because the action menu was not visible (maybe it
was hidden by a relations tab refresh).

The fix is to retry the action until it works.
2025-04-14 12:11:08 +02:00
Dombi Attila 41bae89e47 Fix flickering split screen spec by waiting for the relation tab to be loaded before checking for missing elements. 2025-04-08 23:39:23 +03:00