Refactors the custom `:list`/`:list_item` selectors onto CAS's
`add_role_selector` and drops the now-native `Capybara::Node::Simple#role`
hack. `:list_item` resolves the listitem role, so specs matching
non-listitem `<li>` are updated (`have_row` for the custom field table,
presentation dividers via CSS).
CAS 0.16 also resolves role selectors by computed role and accessible
name, which our CSS-styled tables and Primer menus do not expose through
plain markup. Affected feature specs switch to robust locators:
Capybara's `:table_row`, the FullCalendar `data-date`, and the action
menu's real accessible name ("Edit status").
The `:columnheader` `colindex` filter lost its off-by-one offset and now
uses the true 1-based `th` position. Also fixes Webhooks `RowComponent`
spec capitalization.
* eke the last item section in breadcrumbs component optional
* add breadcrumbs to the duplicate page
* add breadcrumbs to the create new work package page
* add breadcrumbs to move and copy pages
* when there is one WP in the list of moving or copy, add it to the breadcrumbs
* add page header to bulk editor page
* fix failing tests
* show the list of moved Wps even when there is one item
* add instance name to the breadcrumb in any way
* add breadcrumbs to search page
* show global menu when there is no project selected, in search page
* remove home path from rails breadcrumbs
* ensure reliable click on autocomplete by using JS click to avoid overlapping elements
* fix failing test on selecting a value from select box in team planner and search box
spec: `./modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb:176`
failing job: https://github.com/opf/openproject/actions/runs/15991857052/job/45107671723
Moving by 800 pixels was too imprecise: it was moved to Wednesday
instead of being moved to Tuesday as intended. It was ok when the
element was not fully loaded, but not when it was. Probably its
dimensions changed a bit and that was enough to fall on the wrong day...
The fix is to drag from the card to the target date column header, with
an y offset of the header's height. This way it's dragged exactly on the
day area below the day header. It works even if we change the default
dimensions of everything.
* create a breadcrumbs angular component
* change the styles of breadcrumbs component so it look like other breadcrumbs
* add breadcrumbs component to the partition query space component
* add breadcrumbs to boards
* add breadcrumbs to team planners and calendar
* add breadcrumbs to ifc viewer and wps and gantt pages
* add feature specs for modules that have breadcrumbs component
* add mobile view for breadcrumbs component
* fix mobile styles in bcf module
* remove margin-bottom from breadcrumb mobile since it has some space from toolbar title
* add a section for active breadcrumb
* move breadcrumb items for gantt and wp to a separate method
* fix urls for work packages and gantt pages when there is no project selected
* use only op- classes
* use existing translations and use capybara accessible selectors
* change gantt translation key
* fix failing test in boards
* add section header of side bar menu to the breadcrumb last item
* change css BEM styles and change the projectWorkPackages path to workPackages path
* undo css changes in bcf view
* fix failing tests
* change target of anchors
* Use real space instead of a margin so that screen readers can read it out correctly
---------
Co-authored-by: Henriette Darge <h.darge@openproject.com>
When drag&dropping a work package in the team planner from the left
panel, the dates should be set, especially if they were not set
initially. This differs from the behavior of the calendar module where
drag&dropping from one date to another should keep any unset dates.
Also, only start date and duration are set to be able to deal with
non-working days.
That use case was hopefully caught by a failing feature spec:
modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb:135.
I added another spec to ensure that non-working days are handled correctly.
The `schedule_manually` column is also non-nullable now.
This includes the following changes:
- Automatically scheduled parent dates are and `ignore_non_working_days`
attributes are now always derived from children's values, even if the
children are scheduled manually.
It's more natural. Without that, adding a child to a work package
would not change the parent's dates.
As a consequence, the parent can start on a non-working day if one of
its children is manually scheduled, ignores non-working days, and
starts on a non-working day. That's why the parent's
`ignore_non_working_days` attribute is now also derived from all its
children regardless of the scheduling mode.
If the parent is manually scheduled, its dates and it's ability to
ignore non-working days will still be defined independently from its
children.
- Fix tests broken by scheduling mode being manual by default.
The tests had to be adapted to explicitly set scheduling mode to
automatic for followers and parents, and sometimes even follower's
children. Without it, work packages would not be rescheduled
automatically.
- Replace schedule helpers with table helpers.
Schedule helpers helped well, but table helpers are more flexible and
support more column types.
- Add "days counting" and "scheduling mode" columns to table helpers.
"days counting" to set `ignore_non_working_days` attribute.
- "all days" value maps to `ignore_non_working_days: true`.
- "working days" value maps to `ignore_non_working_days: false`.
"scheduling mode" to set `schedule_manually` attribute.
- "manual" value maps to `schedule_manually: true`.
- "automatic" value maps to `schedule_manually: false`.
modules/team_planner/spec/features/query_handling_spec.rb sometimes
misses the dropdown, because it does not wait long enough after adding a
filter, and once the filter is applied, the page state is reset and the
dropdown is closed, which leads to the error.
* [#46490] Number of displayed assignees in team planner wrongly restricted by "objects per page"
https://community.openproject.org/work_packages/46490
* Refactor team_planner.add_assignee method to include retry_block
* Separate helper method to check for searching and adding
---------
Co-authored-by: Oliver Günther <mail@oliverguenther.de>