kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
305 lines
14 KiB
305 lines
14 KiB
Feature: Scrum Master
|
|
As a scrum master
|
|
I want to manage sprints and their stories
|
|
So that they get done according the product owner´s requirements
|
|
|
|
Background:
|
|
Given there is 1 project with:
|
|
| name | ecookbook |
|
|
And I am working in project "ecookbook"
|
|
And the project uses the following modules:
|
|
| backlogs |
|
|
And there is a role "scrum master"
|
|
And the role "scrum master" may have the following rights:
|
|
| view_master_backlog |
|
|
| view_taskboards |
|
|
| update_sprints |
|
|
| update_stories |
|
|
| create_impediments |
|
|
| update_impediments |
|
|
| update_tasks |
|
|
| subscribe_to_calendars |
|
|
| view_wiki_pages |
|
|
| edit_wiki_pages |
|
|
| view_issues |
|
|
| edit_issues |
|
|
| manage_subtasks |
|
|
And the backlogs module is initialized
|
|
And the following trackers are configured to track stories:
|
|
| Story |
|
|
And the tracker "Task" is configured to track tasks
|
|
And the project uses the following trackers:
|
|
| Story |
|
|
| Epic |
|
|
| Task |
|
|
| Bug |
|
|
And the tracker "Task" has the default workflow for the role "scrum master"
|
|
And there is 1 user with:
|
|
| login | markus |
|
|
| firstname | Markus |
|
|
| Lastname | Master |
|
|
And the user "markus" is a "scrum master"
|
|
And the project has the following sprints:
|
|
| name | sprint_start_date | effective_date |
|
|
| Sprint 001 | 2010-01-01 | 2010-01-31 |
|
|
| Sprint 002 | 2010-02-01 | 2010-02-28 |
|
|
| Sprint 003 | 2010-03-01 | 2010-03-31 |
|
|
| Sprint 004 | 2.weeks.ago | 1.week.from_now |
|
|
| Sprint 005 | 3.weeks.ago | 2.weeks.from_now|
|
|
And the project has the following product owner backlogs:
|
|
| Product Backlog |
|
|
| Wishlist |
|
|
And the project has the following stories in the following backlogs:
|
|
| position | subject | backlog |
|
|
| 1 | Story 1 | Product Backlog |
|
|
| 2 | Story 2 | Product Backlog |
|
|
| 3 | Story 3 | Product Backlog |
|
|
| 4 | Story 4 | Product Backlog |
|
|
And the project has the following stories in the following sprints:
|
|
| position | subject | sprint |
|
|
| 5 | Story A | Sprint 001 |
|
|
| 6 | Story B | Sprint 001 |
|
|
| 7 | Story C | Sprint 002 |
|
|
And there are the following issue status:
|
|
| name | is_closed | is_default |
|
|
| New | false | true |
|
|
| In Progress | false | false |
|
|
| Resolved | false | false |
|
|
| Closed | true | false |
|
|
| Rejected | true | false |
|
|
And the project has the following tasks:
|
|
| subject | sprint | parent |
|
|
| Task 1 | Sprint 001 | Story A |
|
|
And the project has the following impediments:
|
|
| subject | sprint | blocks |
|
|
| Impediment 1 | Sprint 001 | Story A |
|
|
And the project has the following issues:
|
|
| subject | sprint | tracker |
|
|
| Epic 1 | Sprint 005 | Epic |
|
|
And the project has the following stories in the following sprints:
|
|
| subject | sprint | parent |
|
|
| Story D | Sprint 005 | Epic 1 |
|
|
| Story E | Sprint 005 | Epic 1 |
|
|
And the project has the following tasks:
|
|
| subject | sprint | parent |
|
|
| Task 10 | Sprint 005 | Story D |
|
|
| Task 11 | Sprint 005 | Story D |
|
|
| Subtask 1 | Sprint 005 | Task 10 |
|
|
| Subtask 2 | Sprint 005 | Task 10 |
|
|
| Subtask 3 | Sprint 005 | Task 11 |
|
|
And the project has the following issues:
|
|
| subject | sprint | parent | tracker |
|
|
| Subfeature | Sprint 005 | Task 10 | Bug |
|
|
| Subsubtask | Sprint 005 | Subfeature | Task |
|
|
And I am logged in as "markus"
|
|
|
|
@javascript
|
|
Scenario: View stories that have a parent ticket
|
|
Given I am on the master backlog
|
|
When I open the "Sprint 005" menu
|
|
Then I should see 2 stories in "Sprint 005"
|
|
And I should not see "Epic 1"
|
|
And I should not see "Task 10"
|
|
And I should not see "Subtask 1"
|
|
And I should not see "Subfeature"
|
|
|
|
@javascript
|
|
Scenario: Create an impediment
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I press "td.add_new" within "#impediments"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in the ids of the tasks "Task 1" for "blocks_ids"
|
|
And I select "Markus Master" from "assigned_to_id"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal successful saving
|
|
|
|
@javascript
|
|
Scenario: Create an impediment blocking an issue of another sprint
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I press "td.add_new" within "#impediments"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in the ids of the stories "Story C" for "blocks_ids"
|
|
And I select "Markus Master" from "assigned_to_id"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) can only contain the IDs of current sprint's tickets"
|
|
|
|
@javascript
|
|
Scenario: Create an impediment blocking a non existent issue
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I press "td.add_new" within "#impediments"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in "0" for "blocks_ids"
|
|
And I select "Markus Master" from "assigned_to_id"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) can only contain the IDs of current sprint's tickets"
|
|
|
|
@javascript
|
|
Scenario: Create an impediment without specifying what it blocks
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I press "td.add_new" within "#impediments"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in "" for "blocks_ids"
|
|
And I select "Markus Master" from "assigned_to_id"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) must contain the ID of at least one ticket"
|
|
|
|
@javascript
|
|
Scenario: Update an impediment
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I click on the impediment called "Impediment 1"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in the ids of the tasks "Task 1" for "blocks_ids"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal successful saving
|
|
|
|
@javascript
|
|
Scenario: Update an impediment to block an issue of another sprint
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I click on the impediment called "Impediment 1"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in the ids of the stories "Story C" for "blocks_ids"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) can only contain the IDs of current sprint's tickets"
|
|
|
|
@javascript
|
|
Scenario: Update an impediment to block a non existent issue
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I click on the impediment called "Impediment 1"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in "0" for "blocks_ids"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) can only contain the IDs of current sprint's tickets"
|
|
|
|
@javascript
|
|
Scenario: Update an impediment to not block anything
|
|
Given I am on the taskboard for "Sprint 001"
|
|
When I click on the impediment called "Impediment 1"
|
|
And I fill in "Bad Company" for "subject"
|
|
And I fill in "" for "blocks_ids"
|
|
And I press "OK"
|
|
Then I should see "Bad Company" within "#impediments"
|
|
And the impediment "Bad Company" should signal unsuccessful saving
|
|
And the error alert should show "Blocks (IDs) must contain the ID of at least one ticket"
|
|
|
|
Scenario: Update sprint details
|
|
Given I am on the master backlog
|
|
And I want to edit the sprint named Sprint 001
|
|
And I want to set the name of the sprint to sprint xxx
|
|
And I want to set the sprint_start_date of the sprint to 2010-03-01
|
|
And I want to set the effective_date of the sprint to 2010-03-20
|
|
When I update the sprint
|
|
Then the request should complete successfully
|
|
And the sprint should be updated accordingly
|
|
|
|
Scenario: Update sprint with no name
|
|
Given I am on the master backlog
|
|
And I want to edit the sprint named Sprint 001
|
|
And I want to set the name of the sprint to an empty string
|
|
When I update the sprint
|
|
Then the server should return an update error
|
|
|
|
Scenario: Move a story from product backlog to sprint backlog
|
|
Given I am on the master backlog
|
|
When I move the story named Story 1 up to the 1st position of the sprint named Sprint 001
|
|
Then the request should complete successfully
|
|
When I move the story named Story 4 up to the 2nd position of the sprint named Sprint 001
|
|
And I move the story named Story 2 up to the 1st position of the sprint named Sprint 002
|
|
And I move the story named Story 4 up to the 1st position of the sprint named Sprint 001
|
|
Then Story 4 should be in the 1st position of the sprint named Sprint 001
|
|
And Story 1 should be in the 2nd position of the sprint named Sprint 001
|
|
And Story 2 should be in the 1st position of the sprint named Sprint 002
|
|
|
|
Scenario: Move a story down in a sprint
|
|
Given I am on the master backlog
|
|
When I move the story named Story A below Story B
|
|
Then the request should complete successfully
|
|
And Story A should be in the 2nd position of the sprint named Sprint 001
|
|
And Story B should be the higher item of Story A
|
|
|
|
Scenario: Request the project calendar feed
|
|
Given I have set my API access key
|
|
And I move the story named Story 4 down to the 1st position of the sprint named Sprint 004
|
|
And I am logged out
|
|
When I download the calendar feed
|
|
Then the request should complete successfully
|
|
Given I have guessed an API access key
|
|
When I download the calendar feed
|
|
Then the request should fail
|
|
|
|
Scenario: Download printable cards for the task board
|
|
Given I have selected card label stock Avery 7169
|
|
And I move the story named Story 4 up to the 1st position of the sprint named Sprint 001
|
|
And I am on the issues index page
|
|
And I follow "Sprint 001"
|
|
Then the request should complete successfully
|
|
When I follow "Export cards"
|
|
Then the request should complete successfully
|
|
|
|
Scenario: view the sprint notes
|
|
Given I have set the content for wiki page Sprint Template to Sprint Template
|
|
And I have made Sprint Template the template page for sprint notes
|
|
And I am on the taskboard for "Sprint 001"
|
|
When I view the sprint notes
|
|
Then the request should complete successfully
|
|
Then the wiki page Sprint 001 should contain Sprint Template
|
|
|
|
Scenario: edit the sprint notes
|
|
Given I have set the content for wiki page Sprint Template to Sprint Template
|
|
And I have made Sprint Template the template page for sprint notes
|
|
And I am on the taskboard for "Sprint 001"
|
|
When I edit the sprint notes
|
|
Then the request should complete successfully
|
|
Then the wiki page Sprint 001 should contain Sprint Template
|
|
|
|
#here was it
|
|
|
|
Scenario: View tasks that have subtasks
|
|
Given I am on the taskboard for "Sprint 005"
|
|
Then I should see "Task 10" within "#tasks"
|
|
And I should see "Task 11" within "#tasks"
|
|
And I should not see "Subtask 1"
|
|
And I should not see "Subtask 2"
|
|
And I should not see "Subtask 3"
|
|
And I should not see "Epic 1"
|
|
And I should not see "Subfeature"
|
|
And I should not see "Subsubtask"
|
|
|
|
Scenario: Move stories around in the backlog that have a parent ticket
|
|
Given I am on the master backlog
|
|
When I move the story named Story D below Story E
|
|
Then the request should complete successfully
|
|
And Story D should be in the 2nd position of the sprint named Sprint 005
|
|
And Story E should be the higher item of Story D
|
|
|
|
Scenario: View epic, stories, tasks, subtasks in the issue list
|
|
Given I am on the issues index page
|
|
Then I should see "Epic 1" within "#content"
|
|
And I should see "Story D" within "#content"
|
|
And I should see "Story E" within "#content"
|
|
And I should see "Task 10" within "#content"
|
|
And I should see "Task 11" within "#content"
|
|
And I should see "Subtask 1" within "#content"
|
|
And I should see "Subtask 2" within "#content"
|
|
And I should see "Subtask 3" within "#content"
|
|
And I should see "Subfeature" within "#content"
|
|
And I should see "Subsubtask" within "#content"
|
|
|
|
Scenario: Move a task with subtasks around in the taskboard
|
|
Given I am on the taskboard for "Sprint 005"
|
|
When I move the task named Task 10 below Task 11
|
|
Then the request should complete successfully
|
|
And Task 11 should be the higher task of Task 10
|
|
And the story named Story D should have 1 task named Task 10
|
|
And the story named Story D should have 1 task named Task 11
|
|
|