Content
View differences
Updated by Parimal Satyal over 1 year ago
### Note
This work package describes how values for the start date, the finish date and duration should change in response to changes to any of one of them. We created a [similar document with scenarios previously](https://community.openproject.org/wp/43539) when we added duration to the date picker, which made it easier:
* For devs to write test cases
* Document behaviour
* Use it for testing
Now with the upcoming [introduction of automatic scheduling](https://community.openproject.org/wp/59539), we need to reevaluate if the following scenarios are still relevant, if the behaviour is consistent and what news scenarios need to be added.
**THIS DOCUMENT IS A WORK IN PROGRESS, PLEASE DO NOT USE IT UNTIL THE STATUS IS SET TO 'TO BE SCHEDULED' or 'SCHEDULED'.**
### Scenarios: Date picker
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 1 π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: empty
* Duration: empty
* Working days only: on
* Change
* User enters a duration of 10 days
* Expected result:
* The finish date is set Tuesday, January 21 2025 (derived)
<br>
#### Scenario 2 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: empty
* Change
* User enters a duration of 10 days
* Expected result:
* No date is added
<br>
#### Scenario 3 π’
* Setup
* Start date: empty
* Finish date: Tuesday, January 21 2025
* Duration: empty
* Working days only: on
* Change
* User enters a duration of 10 days
* Expected result:
* The start date is set to Wednesday, January 8, 2025 (derived)
<br>
#### Scenario 4 π’
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Friday, January 24, 2025
* Duration: 10 days
* Working days only: on
* Change
* User changes duration to 11 days
* Expected result:
* The finish date is changed to Monday, January 27, 2025
<br>
#### Scenario 5 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Monday, January 20, 2025
* Duration: 11
* Working days only: on
* Change
* User changes duration to 10 days
* Expected result:
* The finish date is changed to Friday, January 17, 2025
<br>
#### Scenario 6 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by clearing duration field
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 6a π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by focusing duration field and clicking the "x"
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 7 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the start date to Tuesday, January 7, 2025
* Expected result
* Finish date is maintained, duration is automatically adjusted to 3 days (derived; logic = changing one date when the other is present affects duration vs. move the second date).
* \[open\] Challenge?
* π’ \[Chris\] Yes! I totally approve this scenario. I think that's the correct behavior. Before, it would have kept the duration and change the end date, which I always found counter-intuitive.
<br>
#### Scenario 8 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the finish date to January 10, 2025
* Expected result
* Start date is unaffected, duration is now set to 5 days:
* Start date: Monday, January 6, 2025
* Finish date: Friday, January 10, 2025
* Duration: 5
<br>
#### Scenario 9 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: 4
* Change
* User enters the finish date of Friday, January 10, 2025 (finish date in focus).
* Expected result
* The start date is set to Tuesday, January 7, 2025 (derived from duration):
* Start date: Tuesday, January 7, 2025
* Finish date: Friday, January 10, 2025
* Duration: 4
<br>
#### Scenario 10 π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* User enters the start date of Tuesday, January 7, 2025
* Expected result
* Duration is set to 3 (derived from start date):
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
<br>
#### Scenario 13 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Wednesday, February 15, 2025 (note that this is _after_ the original finish date)
* Expected result
* The start date is set to Wednesday, February 15
* The finish date is cleared
* Duration is cleared
<br>
#### Scenario 13a π’
* Setup
* Start date: Thursday, January 23, 2025
* Finish date: empty
* Duration: empty
* Today's date is Tuesday, January 21, 2025
* Change
* The user clicks the "Today" link under the Finish date field
* Expected result
* The finish date is set to Tuesday, February 21, 2021
* The start date is cleared
* Duration is cleared
<br>
#### Scenario 14 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Monday, January 6, 2025 (note that this is _before_ the original start date).
* Expected result
* The start date is now Monday, January 6, 2025
* The finish date is maintained at Thursday, January 9, 2025
* The duration changes to 4 days.
* (In previous version, the duration would be kept and finish date would be derived. This is no longer the case: we keep always keep dates and derive duration)
<br>
#### Scenario 15 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Tuesday, January 14, 2025
* Duration: 4
* Working days only: on
* Change
* Working days only: off
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Sunday, January 12, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 16 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Sunday, January 12, 2025
* Duration: 4
* Working days only: off
* Change
* Working days only: on
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 17 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (2 days)
<br>
#### Scenario 18 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Tuesday, January 21, 2025
* Working days only: off
* Duration: 11 days
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Monday, January 27, 2025
* Duration is conserved (11 days)
<br>
#### Scenario 19 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: -
* Working days only: off
* Duration: -
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is still empty
* Duration is still empty
* Note
* if "Working days only" is switched off again, the start date _could_ go back to Saturday Jan 11, but this is not a requirement. Both behaviors are acceptable.
<br>
#### Scenario 20 π’
* Setup
* Start date: -
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: -
* Change
* Working days only: on
* Expected result
* Start date is still empty
* Finish date is Monday, February 13, 2025
* Duration is still empty
<br>
#### Scenario 21a π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Clear start date
* Expected result
* Start date is removed
* Duration is removed
* Finish date is maintained at Sunday, January 12, 2025
<br>
#### Scenario 21b π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Finish date is cleared
* Expected result
* Start date is maintained at Saturday, January 11, 2025
* Finish date is removed
* Duration is removed
<br>
#### Scenario 22a π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Note: this is one dayΒ _earlier_ than the current start date
* Expected result
* Start date is updated to at Wednesday, January 8, 2025 (the clicked date)
* Finish date is set to Thursday, January 9, 2025 (the previous start date)
* Focus is set to finish date
* Duration is derived as 2 days
<br>
#### Scenario 22b π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Friday, January 10, 2025
* Note: this is one dayΒ _after_ than the current start date
* Expected result
* Start date stays at Thursday, January 9, 2025
* Finish date is set to Friday, January 10, 2025
* Duration is derived as 2 days
* Focus is set to start date
<br>
#### Scenario 23a π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Friday, January 10, 2025
* Expected result
* Start date is set to Thursday, January 9, 2025 (the previous finish date)
* Finish date is updated to Friday, January 10, 2025 (the clicked date)
* Duration is derived as 2 days
* Focus is set to start date
<br>
#### Scenario 23b π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Expected result
* Start date is set to Wednesday, January 8, 2025 (the clicked date)
* Finish date remains Thursday, January 9, 2025
* Duration is derived as 2 days
* Focus is set to finish date
<br style="page-break-after:always;">
### Other New scenarios (incl. new and related to Gantt/Team Planner) added for automatic scheduling
#### Scenario 24a: Single date change (Start date) π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With start date in focus, click on Friday, January 10, 2025
* Expected result
* Start date is now Friday, January 10, 2025 (the clicked date)
* Finish date remains empty
* Duration remains empty
* Focus is moved to Finish date (range mode with new start date)
####
#### Scenario 24b: Single date change (Finish date) π’
* Setup
* Start date: -
* Finish date: Friday, January 10, 2025
* Duration: -
* Change
* With finish date in focus, click on Thu, Jan 16, 2025
* Expected result
* Finish date is now Thu, Jan 16, 2025 (the clicked date)
* Start date remains empty
* Duration remains empty
* Focus is moved to Start date (range mode with new finish date)
#### Scenario 25: Manual to automatic with no predecessors or children π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Switch to automatic
* Expected result:
* Not possible (no predecessors or children)
###
### Scenarios: Scheduling (not related to the date picker)
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 11 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* The user moves the drag handle on the left border (start date) of the box representing the work package in Gantt chart and Team planner one day to the right (to Tuesday, Jan 7, 2025)
* Expected result
* The duration is reduced to 3 days
* The start date is set Tuesday, January 7, 2025
* The finish date is left unchanged
<br>
#### Scenario 12 (GANTT/Team planner) π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Wednesday, January 8, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **right** so start date is Wednesday, January 8, 2025
* Expected result
* The duration is maintained. Start state is now January 8, 2025 (as set by drag), finish date is set to Friday, January 10, 2025 (derived based on duration).
<br>
#### Scenario 12bis (GANTT/Team planner) π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: Friday, January 10, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **left** so start date is Monday, January 6, 2025.
* Expected result
* The duration is maintained. Start state is now Monday, January 6, 2025 (as set by drag), finish date is set to Wednesday, January 8, 2025 (derived based on duration)
<br>
<br>
#### Scenario 26: Add a predecessor π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add 1 predecessor:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (one day after predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 1 predecessor
<br>
#### Scenario 27a: Manual to automatic with multiple predecessors (no lag) π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 0
* Add predecessor B:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (closest predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 27b: Manual to automatic with multiple predecessors (with lag) π‘ \[Chris: expected incorrect. 14 days of lag from Dec 30 would be Start=Jan 20 (not Jan 14), then Finish=Jan 22\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 14
* Add predecessor B:
* Finish date: Thu, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Tue, Jan 14, 2025 (closest predecessor, because of lag)
* Finish date: Thu, Jan 16, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 28: Add children (parent in manual originally; children all manual, all in working days only) π’
* Setup (parent)
* Start date: Thu, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: on
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-24 Jan, 2025
* Working days only: on
* Duration: 4
* Mode: Manual
* Expected result
* Start date: Tue, Jan 16, 2025
* Finish date Sun, Jan 24, 2025
* Mode: Automatic (automatically-set)
* \[open\] Should the switch to automatic mode be triggered even if the work package was previously in manual? How do we know if the user wanted it to be in manual (even after the addition of children) or if it was just in manual by default? Should there be a warning asking if the now-parent work package should automatically switch to automatic?
* π’ Currently, the idea is to change to automatic when a work package becomes automatic for the first time (it's manual and has no predecessors nor children). If it has predecessors and/or children and is in manual mode, then it has been set by the user, so it should not be changed. Is it ok?
* Working days only: disabled and on
* Duration: 7
<br>
#### Scenario 29: Add children (parent in manual originally; children all manual, mixed working days) π‘ \[Chris: expected duration should be 11\]
* Setup
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (automatically-set)
* \[open\] Same question as above. How do we operate this switch to automatic?
* π’ Same as Scenario 28: the work package initially has no parents and no predecessors and is in manual mode. When the first child is added, its scheduling is automatically switched to automatic.
* Working days only: disabled and off
* Duration: 9 or 11
* \[open\] How do we calculate duration for parent in mixed working days onlyΒ mode?
* π‘ It's 11. If at least one child has "working days only: off", then the parent also has "working days only: off".
<br>
#### Scenario 30: Add children to a successor (start date change derived children instead of predecessor) π΅ \[Chris: I fixed dates and day names\]
* Setup:
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 3
* Mode: Automatic
* Working days only: on
* Banner: Start date derived from predecessor
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Tue, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled and off
* Duration: 11
* Banner: Dates derived from children
<br>
#### Scenario 30: Automatically-scheduled successor with children loses all its children π‘ \[Chris: needs review about final duration and working days only status. Probably needs duplicating scenario\]
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Change
* Delete both children (remove parent relation or delete work package. Should work in both scenarios)
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* \[open\] In this case, it doesn't make sense to disable it anymore, but what do we set it to? It was previously mixed.
* π‘ Depends on which child is deleted first. See below
* Duration: 9 or 11
* \[open\] What happens to duration?
* π‘ Duration is kept, and final duration depends on which one is removed/deleted first.
* If child 1 is removed first, parent takes 21-26 Jan days with working days only "on" and duration 6. Both will be kept after removing child 2.
* If child 2 is removed first instead, parent takes 16-20 Jan, working days only "off" and duration 3. Both will be kept after removing child 1
* π‘ Recommendation: duplicate scenario and explicitly indicate which child is removed first, and set expectations.
* Banner: Dates derived from predecessor
<br>
#### Scenario 32: Switch parent with predecessor and children to manual π‘ \[Chris: wrong preconditions: if the parent has a child with working days only: off, then it also has working days only: off, and the first child being automatic should start ASAP after the parent predecessor, so it should start on Mon 27 Jan, and then Child 2 dates are wrong too, and parent dates as well\]
<br>
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 11
* Mode: Automatic
* Working days only: on π‘
* Relations (3):
* Predecessor:
* Start date: Fri Jan 16, 2025
* Finish date: Mon, Jan 26, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 16β20 Jan, 2025 π‘
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
* Change:
* Change mode of this parent to manual
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 11
* Mode: Manual
* Working days only: on π‘
* Relations (3):
* Predecessor: _(unchanged)_
* Start date: Thu, Jan 15, 2025
* \[open\] Maintained, why?
* Finish date: Sun, Jan 26, 2025
* \[open\] Maintained, why?
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 15β17 Jan, 2025 (now follows the predecessor)
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
<br>
This work package describes how values for the start date, the finish date and duration should change in response to changes to any of one of them. We created a [similar document with scenarios previously](https://community.openproject.org/wp/43539) when we added duration to the date picker, which made it easier:
* For devs to write test cases
* Document behaviour
* Use it for testing
Now with the upcoming [introduction of automatic scheduling](https://community.openproject.org/wp/59539), we need to reevaluate if the following scenarios are still relevant, if the behaviour is consistent and what news scenarios need to be added.
**THIS DOCUMENT IS A WORK IN PROGRESS, PLEASE DO NOT USE IT UNTIL THE STATUS IS SET TO 'TO BE SCHEDULED' or 'SCHEDULED'.**
### Scenarios: Date picker
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 1 π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: empty
* Duration: empty
* Working days only: on
* Change
* User enters a duration of 10 days
* Expected result:
* The finish date is set Tuesday, January 21 2025 (derived)
<br>
#### Scenario 2 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: empty
* Change
* User enters a duration of 10 days
* Expected result:
* No date is added
<br>
#### Scenario 3 π’
* Setup
* Start date: empty
* Finish date: Tuesday, January 21 2025
* Duration: empty
* Working days only: on
* Change
* User enters a duration of 10 days
* Expected result:
* The start date is set to Wednesday, January 8, 2025 (derived)
<br>
#### Scenario 4 π’
* Setup
* Start date: Monday, January 13, 2025
* Finish date: Friday, January 24, 2025
* Duration: 10 days
* Working days only: on
* Change
* User changes duration to 11 days
* Expected result:
* The finish date is changed to Monday, January 27, 2025
<br>
#### Scenario 5 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Monday, January 20, 2025
* Duration: 11
* Working days only: on
* Change
* User changes duration to 10 days
* Expected result:
* The finish date is changed to Friday, January 17, 2025
<br>
#### Scenario 6 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by clearing duration field
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 6a π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* Remove duration by focusing duration field and clicking the "x"
* Expected result
* Finish date is also removed, start date is maintained as is:
* Start date: Tuesday, January 7, 2025
* Finish date: -
* Duration: -
<br>
#### Scenario 7 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the start date to Tuesday, January 7, 2025
* Expected result
* Finish date is maintained, duration is automatically adjusted to 3 days (derived; logic = changing one date when the other is present affects duration vs. move the second date).
* \[open\] Challenge?
* π’ \[Chris\] Yes! I totally approve this scenario. I think that's the correct behavior. Before, it would have kept the duration and change the end date, which I always found counter-intuitive.
<br>
#### Scenario 8 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* User alters the finish date to January 10, 2025
* Expected result
* Start date is unaffected, duration is now set to 5 days:
* Start date: Monday, January 6, 2025
* Finish date: Friday, January 10, 2025
* Duration: 5
<br>
#### Scenario 9 π’
* Setup
* Start date: empty
* Finish date: empty
* Duration: 4
* Change
* User enters the finish date of Friday, January 10, 2025 (finish date in focus).
* Expected result
* The start date is set to Tuesday, January 7, 2025 (derived from duration):
* Start date: Tuesday, January 7, 2025
* Finish date: Friday, January 10, 2025
* Duration: 4
<br>
#### Scenario 10 π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* User enters the start date of Tuesday, January 7, 2025
* Expected result
* Duration is set to 3 (derived from start date):
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
<br>
#### Scenario 13 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Wednesday, February 15, 2025 (note that this is _after_ the original finish date)
* Expected result
* The start date is set to Wednesday, February 15
* The finish date is cleared
* Duration is cleared
<br>
#### Scenario 13a π’
* Setup
* Start date: Thursday, January 23, 2025
* Finish date: empty
* Duration: empty
* Today's date is Tuesday, January 21, 2025
* Change
* The user clicks the "Today" link under the Finish date field
* Expected result
* The finish date is set to Tuesday, February 21, 2021
* The start date is cleared
* Duration is cleared
<br>
#### Scenario 14 π’
* Setup
* Start date: Tuesday, January 7, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 3
* Change
* The user changes the start day on the date picker to Monday, January 6, 2025 (note that this is _before_ the original start date).
* Expected result
* The start date is now Monday, January 6, 2025
* The finish date is maintained at Thursday, January 9, 2025
* The duration changes to 4 days.
* (In previous version, the duration would be kept and finish date would be derived. This is no longer the case: we keep always keep dates and derive duration)
<br>
#### Scenario 15 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Tuesday, January 14, 2025
* Duration: 4
* Working days only: on
* Change
* Working days only: off
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Sunday, January 12, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 16 π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: Sunday, January 12, 2025
* Duration: 4
* Working days only: off
* Change
* Working days only: on
* Expected result
* Start date remains Thursday, January 9, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (4 days)
<br>
#### Scenario 17 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Tuesday, January 14, 2025
* Duration is conserved (2 days)
<br>
#### Scenario 18 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Tuesday, January 21, 2025
* Working days only: off
* Duration: 11 days
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is changed to Monday, January 27, 2025
* Duration is conserved (11 days)
<br>
#### Scenario 19 π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: -
* Working days only: off
* Duration: -
* Change
* Working days only: on
* Expected result
* Start date changes to Monday, January 13, 2025
* Finish date is still empty
* Duration is still empty
* Note
* if "Working days only" is switched off again, the start date _could_ go back to Saturday Jan 11, but this is not a requirement. Both behaviors are acceptable.
<br>
#### Scenario 20 π’
* Setup
* Start date: -
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: -
* Change
* Working days only: on
* Expected result
* Start date is still empty
* Finish date is Monday, February 13, 2025
* Duration is still empty
<br>
#### Scenario 21a π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Clear start date
* Expected result
* Start date is removed
* Duration is removed
* Finish date is maintained at Sunday, January 12, 2025
<br>
#### Scenario 21b π’
* Setup
* Start date: Saturday, January 11, 2025
* Finish date: Sunday, January 12, 2025
* Working days only: off
* Duration: 2
* Change
* Finish date is cleared
* Expected result
* Start date is maintained at Saturday, January 11, 2025
* Finish date is removed
* Duration is removed
<br>
#### Scenario 22a π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Note: this is one dayΒ _earlier_ than the current start date
* Expected result
* Start date is updated to at Wednesday, January 8, 2025 (the clicked date)
* Finish date is set to Thursday, January 9, 2025 (the previous start date)
* Focus is set to finish date
* Duration is derived as 2 days
<br>
#### Scenario 22b π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With duration in focus, click on Friday, January 10, 2025
* Note: this is one dayΒ _after_ than the current start date
* Expected result
* Start date stays at Thursday, January 9, 2025
* Finish date is set to Friday, January 10, 2025
* Duration is derived as 2 days
* Focus is set to start date
<br>
#### Scenario 23a π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Friday, January 10, 2025
* Expected result
* Start date is set to Thursday, January 9, 2025 (the previous finish date)
* Finish date is updated to Friday, January 10, 2025 (the clicked date)
* Duration is derived as 2 days
* Focus is set to start date
<br>
#### Scenario 23b π’
* Setup
* Start date: empty
* Finish date: Thursday, January 9, 2025
* Duration: empty
* Change
* With duration in focus, click on Wednesday, January 8, 2025
* Expected result
* Start date is set to Wednesday, January 8, 2025 (the clicked date)
* Finish date remains Thursday, January 9, 2025
* Duration is derived as 2 days
* Focus is set to finish date
<br style="page-break-after:always;">
### Other
#### Scenario 24a: Single date change (Start date) π’
* Setup
* Start date: Thursday, January 9, 2025
* Finish date: -
* Duration: -
* Change
* With start date in focus, click on Friday, January 10, 2025
* Expected result
* Start date is now Friday, January 10, 2025 (the clicked date)
* Finish date remains empty
* Duration remains empty
* Focus is moved to Finish date (range mode with new start date)
####
#### Scenario 24b: Single date change (Finish date) π’
* Setup
* Start date: -
* Finish date: Friday, January 10, 2025
* Duration: -
* Change
* With finish date in focus, click on Thu, Jan 16, 2025
* Expected result
* Finish date is now Thu, Jan 16, 2025 (the clicked date)
* Start date remains empty
* Duration remains empty
* Focus is moved to Start date (range mode with new finish date)
#### Scenario 25: Manual to automatic with no predecessors or children π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Switch to automatic
* Expected result:
* Not possible (no predecessors or children)
###
### Scenarios: Scheduling (not related to the date picker)
In all these scenarios, Saturday and Sunday are non-working days.
#### Scenario 11 π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Thursday, January 9, 2025
* Duration: 4
* Change
* The user moves the drag handle on the left border (start date) of the box representing the work package in Gantt chart and Team planner one day to the right (to Tuesday, Jan 7, 2025)
* Expected result
* The duration is reduced to 3 days
* The start date is set Tuesday, January 7, 2025
* The finish date is left unchanged
<br>
#### Scenario 12 (GANTT/Team planner) π’
* Setup
* Start date: Monday, January 6, 2025
* Finish date: Wednesday, January 8, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **right** so start date is Wednesday, January 8, 2025
* Expected result
* The duration is maintained. Start state is now January 8, 2025 (as set by drag), finish date is set to Friday, January 10, 2025 (derived based on duration).
<br>
#### Scenario 12bis (GANTT/Team planner) π’
* Setup
* Start date: Wednesday, January 8, 2025
* Finish date: Friday, January 10, 2025
* Duration: 3
* Change
* The user moves the work package by dragging it (on the GANTT/team planner) it to the **left** so start date is Monday, January 6, 2025.
* Expected result
* The duration is maintained. Start state is now Monday, January 6, 2025 (as set by drag), finish date is set to Wednesday, January 8, 2025 (derived based on duration)
<br>
<br>
#### Scenario 26: Add a predecessor π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add 1 predecessor:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (one day after predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 1 predecessor
<br>
#### Scenario 27a: Manual to automatic with multiple predecessors (no lag) π’
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 0
* Add predecessor B:
* Finish date: Thurs, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Fri, Jan 3, 2025 (closest predecessor)
* Finish date: Tue, Jan 7, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 27b: Manual to automatic with multiple predecessors (with lag) π‘ \[Chris: expected incorrect. 14 days of lag from Dec 30 would be Start=Jan 20 (not Jan 14), then Finish=Jan 22\]
* Setup:
* Start date: Wed, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: none
* Change:
* Add predecessor A:
* Finish date: Mon, Dec 30, 2024
* Lag: 14
* Add predecessor B:
* Finish date: Thu, Jan 2, 2025
* Lag: 0
* Mode: Manual to Automatic
* Expected result:
* Start date: Tue, Jan 14, 2025 (closest predecessor, because of lag)
* Finish date: Thu, Jan 16, 2025
* Duration: 3
* Mode: Auto
* Working days only: on
* Relations: 2 predecessors
<br>
#### Scenario 28: Add children (parent in manual originally; children all manual, all in working days only) π’
* Setup (parent)
* Start date: Thu, Jan 8, 2025
* Finish date: Fri, Jan 10, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: on
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-24 Jan, 2025
* Working days only: on
* Duration: 4
* Mode: Manual
* Expected result
* Start date: Tue, Jan 16, 2025
* Finish date Sun, Jan 24, 2025
* Mode: Automatic (automatically-set)
* \[open\] Should the switch to automatic mode be triggered even if the work package was previously in manual? How do we know if the user wanted it to be in manual (even after the addition of children) or if it was just in manual by default? Should there be a warning asking if the now-parent work package should automatically switch to automatic?
* π’ Currently, the idea is to change to automatic when a work package becomes automatic for the first time (it's manual and has no predecessors nor children). If it has predecessors and/or children and is in manual mode, then it has been set by the user, so it should not be changed. Is it ok?
* Working days only: disabled and on
* Duration: 7
<br>
#### Scenario 29: Add children (parent in manual originally; children all manual, mixed working days) π‘ \[Chris: expected duration should be 11\]
* Setup
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 2
* Mode: Manual
* Working days only: on
* Relations: none
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (automatically-set)
* \[open\] Same question as above. How do we operate this switch to automatic?
* π’ Same as Scenario 28: the work package initially has no parents and no predecessors and is in manual mode. When the first child is added, its scheduling is automatically switched to automatic.
* Working days only: disabled and off
* Duration: 9 or 11
* \[open\] How do we calculate duration for parent in mixed working days onlyΒ mode?
* π‘ It's 11. If at least one child has "working days only: off", then the parent also has "working days only: off".
<br>
#### Scenario 30: Add children to a successor (start date change derived children instead of predecessor) π΅ \[Chris: I fixed dates and day names\]
* Setup:
* Start date: Wed, Jan 15, 2025
* Finish date: Fri, Jan 17, 2025
* Duration: 3
* Mode: Automatic
* Working days only: on
* Banner: Start date derived from predecessor
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Tue, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Change
* Add child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Add child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Expected result
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled and off
* Duration: 11
* Banner: Dates derived from children
<br>
#### Scenario 30: Automatically-scheduled successor with children loses all its children π‘ \[Chris: needs review about final duration and working days only status. Probably needs duplicating scenario\]
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* Duration: 9 or 11
* Banner: Dates derived from children
* Relations:
* 1 predecessor:
* Start date: Fri Jan 10, 2025
* Finish date: Mon, Jan 14, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Relations: 1 follower
* Child 1:
* 16β20 Jan, 2025
* Working days only: off
* Duration: 3
* Mode: Manual
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Manual
* Change
* Delete both children (remove parent relation or delete work package. Should work in both scenarios)
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date:Β Sun, Jan 26, 2025
* Mode: Automatic (remains in automatic)
* Working days only: disabled
* \[open\] In this case, it doesn't make sense to disable it anymore, but what do we set it to? It was previously mixed.
* π‘ Depends on which child is deleted first. See below
* Duration: 9 or 11
* \[open\] What happens to duration?
* π‘ Duration is kept, and final duration depends on which one is removed/deleted first.
* If child 1 is removed first, parent takes 21-26 Jan days with working days only "on" and duration 6. Both will be kept after removing child 2.
* If child 2 is removed first instead, parent takes 16-20 Jan, working days only "off" and duration 3. Both will be kept after removing child 1
* π‘ Recommendation: duplicate scenario and explicitly indicate which child is removed first, and set expectations.
* Banner: Dates derived from predecessor
<br>
#### Scenario 32: Switch parent with predecessor and children to manual π‘ \[Chris: wrong preconditions: if the parent has a child with working days only: off, then it also has working days only: off, and the first child being automatic should start ASAP after the parent predecessor, so it should start on Mon 27 Jan, and then Child 2 dates are wrong too, and parent dates as well\]
<br>
* Setup:
* Start date: Thu, Jan 16, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 11
* Mode: Automatic
* Working days only: on π‘
* Relations (3):
* Predecessor:
* Start date: Fri Jan 16, 2025
* Finish date: Mon, Jan 26, 2025
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 16β20 Jan, 2025 π‘
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
* Change:
* Change mode of this parent to manual
* Expected result
* Start date: Thu, Jan 15, 2025
* Finish date: Sun, Jan 26, 2025
* Duration: 11
* Mode: Manual
* Working days only: on π‘
* Relations (3):
* Predecessor: _(unchanged)_
* Start date: Thu, Jan 15, 2025
* \[open\] Maintained, why?
* Finish date: Sun, Jan 26, 2025
* \[open\] Maintained, why?
* Duration: 3
* Mode: Manual
* Working days only: on
* Child 1:
* 15β17 Jan, 2025 (now follows the predecessor)
* Working days only: off
* Duration: 3
* Mode: Auto
* Relations: Precedes Child 2
* Child 2:
* 21-26 Jan, 2025
* Working days only: on
* Duration: 6
* Mode: Auto
* Relations: Follows Child 1
<br>