Features
Feature: My App’s Feature 1
Feature: Login
As the user of client
I want to login with Github to the travel page
so that I see the groups I am in and create a new group.
Scenario 1: the user has logged in
When I log in,
Then I can use all functionalities in the web page.
Scenario 2: the user status has not logged in
When I has not logged in,
Then I can only view the web page and use limited functionalities.
Feature: My App’s Feature 2
Feature: Make a Group
As the user of client
I want to make a travel group
so that I can schedule the travel and invite others to the group
Scenario 1: the group is not exist
Given the group is not exist
When I want to make the group
Then I have to create the group and(or) invite others to join in.
Scenario 2: the group is exist
Given the group is exist
When I want to join the group
Then I have to enter the group with group name and password, and(or) invite others to join in.
Feature: My App’s Feature 3
Feature: Invite others
As the user of client
I want to send invitations to others
so that they can join the travel scheduling app
Scenario 1: the friend has not joined in
Given the friend is not in this group,
When I want to add his or her into the group,
Then I have to invite him or her to join in with his or her email address.
Scenario 2: the friend has already joined in
Given the friend is in this group,
When I want to add his or her into the group,
Then an alert message is popped out "the friend is in the group chat".
Feature: My App’s Feature 4
Feature: Add schedule
As the user of client
I want to schedule to our travel group
so that the schedule will display on the list and the map
Scenario 1: view schedule lists
When I want to know all schedule lists of my group,
Then I can just go to the schedule lists page.
Scenario 2: add schedule
When I want to add a new schedule of our trip.
Then I can just add the schedule which includes duration, destination, budget and some other information.
Scenario 3: edit schedule
When I want to change something in a existing schedule.
Then I can just edit this schedule by clicking the "edit" button.
Feature: My App’s Feature 5
Feature: click on map and change location
As the user of client
I want to click on the map
so that I can change my location on the map
Scenario 1: the location I want is in the map view
When I want to change my current location,
Then I can just need to click the location on the map.
Scenario 2: the location I want is not in the map view
When I want to change my current location,
Then I can have to zoom the map and find an approximate area.
Then I can click the location on the map.
Feature: My App’s Feature 6
Feature: update canvas with map background
As the user of client
I want to change the canvas with my desired destination spots on the map,
so that I can use this canvas to plan and draw my routes.
Scenario 1: the canvas background is non-exist
When I want to change the canvas background,
Then I can just screenshop a map region and paste it to the canvas.
Scenario 2: the canvas background is exist
When I want to change the canvas background,
Then I can just screenshot a map region and update it to the canvas.
Feature: My App’s Feature 7
Feature: draw routes on the canvas
As the user of client
I want to draw routes on the canvas,
so that I can discuss with my friends with our traval routes and plans.
Scenario 1: draw routes
When I want to draw routes with different colors and lines,
Then I can just choose the different color pens provided.
Scenario 2: save routes
When I and my friends finish drawing routes,
Then I can save it to our schedule list as a photo.
Feature: My App’s Feature 8
Feature: chatting room
As the user of client
I want to chat with my group members in the chatting room
so everyone can exchange ideas with each other
Scenario 1: open chatting room window
When I want to open the chatting room and chat with friends,
Then I can click the chatting room at the right bottom and the chatting room window will be unfolded.
Scenario 2: chat
When I want to send message to my group members,
Once I text the message,
Then I can click the "send" button and the message will be sent to the group chat.
Then each of my group members could view my message in the chatting room.
Scenario 3: view chatting records
Given that I am in the chatting room and want to view the historical records regarding with our travel,
When I scroll up in the chatting room window,
Then I can view the all chatting records.
Scenario 4: close(fold) chatting room
When I want to close(fold) the chatting room and view the web page with more space,
Then I can click the chatting room at the right bottom and the chatting room will be closed(folded).
Examples
Feature: Usage
Feature: Usage
As a user of Cucumber.js
I want to have documentation on Cucumber
So that I can concentrate on building awesome applications
Scenario: Reading documentation
Given I am on the Cucumber.js GitHub repository
When I go to the README file
Then I should see "Usage" as the page title
Feature: Serve Coffee
Feature: Serve coffee
Coffee should not be served until paid for
Coffee should not be served until the button has been pressed
If there is no coffee left then money should be refunded
Scenario: Buy last coffee
Given there are 1 coffees left in the machine
And I have deposited 1$
When I press the coffee button
Then I should be served a coffee
Scenario: No more coffees
Given there is no coffee left in the machine
And I have deposited $1
When I press the coffee button
Then I should be refunded $1