EPIC 6: Social and Community Features

E06-F01: Workout Sharing and Import

User Story: As a user, I want to share my custom workouts with friends and import workouts others have shared, so that we can benefit from each other’s program designs and training ideas.

Scenarios

Scenario: E06-F01-S01 - Sharing a custom workout program
  Given I have created a custom workout program "HIIT Madness"
  When I view the program details
  And I tap the "Share" button
  And I select "Generate Sharing Code"
  Then a unique alphanumeric code should be generated
  And I should be able to copy this code to my clipboard
  And I should have options to share via messaging apps
Scenario: E06-F01-S02 - Importing a shared workout program
  Given I am on the "Workout Programs" screen
  When I tap "Import Program"
  And I enter the sharing code "HIIT-436-X29"
  Then I should see details about the "HIIT Madness" program
  When I tap "Import"
  Then the program should be added to my workout programs
  And I should be able to customize it
Scenario: E06-F01-S03 - Finding trending community workouts
  Given I am on the "Workout Programs" screen
  When I tap "Community Programs"
  Then I should see a list of trending workouts shared by the community
  And I should see ratings and review counts for each program
  And I should be able to filter by category and difficulty
  When I select a community program
  Then I should see detailed information before deciding to import it

Acceptance Tests

# Test d'acceptation
Scenario: E06-F01-TA01 - Handling invalid sharing codes
  Given I am on the "Import Program" screen
  When I enter an invalid code "ABC-123"
  Then I should see an error message "Invalid or expired program code"
  And I should be able to try again with a different code

E06-F02: Achievement System

User Story: As a user, I want to earn achievements and badges, so that I can stay motivated during my fitness journey and have visible recognition of my milestones.

Scenarios

Scenario: E06-F02-S01 - Earning a milestone achievement
  Given I have completed 9 workouts in the application
  When I complete my 10th workout
  Then I should receive the "Dedicated Athlete" achievement
  And the achievement should appear in my profile
  And I should receive a notification of this accomplishment
Scenario: E06-F02-S02 - Viewing all available achievements
  Given I am on the main screen
  When I navigate to "Profile"
  And I tap on "Achievements"
  Then I should see all possible achievements in the application
  And I should see which ones I've already earned
  And I should see my progress toward incomplete achievements
Scenario: E06-F02-S03 - Setting achievement goals
  Given I am viewing my achievements
  When I tap on the locked "Iron Champion" achievement
  And I see it requires lifting 10,000 kg total volume
  When I tap "Set as Goal"
  Then this achievement should be highlighted in my profile
  And I should see my progress toward this goal on my dashboard
  And I should receive milestone notifications at 25%, 50%, and 75% completion

Acceptance Tests

# Test d'acceptation
Scenario: E06-F02-TA01 - Sharing achievements on social media
  Given I have just earned the "100 Workouts Completed" achievement
  When I tap on the achievement
  And I select "Share"
  Then I should see options to share on various social platforms
  When I select "Instagram"
  Then a formatted image with my achievement should be prepared
  And the Instagram sharing interface should open

E06-F03: Community Challenges

User Story: As a user, I want to participate in community fitness challenges, so that I can compete with others and stay motivated through friendly competition.

Scenarios

Scenario: E06-F03-S01 - Joining a community challenge
  Given I am on the "Community" screen
  When I tap on "Active Challenges"
  And I select "30-Day Squat Challenge"
  And I tap "Join Challenge"
  Then I should be added to the challenge participant list
  And I should see the challenge details on my dashboard
  And I should receive the first day's workout instructions
Scenario: E06-F03-S02 - Tracking progress in a challenge
  Given I am participating in the "30-Day Squat Challenge"
  When I complete today's challenge workout
  And I record my results
  Then my progress should be updated on the challenge leaderboard
  And I should see my ranking among other participants
  And my completion percentage should increase
Scenario: E06-F03-S03 - Creating a private challenge for friends
  Given I am on the "Community" screen
  When I tap "Create Challenge"
  And I select "Push-up Challenge" as the template
  And I customize the duration to 14 days
  And I select "Invite Only" for participation
  And I invite 5 friends from my contacts
  Then a new private challenge should be created
  And my friends should receive invitations
  And a private leaderboard should be established

Acceptance Tests

# Test d'acceptation
Scenario: E06-F03-TA01 - Handling failed challenge requirements
  Given I am participating in the "5K Progress Challenge"
  And I have missed 3 consecutive days
  When I open the app
  Then I should see a notification about my challenge status
  And I should see options to "Catch Up", "Reset Progress", or "Leave Challenge"
  When I select "Catch Up"
  Then I should see a modified plan to help me get back on track

E06-F04: Training Partnership System

User Story: As a user, I want to connect with training partners in the app, so that we can motivate each other, share progress, and maintain accountability in our fitness journey.

Scenarios

Scenario: E06-F04-S01 - Inviting a training partner
  Given I am on the "Social" screen
  When I tap "Add Training Partner"
  And I search for "johndoe@example.com"
  And I select the user from search results
  And I send a partner request
  Then the request should be sent
  And I should see the status as "Pending"
  And the other user should receive a notification about my request
Scenario: E06-F04-S02 - Sharing workout results with partners
  Given I have completed a "Chest Day" workout
  When I view my workout summary
  And I tap "Share with Partners"
  And I select which performance metrics to share
  And I tap "Send"
  Then my selected training partners should receive a notification
  And they should be able to view my shared workout data
  And they should be able to send encouragement or comments
Scenario: E06-F04-S03 - Setting up accountability goals with partners
  Given I have an accepted training partner named "Jane"
  When I tap on Jane's profile
  And I select "Set Mutual Goal"
  And I choose "Complete 20 workouts this month"
  And I send the goal request
  When Jane accepts the goal
  Then we should both see the mutual goal in our profiles
  And we should both receive progress updates when either of us completes a workout

Acceptance Tests

# Test d'acceptation
Scenario: E06-F04-TA01 - Comparing performance with training partners
  Given I have an active training partner named "Mike"
  And we both perform "Barbell Squat" regularly
  When I tap on "Bench Press" in my exercise library
  And I select "Compare with Partners"
  And I choose "Mike" for comparison
  Then I should see a side-by-side comparison of our progression
  And all personal information should be displayed with Mike's consent
  And neither of us should see each other's body measurements without explicit permission